@kerebron/editor 0.4.27 → 0.4.29

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 (167) hide show
  1. package/esm/CoreEditor.d.ts +40 -0
  2. package/esm/CoreEditor.d.ts.map +1 -0
  3. package/esm/CoreEditor.js +224 -0
  4. package/esm/CoreEditor.js.map +1 -0
  5. package/esm/DummyEditorView.d.ts +60 -0
  6. package/esm/DummyEditorView.d.ts.map +1 -0
  7. package/esm/DummyEditorView.js +243 -0
  8. package/esm/DummyEditorView.js.map +1 -0
  9. package/esm/Extension.d.ts +31 -0
  10. package/esm/Extension.d.ts.map +1 -0
  11. package/esm/Extension.js +35 -0
  12. package/esm/Extension.js.map +1 -0
  13. package/esm/ExtensionManager.d.ts +32 -0
  14. package/esm/ExtensionManager.d.ts.map +1 -0
  15. package/esm/ExtensionManager.js +223 -0
  16. package/esm/ExtensionManager.js.map +1 -0
  17. package/esm/Mark.d.ts +23 -0
  18. package/esm/Mark.d.ts.map +1 -0
  19. package/esm/Mark.js +28 -0
  20. package/esm/Mark.js.map +1 -0
  21. package/esm/Node.d.ts +32 -0
  22. package/esm/Node.d.ts.map +1 -0
  23. package/esm/Node.js +37 -0
  24. package/esm/Node.js.map +1 -0
  25. package/esm/commands/CommandManager.d.ts +24 -0
  26. package/esm/commands/CommandManager.d.ts.map +1 -0
  27. package/esm/commands/CommandManager.js +101 -0
  28. package/esm/commands/CommandManager.js.map +1 -0
  29. package/esm/commands/baseCommandFactories.d.ts +3 -0
  30. package/esm/commands/baseCommandFactories.d.ts.map +1 -0
  31. package/esm/commands/baseCommandFactories.js +862 -0
  32. package/esm/commands/baseCommandFactories.js.map +1 -0
  33. package/esm/commands/createChainableState.d.ts +3 -0
  34. package/esm/commands/createChainableState.d.ts.map +1 -0
  35. package/esm/commands/createChainableState.js +30 -0
  36. package/esm/commands/createChainableState.js.map +1 -0
  37. package/esm/commands/keyCommandFactories.d.ts +3 -0
  38. package/esm/commands/keyCommandFactories.d.ts.map +1 -0
  39. package/esm/commands/keyCommandFactories.js +11 -0
  40. package/esm/commands/keyCommandFactories.js.map +1 -0
  41. package/esm/commands/mod.d.ts +7 -0
  42. package/esm/commands/mod.d.ts.map +1 -0
  43. package/esm/commands/mod.js +82 -0
  44. package/esm/commands/mod.js.map +1 -0
  45. package/esm/commands/replaceCommandFactories.d.ts +3 -0
  46. package/esm/commands/replaceCommandFactories.d.ts.map +1 -0
  47. package/esm/commands/replaceCommandFactories.js +95 -0
  48. package/esm/commands/replaceCommandFactories.js.map +1 -0
  49. package/esm/commands/types.d.ts +22 -0
  50. package/esm/commands/types.d.ts.map +1 -0
  51. package/esm/commands/types.js +2 -0
  52. package/esm/commands/types.js.map +1 -0
  53. package/esm/mod.d.ts +9 -0
  54. package/esm/mod.d.ts.map +1 -0
  55. package/esm/mod.js +9 -0
  56. package/esm/mod.js.map +1 -0
  57. package/esm/nodeToTreeString.d.ts +10 -0
  58. package/esm/nodeToTreeString.d.ts.map +1 -0
  59. package/esm/nodeToTreeString.js +75 -0
  60. package/esm/nodeToTreeString.js.map +1 -0
  61. package/esm/package.json +3 -0
  62. package/esm/plugins/TrackSelecionPlugin.d.ts +6 -0
  63. package/esm/plugins/TrackSelecionPlugin.d.ts.map +1 -0
  64. package/esm/plugins/TrackSelecionPlugin.js +25 -0
  65. package/esm/plugins/TrackSelecionPlugin.js.map +1 -0
  66. package/esm/plugins/input-rules/InputRulesPlugin.d.ts +25 -0
  67. package/esm/plugins/input-rules/InputRulesPlugin.d.ts.map +1 -0
  68. package/esm/plugins/input-rules/InputRulesPlugin.js +169 -0
  69. package/esm/plugins/input-rules/InputRulesPlugin.js.map +1 -0
  70. package/esm/plugins/input-rules/mod.d.ts +3 -0
  71. package/esm/plugins/input-rules/mod.d.ts.map +1 -0
  72. package/esm/plugins/input-rules/mod.js +3 -0
  73. package/esm/plugins/input-rules/mod.js.map +1 -0
  74. package/esm/plugins/input-rules/rulebuilders.d.ts +6 -0
  75. package/esm/plugins/input-rules/rulebuilders.d.ts.map +1 -0
  76. package/esm/plugins/input-rules/rulebuilders.js +65 -0
  77. package/esm/plugins/input-rules/rulebuilders.js.map +1 -0
  78. package/esm/plugins/keymap/keymap.d.ts +12 -0
  79. package/esm/plugins/keymap/keymap.d.ts.map +1 -0
  80. package/esm/plugins/keymap/keymap.js +126 -0
  81. package/esm/plugins/keymap/keymap.js.map +1 -0
  82. package/esm/plugins/keymap/mod.d.ts +2 -0
  83. package/esm/plugins/keymap/mod.d.ts.map +1 -0
  84. package/esm/plugins/keymap/mod.js +2 -0
  85. package/esm/plugins/keymap/mod.js.map +1 -0
  86. package/esm/plugins/keymap/w3c-keyname.d.ts +4 -0
  87. package/esm/plugins/keymap/w3c-keyname.d.ts.map +1 -0
  88. package/esm/plugins/keymap/w3c-keyname.js +125 -0
  89. package/esm/plugins/keymap/w3c-keyname.js.map +1 -0
  90. package/esm/search/mod.d.ts +3 -0
  91. package/esm/search/mod.d.ts.map +1 -0
  92. package/esm/search/mod.js +3 -0
  93. package/esm/search/mod.js.map +1 -0
  94. package/esm/search/query.d.ts +45 -0
  95. package/esm/search/query.d.ts.map +1 -0
  96. package/esm/search/query.js +335 -0
  97. package/esm/search/query.js.map +1 -0
  98. package/esm/search/search.d.ts +32 -0
  99. package/esm/search/search.d.ts.map +1 -0
  100. package/esm/search/search.js +200 -0
  101. package/esm/search/search.js.map +1 -0
  102. package/esm/types.d.ts +59 -0
  103. package/esm/types.d.ts.map +1 -0
  104. package/esm/types.js +2 -0
  105. package/esm/types.js.map +1 -0
  106. package/esm/ui.d.ts +15 -0
  107. package/esm/ui.d.ts.map +1 -0
  108. package/esm/ui.js +17 -0
  109. package/esm/ui.js.map +1 -0
  110. package/esm/utilities/SmartOutput.d.ts +41 -0
  111. package/esm/utilities/SmartOutput.d.ts.map +1 -0
  112. package/esm/utilities/SmartOutput.js +202 -0
  113. package/esm/utilities/SmartOutput.js.map +1 -0
  114. package/esm/utilities/createNodeFromContent.d.ts +9 -0
  115. package/esm/utilities/createNodeFromContent.d.ts.map +1 -0
  116. package/esm/utilities/createNodeFromContent.js +33 -0
  117. package/esm/utilities/createNodeFromContent.js.map +1 -0
  118. package/esm/utilities/getHtmlAttributes.d.ts +9 -0
  119. package/esm/utilities/getHtmlAttributes.d.ts.map +1 -0
  120. package/esm/utilities/getHtmlAttributes.js +48 -0
  121. package/esm/utilities/getHtmlAttributes.js.map +1 -0
  122. package/esm/utilities/getShadowRoot.d.ts +2 -0
  123. package/esm/utilities/getShadowRoot.d.ts.map +1 -0
  124. package/esm/utilities/getShadowRoot.js +17 -0
  125. package/esm/utilities/getShadowRoot.js.map +1 -0
  126. package/esm/utilities/mod.d.ts +6 -0
  127. package/esm/utilities/mod.d.ts.map +1 -0
  128. package/esm/utilities/mod.js +6 -0
  129. package/esm/utilities/mod.js.map +1 -0
  130. package/esm/utilities/toRawTextResult.d.ts +3 -0
  131. package/esm/utilities/toRawTextResult.d.ts.map +1 -0
  132. package/esm/utilities/toRawTextResult.js +22 -0
  133. package/esm/utilities/toRawTextResult.js.map +1 -0
  134. package/package.json +5 -2
  135. package/src/CoreEditor.ts +277 -0
  136. package/src/DummyEditorView.ts +403 -0
  137. package/src/Extension.ts +63 -0
  138. package/src/ExtensionManager.ts +328 -0
  139. package/src/Mark.ts +47 -0
  140. package/src/Node.ts +66 -0
  141. package/src/commands/CommandManager.ts +145 -0
  142. package/src/commands/baseCommandFactories.ts +1103 -0
  143. package/src/commands/createChainableState.ts +36 -0
  144. package/src/commands/keyCommandFactories.ts +26 -0
  145. package/src/commands/mod.ts +104 -0
  146. package/src/commands/replaceCommandFactories.ts +129 -0
  147. package/src/commands/types.ts +30 -0
  148. package/src/mod.ts +8 -0
  149. package/src/nodeToTreeString.ts +100 -0
  150. package/src/plugins/TrackSelecionPlugin.ts +27 -0
  151. package/src/plugins/input-rules/InputRulesPlugin.ts +242 -0
  152. package/src/plugins/input-rules/mod.ts +2 -0
  153. package/src/plugins/input-rules/rulebuilders.ts +88 -0
  154. package/src/plugins/keymap/keymap.ts +117 -0
  155. package/src/plugins/keymap/mod.ts +1 -0
  156. package/src/plugins/keymap/w3c-keyname.ts +123 -0
  157. package/src/search/mod.ts +2 -0
  158. package/src/search/query.ts +412 -0
  159. package/src/search/search.ts +284 -0
  160. package/src/types.ts +71 -0
  161. package/src/ui.ts +35 -0
  162. package/src/utilities/SmartOutput.ts +284 -0
  163. package/src/utilities/createNodeFromContent.ts +66 -0
  164. package/src/utilities/getHtmlAttributes.ts +68 -0
  165. package/src/utilities/getShadowRoot.ts +18 -0
  166. package/src/utilities/mod.ts +5 -0
  167. package/src/utilities/toRawTextResult.ts +27 -0
@@ -0,0 +1,45 @@
1
+ import { EditorState } from 'prosemirror-state';
2
+ import { Slice } from 'prosemirror-model';
3
+ export declare class SearchQuery {
4
+ readonly search: string;
5
+ readonly caseSensitive: boolean;
6
+ readonly literal: boolean;
7
+ readonly regexp: boolean;
8
+ readonly replace: string;
9
+ readonly valid: boolean;
10
+ readonly wholeWord: boolean;
11
+ readonly filter: ((state: EditorState, result: SearchResult) => boolean) | null;
12
+ impl: QueryImpl;
13
+ constructor(config: {
14
+ search: string;
15
+ caseSensitive?: boolean;
16
+ literal?: boolean;
17
+ regexp?: boolean;
18
+ replace?: string;
19
+ wholeWord?: boolean;
20
+ filter?: (state: EditorState, result: SearchResult) => boolean;
21
+ });
22
+ eq(other: SearchQuery): boolean;
23
+ findNext(state: EditorState, from?: number, to?: number): SearchResult | null;
24
+ findPrev(state: EditorState, from?: number, to?: number): SearchResult | null;
25
+ checkResult(state: EditorState, result: SearchResult): boolean;
26
+ unquote(string: string): string;
27
+ getReplacements(state: EditorState, result: SearchResult): {
28
+ from: number;
29
+ to: number;
30
+ insert: Slice;
31
+ }[];
32
+ }
33
+ export interface SearchResult {
34
+ from: number;
35
+ to: number;
36
+ match: RegExpMatchArray | null;
37
+ matchStart: number;
38
+ }
39
+ interface QueryImpl {
40
+ findNext(state: EditorState, from: number, to: number): SearchResult | null;
41
+ findPrev(state: EditorState, from: number, to: number): SearchResult | null;
42
+ }
43
+ export declare function validRegExp(source: string): boolean;
44
+ export {};
45
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/search/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAkB,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1D,qBAAa,WAAW;IAEtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;IAIhC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAG1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAGzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAGzB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAGxB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAE5B,QAAQ,CAAC,MAAM,EACX,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,GACvD,IAAI,CAAC;IAGT,IAAI,EAAE,SAAS,CAAC;gBAGJ,MAAM,EAAE;QAElB,MAAM,EAAE,MAAM,CAAC;QAEf,aAAa,CAAC,EAAE,OAAO,CAAC;QAIxB,OAAO,CAAC,EAAE,OAAO,CAAC;QAElB,MAAM,CAAC,EAAE,OAAO,CAAC;QAEjB,OAAO,CAAC,EAAE,MAAM,CAAC;QAEjB,SAAS,CAAC,EAAE,OAAO,CAAC;QAGpB,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC;KAChE;IAiBD,EAAE,CAAC,KAAK,EAAE,WAAW;IAQrB,QAAQ,CACN,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE,MAAU,EAChB,EAAE,GAAE,MAA+B;IAYrC,QAAQ,CACN,KAAK,EAAE,WAAW,EAClB,IAAI,GAAE,MAA+B,EACrC,EAAE,GAAE,MAAU;IAWhB,WAAW,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY;IAQpD,OAAO,CAAC,MAAM,EAAE,MAAM;IAgBtB,eAAe,CACb,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,YAAY,GACnB;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,KAAK,CAAA;KAAE,EAAE;CAuCjD;AAID,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,SAAS;IACjB,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;IAC5E,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAAC;CAC7E;AA8JD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,WAOzC"}
@@ -0,0 +1,335 @@
1
+ import { Fragment, Slice } from 'prosemirror-model';
2
+ export class SearchQuery {
3
+ /// The search string (or regular expression).
4
+ search;
5
+ /// Indicates whether the search is case-sensitive.
6
+ caseSensitive;
7
+ /// By default, string search will replace `\n`, `\r`, and `\t` in
8
+ /// the query with newline, return, and tab characters. When this
9
+ /// is set to true, that behavior is disabled.
10
+ literal;
11
+ /// When true, the search string is interpreted as a regular
12
+ /// expression.
13
+ regexp;
14
+ /// The replace text, or the empty string if no replace text has
15
+ /// been given.
16
+ replace;
17
+ /// Whether this query is non-empty and, in case of a regular
18
+ /// expression search, syntactically valid.
19
+ valid;
20
+ /// When true, matches that contain words are ignored when there are
21
+ /// further word characters around them.
22
+ wholeWord;
23
+ /// An optional filter that causes some results to be ignored.
24
+ filter;
25
+ /// @internal
26
+ impl;
27
+ /// Create a query object.
28
+ constructor(config) {
29
+ this.search = config.search;
30
+ this.caseSensitive = !!config.caseSensitive;
31
+ this.literal = !!config.literal;
32
+ this.regexp = !!config.regexp;
33
+ this.replace = config.replace || '';
34
+ this.valid = !!this.search && !(this.regexp && !validRegExp(this.search));
35
+ this.wholeWord = !!config.wholeWord;
36
+ this.filter = config.filter || null;
37
+ this.impl = !this.valid
38
+ ? nullQuery
39
+ : this.regexp
40
+ ? new RegExpQuery(this)
41
+ : new StringQuery(this);
42
+ }
43
+ /// Compare this query to another query.
44
+ eq(other) {
45
+ return this.search == other.search && this.replace == other.replace &&
46
+ this.caseSensitive == other.caseSensitive &&
47
+ this.regexp == other.regexp &&
48
+ this.wholeWord == other.wholeWord;
49
+ }
50
+ /// Find the next occurrence of this query in the given range.
51
+ findNext(state, from = 0, to = state.doc.content.size) {
52
+ for (;;) {
53
+ if (from >= to)
54
+ return null;
55
+ let result = this.impl.findNext(state, from, to);
56
+ if (!result || this.checkResult(state, result))
57
+ return result;
58
+ from = result.from + 1;
59
+ }
60
+ }
61
+ /// Find the previous occurrence of this query in the given range.
62
+ /// Note that, if `to` is given, it should be _less_ than `from`.
63
+ findPrev(state, from = state.doc.content.size, to = 0) {
64
+ for (;;) {
65
+ if (from <= to)
66
+ return null;
67
+ let result = this.impl.findPrev(state, from, to);
68
+ if (!result || this.checkResult(state, result))
69
+ return result;
70
+ from = result.to - 1;
71
+ }
72
+ }
73
+ /// @internal
74
+ checkResult(state, result) {
75
+ return (!this.wholeWord ||
76
+ checkWordBoundary(state, result.from) &&
77
+ checkWordBoundary(state, result.to)) &&
78
+ (!this.filter || this.filter(state, result));
79
+ }
80
+ /// @internal
81
+ unquote(string) {
82
+ return this.literal
83
+ ? string
84
+ : string.replace(/\\([nrt\\])/g, (_, ch) => ch == 'n' ? '\n' : ch == 'r' ? '\r' : ch == 't' ? '\t' : '\\');
85
+ }
86
+ /// Get the ranges that should be replaced for this result. This can
87
+ /// return multiple ranges when `this.replace` contains
88
+ /// `$1`/`$&`-style placeholders, in which case the preserved
89
+ /// content is skipped by the replacements.
90
+ ///
91
+ /// Ranges are sorted by position, and `from`/`to` positions all
92
+ /// refer to positions in `state.doc`. When applying these, you'll
93
+ /// want to either apply them from back to front, or map these
94
+ /// positions through your transaction's current mapping.
95
+ getReplacements(state, result) {
96
+ let $from = state.doc.resolve(result.from);
97
+ let marks = $from.marksAcross(state.doc.resolve(result.to));
98
+ let ranges = [];
99
+ let frag = Fragment.empty, pos = result.from, { match } = result;
100
+ let groups = match
101
+ ? getGroupIndices(match)
102
+ : [[0, result.to - result.from]];
103
+ let replParts = parseReplacement(this.unquote(this.replace)), groupSpan;
104
+ for (let part of replParts) {
105
+ if (typeof part == 'string') { // Replacement text
106
+ frag = frag.addToEnd(state.schema.text(part, marks));
107
+ }
108
+ else {
109
+ groupSpan = groups[part.group];
110
+ if (groupSpan) {
111
+ let from = result.matchStart + groupSpan[0], to = result.matchStart + groupSpan[1];
112
+ if (part.copy) { // Copied content
113
+ frag = frag.append(state.doc.slice(from, to).content);
114
+ }
115
+ else { // Skipped content
116
+ if (frag != Fragment.empty || from > pos) {
117
+ ranges.push({
118
+ from: pos,
119
+ to: from,
120
+ insert: new Slice(frag, 0, 0),
121
+ });
122
+ frag = Fragment.empty;
123
+ }
124
+ pos = to;
125
+ }
126
+ }
127
+ }
128
+ }
129
+ if (frag != Fragment.empty || pos < result.to) {
130
+ ranges.push({ from: pos, to: result.to, insert: new Slice(frag, 0, 0) });
131
+ }
132
+ return ranges;
133
+ }
134
+ }
135
+ const nullQuery = new class {
136
+ findNext() {
137
+ return null;
138
+ }
139
+ findPrev() {
140
+ return null;
141
+ }
142
+ }();
143
+ class StringQuery {
144
+ query;
145
+ string;
146
+ constructor(query) {
147
+ this.query = query;
148
+ let string = query.unquote(query.search);
149
+ if (!query.caseSensitive)
150
+ string = string.toLowerCase();
151
+ this.string = string;
152
+ }
153
+ findNext(state, from, to) {
154
+ return scanTextblocks(state.doc, from, to, (node, start) => {
155
+ let off = Math.max(from, start);
156
+ let content = textContent(node).slice(off - start, Math.min(node.content.size, to - start));
157
+ let index = (this.query.caseSensitive ? content : content.toLowerCase())
158
+ .indexOf(this.string);
159
+ return index < 0 ? null : {
160
+ from: off + index,
161
+ to: off + index + this.string.length,
162
+ match: null,
163
+ matchStart: start,
164
+ };
165
+ });
166
+ }
167
+ findPrev(state, from, to) {
168
+ return scanTextblocks(state.doc, from, to, (node, start) => {
169
+ let off = Math.max(start, to);
170
+ let content = textContent(node).slice(off - start, Math.min(node.content.size, from - start));
171
+ if (!this.query.caseSensitive)
172
+ content = content.toLowerCase();
173
+ let index = content.lastIndexOf(this.string);
174
+ return index < 0 ? null : {
175
+ from: off + index,
176
+ to: off + index + this.string.length,
177
+ match: null,
178
+ matchStart: start,
179
+ };
180
+ });
181
+ }
182
+ }
183
+ const baseFlags = 'g' + (/x/.unicode == null ? '' : 'u') +
184
+ (/x/.hasIndices == null ? '' : 'd');
185
+ class RegExpQuery {
186
+ query;
187
+ regexp;
188
+ constructor(query) {
189
+ this.query = query;
190
+ this.regexp = new RegExp(query.search, baseFlags + (query.caseSensitive ? '' : 'i'));
191
+ }
192
+ findNext(state, from, to) {
193
+ return scanTextblocks(state.doc, from, to, (node, start) => {
194
+ let content = textContent(node).slice(0, Math.min(node.content.size, to - start));
195
+ this.regexp.lastIndex = from - start;
196
+ let match = this.regexp.exec(content);
197
+ return match
198
+ ? {
199
+ from: start + match.index,
200
+ to: start + match.index + match[0].length,
201
+ match,
202
+ matchStart: start,
203
+ }
204
+ : null;
205
+ });
206
+ }
207
+ findPrev(state, from, to) {
208
+ return scanTextblocks(state.doc, from, to, (node, start) => {
209
+ let content = textContent(node).slice(0, Math.min(node.content.size, from - start));
210
+ let match;
211
+ for (let off = 0;;) {
212
+ this.regexp.lastIndex = off;
213
+ let next = this.regexp.exec(content);
214
+ if (!next)
215
+ break;
216
+ match = next;
217
+ off = next.index + 1;
218
+ }
219
+ return match
220
+ ? {
221
+ from: start + match.index,
222
+ to: start + match.index + match[0].length,
223
+ match,
224
+ matchStart: start,
225
+ }
226
+ : null;
227
+ });
228
+ }
229
+ }
230
+ function getGroupIndices(match) {
231
+ if (match.indices)
232
+ return match.indices;
233
+ let result = [[0, match[0].length]];
234
+ for (let i = 1, pos = 0; i < match.length; i++) {
235
+ let found = match[i] ? match[0].indexOf(match[i], pos) : -1;
236
+ result.push(found < 0 ? undefined : [found, pos = found + match[i].length]);
237
+ }
238
+ return result;
239
+ }
240
+ function parseReplacement(text) {
241
+ let result = [], highestSeen = -1;
242
+ function add(text) {
243
+ let last = result.length - 1;
244
+ if (last > -1 && typeof result[last] == 'string')
245
+ result[last] += text;
246
+ else
247
+ result.push(text);
248
+ }
249
+ while (text.length) {
250
+ let m = /\$([$&\d+])/.exec(text);
251
+ if (!m) {
252
+ add(text);
253
+ return result;
254
+ }
255
+ if (m.index > 0)
256
+ add(text.slice(0, m.index + (m[1] == '$' ? 1 : 0)));
257
+ if (m[1] != '$') {
258
+ let n = m[1] == '&' ? 0 : +m[1];
259
+ if (highestSeen >= n) {
260
+ result.push({ group: n, copy: true });
261
+ }
262
+ else {
263
+ highestSeen = n || 1000;
264
+ result.push({ group: n, copy: false });
265
+ }
266
+ }
267
+ text = text.slice(m.index + m[0].length);
268
+ }
269
+ return result;
270
+ }
271
+ export function validRegExp(source) {
272
+ try {
273
+ new RegExp(source, baseFlags);
274
+ return true;
275
+ }
276
+ catch {
277
+ return false;
278
+ }
279
+ }
280
+ const TextContentCache = new WeakMap();
281
+ function textContent(node) {
282
+ let cached = TextContentCache.get(node);
283
+ if (cached)
284
+ return cached;
285
+ let content = '';
286
+ for (let i = 0; i < node.childCount; i++) {
287
+ let child = node.child(i);
288
+ if (child.isText)
289
+ content += child.text;
290
+ else if (child.isLeaf)
291
+ content += '\ufffc';
292
+ else
293
+ content += ' ' + textContent(child) + ' ';
294
+ }
295
+ TextContentCache.set(node, content);
296
+ return content;
297
+ }
298
+ function scanTextblocks(node, from, to, f, nodeStart = 0) {
299
+ if (node.inlineContent) {
300
+ return f(node, nodeStart);
301
+ }
302
+ else if (!node.isLeaf) {
303
+ if (from > to) {
304
+ for (let i = node.childCount - 1, pos = nodeStart + node.content.size; i >= 0 && pos > to; i--) {
305
+ let child = node.child(i);
306
+ pos -= child.nodeSize;
307
+ if (pos < from) {
308
+ let result = scanTextblocks(child, from, to, f, pos + 1);
309
+ if (result != null)
310
+ return result;
311
+ }
312
+ }
313
+ }
314
+ else {
315
+ for (let i = 0, pos = nodeStart; i < node.childCount && pos < to; i++) {
316
+ let child = node.child(i), start = pos;
317
+ pos += child.nodeSize;
318
+ if (pos > from) {
319
+ let result = scanTextblocks(child, from, to, f, start + 1);
320
+ if (result != null)
321
+ return result;
322
+ }
323
+ }
324
+ }
325
+ }
326
+ return null;
327
+ }
328
+ function checkWordBoundary(state, pos) {
329
+ let $pos = state.doc.resolve(pos);
330
+ let before = $pos.nodeBefore, after = $pos.nodeAfter;
331
+ if (!before || !after || !before.isText || !after.isText)
332
+ return true;
333
+ return !/\p{L}$/u.test(before.text) || !/^\p{L}/u.test(after.text);
334
+ }
335
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/search/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { EditorState, Plugin, Transaction } from 'prosemirror-state';
2
+ import { DecorationSet } from 'prosemirror-view';
3
+ import { type Command } from '../commands/types.js';
4
+ import { SearchQuery } from './query.js';
5
+ export declare function search(options?: {
6
+ initialQuery?: SearchQuery;
7
+ initialRange?: {
8
+ from: number;
9
+ to: number;
10
+ };
11
+ }): Plugin;
12
+ export declare function getSearchState(state: EditorState): {
13
+ query: SearchQuery;
14
+ range: {
15
+ from: number;
16
+ to: number;
17
+ } | null;
18
+ } | undefined;
19
+ export declare function getMatchHighlights(state: EditorState): DecorationSet;
20
+ export declare function setSearchState(tr: Transaction, query: SearchQuery, range?: {
21
+ from: number;
22
+ to: number;
23
+ } | null): Transaction;
24
+ export declare const findNext: Command;
25
+ export declare const findNextNoWrap: Command;
26
+ export declare const findPrev: Command;
27
+ export declare const findPrevNoWrap: Command;
28
+ export declare const replaceNext: Command;
29
+ export declare const replaceNextNoWrap: Command;
30
+ export declare const replaceCurrent: Command;
31
+ export declare const replaceAll: Command;
32
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/search/search.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,MAAM,EAGN,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAc,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAE7D,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAgB,MAAM,YAAY,CAAC;AAqCvD,wBAAgB,MAAM,CACpB,OAAO,GAAE;IACP,YAAY,CAAC,EAAE,WAAW,CAAC;IAC3B,YAAY,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACxC,GACL,MAAM,CA8CR;AAID,wBAAgB,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG;IAClD,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CAC5C,GAAG,SAAS,CAEZ;AAID,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,WAAW,iBAGpD;AAID,wBAAgB,cAAc,CAC5B,EAAE,EAAE,WAAW,EACf,KAAK,EAAE,WAAW,EAClB,KAAK,GAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAW,eAGlD;AA6DD,eAAO,MAAM,QAAQ,SAAuB,CAAC;AAI7C,eAAO,MAAM,cAAc,SAAwB,CAAC;AAIpD,eAAO,MAAM,QAAQ,SAAwB,CAAC;AAK9C,eAAO,MAAM,cAAc,SAAyB,CAAC;AAkDrD,eAAO,MAAM,WAAW,SAA6B,CAAC;AAItD,eAAO,MAAM,iBAAiB,SAA8B,CAAC;AAI7D,eAAO,MAAM,cAAc,SAA+B,CAAC;AAG3D,eAAO,MAAM,UAAU,EAAE,OAwBxB,CAAC"}
@@ -0,0 +1,200 @@
1
+ import { Plugin, PluginKey, TextSelection, } from 'prosemirror-state';
2
+ import { Decoration, DecorationSet } from 'prosemirror-view';
3
+ import { SearchQuery } from './query.js';
4
+ class SearchState {
5
+ query;
6
+ range;
7
+ deco;
8
+ constructor(query, range, deco) {
9
+ this.query = query;
10
+ this.range = range;
11
+ this.deco = deco;
12
+ }
13
+ }
14
+ function buildMatchDeco(state, query, range) {
15
+ if (!query.valid)
16
+ return DecorationSet.empty;
17
+ let deco = [];
18
+ let sel = state.selection;
19
+ for (let pos = range ? range.from : 0, end = range ? range.to : state.doc.content.size;;) {
20
+ let next = query.findNext(state, pos, end);
21
+ if (!next)
22
+ break;
23
+ let cls = next.from == sel.from && next.to == sel.to
24
+ ? 'kb-active-search-match'
25
+ : 'kb-search-match';
26
+ deco.push(Decoration.inline(next.from, next.to, { class: cls }));
27
+ pos = next.to;
28
+ }
29
+ return DecorationSet.create(state.doc, deco);
30
+ }
31
+ const searchKey = new PluginKey('search');
32
+ /// Returns a plugin that stores a current search query and searched
33
+ /// range, and highlights matches of the query.
34
+ export function search(options = {}) {
35
+ return new Plugin({
36
+ key: searchKey,
37
+ state: {
38
+ init(_config, state) {
39
+ let query = options.initialQuery || new SearchQuery({ search: '' });
40
+ let range = options.initialRange || null;
41
+ return new SearchState(query, range, buildMatchDeco(state, query, range));
42
+ },
43
+ apply(tr, search, _oldState, state) {
44
+ let set = tr.getMeta(searchKey);
45
+ if (set) {
46
+ return new SearchState(set.query, set.range, buildMatchDeco(state, set.query, set.range));
47
+ }
48
+ if (tr.docChanged || tr.selectionSet) {
49
+ let range = search.range;
50
+ if (range) {
51
+ let from = tr.mapping.map(range.from, 1);
52
+ let to = tr.mapping.map(range.to, -1);
53
+ range = from < to ? { from, to } : null;
54
+ }
55
+ search = new SearchState(search.query, range, buildMatchDeco(state, search.query, range));
56
+ }
57
+ return search;
58
+ },
59
+ },
60
+ props: {
61
+ decorations: (state) => searchKey.getState(state).deco,
62
+ },
63
+ });
64
+ }
65
+ /// Get the current active search query and searched range. Will
66
+ /// return `undefined` is the search plugin isn't active.
67
+ export function getSearchState(state) {
68
+ return searchKey.getState(state);
69
+ }
70
+ /// Access the decoration set holding the currently highlighted search
71
+ /// matches in the document.
72
+ export function getMatchHighlights(state) {
73
+ let search = searchKey.getState(state);
74
+ return search ? search.deco : DecorationSet.empty;
75
+ }
76
+ /// Add metadata to a transaction that updates the active search query
77
+ /// and searched range, when dispatched.
78
+ export function setSearchState(tr, query, range = null) {
79
+ return tr.setMeta(searchKey, { query, range });
80
+ }
81
+ function nextMatch(search, state, wrap, curFrom, curTo) {
82
+ let range = search.range || { from: 0, to: state.doc.content.size };
83
+ let next = search.query.findNext(state, Math.max(curTo, range.from), range.to);
84
+ if (!next && wrap) {
85
+ next = search.query.findNext(state, range.from, Math.min(curFrom, range.to));
86
+ }
87
+ return next;
88
+ }
89
+ function prevMatch(search, state, wrap, curFrom, curTo) {
90
+ let range = search.range || { from: 0, to: state.doc.content.size };
91
+ let prev = search.query.findPrev(state, Math.min(curFrom, range.to), range.from);
92
+ if (!prev && wrap) {
93
+ prev = search.query.findPrev(state, range.to, Math.max(curTo, range.from));
94
+ }
95
+ return prev;
96
+ }
97
+ function findCommand(wrap, dir) {
98
+ return (state, dispatch) => {
99
+ let search = searchKey.getState(state);
100
+ if (!search || !search.query.valid)
101
+ return false;
102
+ let { from, to } = state.selection;
103
+ let next = dir > 0
104
+ ? nextMatch(search, state, wrap, from, to)
105
+ : prevMatch(search, state, wrap, from, to);
106
+ if (!next)
107
+ return false;
108
+ let selection = TextSelection.create(state.doc, next.from, next.to);
109
+ if (dispatch)
110
+ dispatch(state.tr.setSelection(selection).scrollIntoView());
111
+ return true;
112
+ };
113
+ }
114
+ /// Find the next instance of the search query after the current
115
+ /// selection and move the selection to it.
116
+ export const findNext = findCommand(true, 1);
117
+ /// Find the next instance of the search query and move the selection
118
+ /// to it. Don't wrap around at the end of document or search range.
119
+ export const findNextNoWrap = findCommand(false, 1);
120
+ /// Find the previous instance of the search query and move the
121
+ /// selection to it.
122
+ export const findPrev = findCommand(true, -1);
123
+ /// Find the previous instance of the search query and move the
124
+ /// selection to it. Don't wrap at the start of the document or search
125
+ /// range.
126
+ export const findPrevNoWrap = findCommand(false, -1);
127
+ function replaceCommand(wrap, moveForward) {
128
+ return (state, dispatch) => {
129
+ let search = searchKey.getState(state);
130
+ if (!search || !search.query.valid)
131
+ return false;
132
+ let { from } = state.selection;
133
+ let next = nextMatch(search, state, wrap, from, from);
134
+ if (!next)
135
+ return false;
136
+ if (!dispatch)
137
+ return true;
138
+ if (state.selection.from == next.from && state.selection.to == next.to) {
139
+ let tr = state.tr, replacements = search.query.getReplacements(state, next);
140
+ for (let i = replacements.length - 1; i >= 0; i--) {
141
+ let { from, to, insert } = replacements[i];
142
+ tr.replace(from, to, insert);
143
+ }
144
+ let after = moveForward &&
145
+ nextMatch(search, state, wrap, next.from, next.to);
146
+ if (after) {
147
+ tr.setSelection(TextSelection.create(tr.doc, tr.mapping.map(after.from, 1), tr.mapping.map(after.to, -1)));
148
+ }
149
+ else {
150
+ tr.setSelection(TextSelection.create(tr.doc, next.from, tr.mapping.map(next.to, 1)));
151
+ }
152
+ dispatch(tr.scrollIntoView());
153
+ }
154
+ else if (!moveForward) {
155
+ return false;
156
+ }
157
+ else {
158
+ dispatch(state.tr.setSelection(TextSelection.create(state.doc, next.from, next.to)).scrollIntoView());
159
+ }
160
+ return true;
161
+ };
162
+ }
163
+ /// Replace the currently selected instance of the search query, and
164
+ /// move to the next one. Or select the next match, if none is already
165
+ /// selected.
166
+ export const replaceNext = replaceCommand(true, true);
167
+ /// Replace the next instance of the search query. Don't wrap around
168
+ /// at the end of the document.
169
+ export const replaceNextNoWrap = replaceCommand(false, true);
170
+ /// Replace the currently selected instance of the search query, if
171
+ /// any, and keep it selected.
172
+ export const replaceCurrent = replaceCommand(false, false);
173
+ /// Replace all instances of the search query.
174
+ export const replaceAll = (state, dispatch) => {
175
+ let search = searchKey.getState(state);
176
+ if (!search)
177
+ return false;
178
+ let matches = [], range = search.range || { from: 0, to: state.doc.content.size };
179
+ for (let pos = range.from;;) {
180
+ let next = search.query.findNext(state, pos, range.to);
181
+ if (!next)
182
+ break;
183
+ matches.push(next);
184
+ pos = next.to;
185
+ }
186
+ if (dispatch) {
187
+ let tr = state.tr;
188
+ for (let i = matches.length - 1; i >= 0; i--) {
189
+ let match = matches[i];
190
+ let replacements = search.query.getReplacements(state, match);
191
+ for (let j = replacements.length - 1; j >= 0; j--) {
192
+ let { from, to, insert } = replacements[j];
193
+ tr.replace(from, to, insert);
194
+ }
195
+ }
196
+ dispatch(tr);
197
+ }
198
+ return true;
199
+ };
200
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/search/search.ts"],"names":[],"mappings":"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"}