quoin-editor 2.0.4 → 2.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/CHANGELOG.md +110 -0
- package/MIGRATION.md +1 -1
- package/README.md +14 -13
- package/dist/ai.cjs +124 -94
- package/dist/ai.d.cts +7 -0
- package/dist/ai.d.ts +7 -0
- package/dist/ai.js +50 -20
- package/dist/ai.js.map +1 -1
- package/dist/catalogue.cjs +28 -26
- package/dist/catalogue.js +19 -17
- package/dist/catalogue.js.map +1 -1
- package/dist/{chunk-JGEDJYIV.cjs → chunk-2FUWXPPC.cjs} +92 -98
- package/dist/{chunk-NHNW5DK3.js → chunk-3F76QQ65.js} +6 -6
- package/dist/{chunk-NHNW5DK3.js.map → chunk-3F76QQ65.js.map} +1 -1
- package/dist/{chunk-DBOZFNWU.js → chunk-3QYFAAQR.js} +3 -3
- package/dist/{chunk-DBOZFNWU.js.map → chunk-3QYFAAQR.js.map} +1 -1
- package/dist/{chunk-I7X7B3WD.cjs → chunk-4JDRDPLC.cjs} +17 -8
- package/dist/{chunk-EBSDPHPS.cjs → chunk-4UFWFV43.cjs} +1060 -719
- package/dist/{chunk-LM3DHROX.cjs → chunk-5AUIA4B3.cjs} +2 -2
- package/dist/{chunk-3INFNIGN.cjs → chunk-5H3BB5VJ.cjs} +131 -78
- package/dist/{chunk-DJU25PFC.cjs → chunk-5L2NSIHZ.cjs} +11 -11
- package/dist/{chunk-W376L2GM.js → chunk-6Y7JAWYY.js} +8 -8
- package/dist/chunk-6Y7JAWYY.js.map +1 -0
- package/dist/{chunk-UDBLZILE.js → chunk-ATKDXQEY.js} +12 -7
- package/dist/{chunk-UDBLZILE.js.map → chunk-ATKDXQEY.js.map} +1 -1
- package/dist/{chunk-A2IQHMIH.js → chunk-BE2SYPK5.js} +49 -54
- package/dist/chunk-BE2SYPK5.js.map +1 -0
- package/dist/{chunk-PURYVDC3.cjs → chunk-CFICD2JP.cjs} +21 -16
- package/dist/{chunk-3HW3WRYC.cjs → chunk-CSIUXYRU.cjs} +2 -2
- package/dist/{chunk-N7BSFDDM.cjs → chunk-DBKL524I.cjs} +23 -23
- package/dist/{chunk-XE3IYW5B.js → chunk-DEFYFIWW.js} +90 -37
- package/dist/chunk-DEFYFIWW.js.map +1 -0
- package/dist/{chunk-7E43TURF.cjs → chunk-ECI3PSMS.cjs} +7 -7
- package/dist/{chunk-4G645EYO.js → chunk-F73QEF7E.js} +5 -5
- package/dist/{chunk-4G645EYO.js.map → chunk-F73QEF7E.js.map} +1 -1
- package/dist/{chunk-KHRVCTQQ.cjs → chunk-FUT7XLMP.cjs} +61 -74
- package/dist/{chunk-7J63427U.cjs → chunk-GQSBOBOM.cjs} +375 -320
- package/dist/{chunk-LU3T3JB4.js → chunk-HPNSQWRD.js} +15 -28
- package/dist/chunk-HPNSQWRD.js.map +1 -0
- package/dist/{chunk-7Y4B7NHO.js → chunk-I34BFOLL.js} +18 -11
- package/dist/chunk-I34BFOLL.js.map +1 -0
- package/dist/{chunk-AJT54OMZ.js → chunk-IFRXEFQH.js} +9 -15
- package/dist/chunk-IFRXEFQH.js.map +1 -0
- package/dist/{chunk-YYW33WUL.cjs → chunk-K3XWVRL4.cjs} +8 -8
- package/dist/{chunk-LSI4RMTY.js → chunk-L5L6YNLT.js} +3 -3
- package/dist/{chunk-LSI4RMTY.js.map → chunk-L5L6YNLT.js.map} +1 -1
- package/dist/{chunk-2BPXVQBP.js → chunk-MO4UMXMT.js} +238 -86
- package/dist/chunk-MO4UMXMT.js.map +1 -0
- package/dist/{chunk-2QKFRKOP.cjs → chunk-N25EH2GZ.cjs} +351 -205
- package/dist/{chunk-CSPCDVCT.js → chunk-NCV2ML25.js} +3 -3
- package/dist/{chunk-CSPCDVCT.js.map → chunk-NCV2ML25.js.map} +1 -1
- package/dist/{chunk-NUQ64S5B.cjs → chunk-OJSKSQTL.cjs} +26 -26
- package/dist/chunk-PIWMU4BV.js +9 -0
- package/dist/chunk-PIWMU4BV.js.map +1 -0
- package/dist/chunk-QFGWSFOI.cjs +10 -0
- package/dist/{chunk-GPTJYWGS.js → chunk-RNBLVGWY.js} +3 -3
- package/dist/{chunk-GPTJYWGS.js.map → chunk-RNBLVGWY.js.map} +1 -1
- package/dist/{chunk-5RBMZGKV.js → chunk-TL2MJOWM.js} +325 -57
- package/dist/chunk-TL2MJOWM.js.map +1 -0
- package/dist/{chunk-YEDPBYO5.cjs → chunk-UDQ52EEC.cjs} +4 -4
- package/dist/{chunk-EIWPJWY3.js → chunk-UE2NQPNG.js} +5 -5
- package/dist/{chunk-EIWPJWY3.js.map → chunk-UE2NQPNG.js.map} +1 -1
- package/dist/{chunk-BE2YHZXA.cjs → chunk-ULV3SCYP.cjs} +26 -15
- package/dist/{chunk-WDBFGX3U.cjs → chunk-VTTMJGWP.cjs} +72 -77
- package/dist/{chunk-556PFYES.js → chunk-WK4UGDZN.js} +290 -235
- package/dist/chunk-WK4UGDZN.js.map +1 -0
- package/dist/{chunk-JZF6UQH5.cjs → chunk-WMKA37NJ.cjs} +12 -12
- package/dist/{chunk-F2ZK6Z52.js → chunk-Y26F2X4E.js} +3 -3
- package/dist/{chunk-F2ZK6Z52.js.map → chunk-Y26F2X4E.js.map} +1 -1
- package/dist/{chunk-FK7EBZPX.cjs → chunk-Z5EEDCRI.cjs} +549 -276
- package/dist/{chunk-G6NBQYMM.js → chunk-ZGFZRVQA.js} +817 -478
- package/dist/chunk-ZGFZRVQA.js.map +1 -0
- package/dist/{chunk-QLVX7MPS.js → chunk-ZQF45LA4.js} +19 -8
- package/dist/chunk-ZQF45LA4.js.map +1 -0
- package/dist/comments.cjs +127 -65
- package/dist/comments.d.cts +35 -2
- package/dist/comments.d.ts +35 -2
- package/dist/comments.js +73 -12
- package/dist/comments.js.map +1 -1
- package/dist/{diagram-extension-22x_njXB.d.ts → diagram-extension-BMlh8GCw.d.ts} +1 -1
- package/dist/{diagram-extension-C_FSkoj9.d.cts → diagram-extension-gmndUpti.d.cts} +1 -1
- package/dist/diagram.cjs +10 -9
- package/dist/diagram.d.cts +2 -2
- package/dist/diagram.d.ts +2 -2
- package/dist/diagram.js +7 -6
- package/dist/diff.cjs +25 -25
- package/dist/diff.js +3 -3
- package/dist/docx.cjs +31 -30
- package/dist/docx.js +5 -4
- package/dist/docx.js.map +1 -1
- package/dist/embed.cjs +10 -9
- package/dist/embed.js +8 -7
- package/dist/{emoji-extension-Dk5IQLZf.d.cts → emoji-extension-DD9CQTQj.d.cts} +1 -1
- package/dist/{emoji-extension-C832oGeT.d.ts → emoji-extension-U_PWZ2fX.d.ts} +1 -1
- package/dist/emoji.cjs +10 -9
- package/dist/emoji.d.cts +2 -2
- package/dist/emoji.d.ts +2 -2
- package/dist/emoji.js +7 -6
- package/dist/engine.cjs +58 -58
- package/dist/engine.d.cts +3 -3
- package/dist/engine.d.ts +3 -3
- package/dist/engine.js +3 -3
- package/dist/{find-extension-DmK9_N81.d.ts → find-extension-BGlqooZi.d.ts} +1 -1
- package/dist/{find-extension-BfruAPLi.d.cts → find-extension-BPnAJ8bY.d.cts} +1 -1
- package/dist/find.cjs +11 -10
- package/dist/find.d.cts +1 -1
- package/dist/find.d.ts +1 -1
- package/dist/find.js +7 -6
- package/dist/headless.cjs +70 -69
- package/dist/headless.d.cts +33 -10
- package/dist/headless.d.ts +33 -10
- package/dist/headless.js +5 -4
- package/dist/highlight.cjs +7 -6
- package/dist/highlight.js +6 -5
- package/dist/highlight.js.map +1 -1
- package/dist/{index-3fYvwqUZ.d.cts → index-DN7vRKFw.d.cts} +1 -1
- package/dist/{index-CgxnzCO5.d.ts → index-DyIYI3PM.d.ts} +1 -1
- package/dist/index.cjs +82 -81
- package/dist/index.d.cts +19 -12
- package/dist/index.d.ts +19 -12
- package/dist/index.js +6 -5
- package/dist/{labels-CiCxj2jP.d.cts → labels-BJORhN93.d.ts} +10 -5
- package/dist/{labels-BhRJYo46.d.ts → labels-CVYJ2-1X.d.cts} +10 -5
- package/dist/locale-ar.cjs +10 -0
- package/dist/locale-ar.d.cts +1 -1
- package/dist/locale-ar.d.ts +1 -1
- package/dist/locale-ar.js +10 -0
- package/dist/locale-ar.js.map +1 -1
- package/dist/locale-de.cjs +4 -0
- package/dist/locale-de.d.cts +1 -1
- package/dist/locale-de.d.ts +1 -1
- package/dist/locale-de.js +4 -0
- package/dist/locale-de.js.map +1 -1
- package/dist/locale-es.cjs +4 -0
- package/dist/locale-es.d.cts +1 -1
- package/dist/locale-es.d.ts +1 -1
- package/dist/locale-es.js +4 -0
- package/dist/locale-es.js.map +1 -1
- package/dist/locale-fr.cjs +4 -0
- package/dist/locale-fr.d.cts +1 -1
- package/dist/locale-fr.d.ts +1 -1
- package/dist/locale-fr.js +4 -0
- package/dist/locale-fr.js.map +1 -1
- package/dist/locale-ja.cjs +4 -0
- package/dist/locale-ja.d.cts +1 -1
- package/dist/locale-ja.d.ts +1 -1
- package/dist/locale-ja.js +4 -0
- package/dist/locale-ja.js.map +1 -1
- package/dist/locale-pt.cjs +4 -0
- package/dist/locale-pt.d.cts +1 -1
- package/dist/locale-pt.d.ts +1 -1
- package/dist/locale-pt.js +4 -0
- package/dist/locale-pt.js.map +1 -1
- package/dist/locale-zh.cjs +4 -0
- package/dist/locale-zh.d.cts +1 -1
- package/dist/locale-zh.d.ts +1 -1
- package/dist/locale-zh.js +4 -0
- package/dist/locale-zh.js.map +1 -1
- package/dist/math.cjs +11 -10
- package/dist/math.js +9 -8
- package/dist/mention.cjs +11 -10
- package/dist/mention.js +9 -8
- package/dist/{node-reveal-DY6bimv3.d.cts → node-reveal-Be7Xa0BL.d.cts} +1 -1
- package/dist/{node-reveal-BnFcnHhz.d.ts → node-reveal-CftIEqF_.d.ts} +1 -1
- package/dist/palette-DuIFHYHc.d.cts +10 -0
- package/dist/palette-DuIFHYHc.d.ts +10 -0
- package/dist/presence.cjs +39 -38
- package/dist/presence.js +8 -7
- package/dist/presence.js.map +1 -1
- package/dist/source.cjs +10 -9
- package/dist/source.d.cts +1 -1
- package/dist/source.d.ts +1 -1
- package/dist/source.js +6 -5
- package/dist/source.js.map +1 -1
- package/dist/{stats-extension-Dmw0Ujxe.d.ts → stats-extension-Bbpr593p.d.ts} +1 -1
- package/dist/{stats-extension-D5HySF0a.d.cts → stats-extension-D7FaeydW.d.cts} +1 -1
- package/dist/stats.cjs +12 -10
- package/dist/stats.d.cts +2 -2
- package/dist/stats.d.ts +2 -2
- package/dist/stats.js +9 -7
- package/dist/styles.css +1 -1
- package/dist/{table-extension-7LkLNK6Q.d.cts → table-extension-DNijjmxV.d.cts} +1 -1
- package/dist/{table-extension-DEpV0DnP.d.ts → table-extension-Dp6FYGPh.d.ts} +1 -1
- package/dist/table.cjs +26 -25
- package/dist/table.d.cts +4 -3
- package/dist/table.d.ts +4 -3
- package/dist/table.js +7 -6
- package/dist/{toc-extension-Dvh37bWQ.d.cts → toc-extension-BGEVAmSY.d.cts} +1 -1
- package/dist/{toc-extension-SVckrFmb.d.ts → toc-extension-DZIe40eV.d.ts} +1 -1
- package/dist/toc.cjs +10 -9
- package/dist/toc.d.cts +2 -2
- package/dist/toc.d.ts +2 -2
- package/dist/toc.js +7 -6
- package/dist/{types-DMuuDBVh.d.ts → types-Byu2a9qk.d.ts} +6 -1
- package/dist/{types-Bzhq5AXj.d.cts → types-DdDlCyyZ.d.cts} +6 -1
- package/dist/view.cjs +4 -4
- package/dist/view.js +2 -2
- package/dist/yjs.cjs +121 -121
- package/dist/yjs.d.cts +2 -2
- package/dist/yjs.d.ts +2 -2
- package/dist/yjs.js +5 -5
- package/package.json +4 -3
- package/dist/chunk-2BPXVQBP.js.map +0 -1
- package/dist/chunk-556PFYES.js.map +0 -1
- package/dist/chunk-5RBMZGKV.js.map +0 -1
- package/dist/chunk-7Y4B7NHO.js.map +0 -1
- package/dist/chunk-A2IQHMIH.js.map +0 -1
- package/dist/chunk-AJT54OMZ.js.map +0 -1
- package/dist/chunk-G6NBQYMM.js.map +0 -1
- package/dist/chunk-LU3T3JB4.js.map +0 -1
- package/dist/chunk-QLVX7MPS.js.map +0 -1
- package/dist/chunk-W376L2GM.js.map +0 -1
- package/dist/chunk-XE3IYW5B.js.map +0 -1
- package/dist/palette-BrX-hEd-.d.cts +0 -4
- package/dist/palette-BrX-hEd-.d.ts +0 -4
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk4JDRDPLC_cjs = require('./chunk-4JDRDPLC.cjs');
|
|
4
4
|
|
|
5
5
|
// src/extensions/web-address.ts
|
|
6
6
|
var WEB = /^https?:\/\/[^/?#\s]/i;
|
|
7
7
|
function webAddress(value) {
|
|
8
|
-
const href = typeof value === "string" ?
|
|
8
|
+
const href = typeof value === "string" ? chunk4JDRDPLC_cjs.sanitizeHref(value) : null;
|
|
9
9
|
return href !== null && WEB.test(href) ? href : null;
|
|
10
10
|
}
|
|
11
11
|
function domainOf(value) {
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
4
|
-
var
|
|
3
|
+
var chunk4UFWFV43_cjs = require('./chunk-4UFWFV43.cjs');
|
|
4
|
+
var chunkN25EH2GZ_cjs = require('./chunk-N25EH2GZ.cjs');
|
|
5
5
|
var chunkZWTIRGY5_cjs = require('./chunk-ZWTIRGY5.cjs');
|
|
6
|
-
var
|
|
7
|
-
var
|
|
6
|
+
var chunkZ5EEDCRI_cjs = require('./chunk-Z5EEDCRI.cjs');
|
|
7
|
+
var chunk4JDRDPLC_cjs = require('./chunk-4JDRDPLC.cjs');
|
|
8
8
|
var react = require('react');
|
|
9
9
|
var reactDom = require('react-dom');
|
|
10
|
+
var reactDirection = require('@radix-ui/react-direction');
|
|
10
11
|
var jsxRuntime = require('react/jsx-runtime');
|
|
11
12
|
|
|
12
13
|
// src/engine/find/find-pattern.ts
|
|
@@ -23,6 +24,35 @@ function findPattern({ query, caseSensitive, wholeWord, regex }) {
|
|
|
23
24
|
}
|
|
24
25
|
}
|
|
25
26
|
|
|
27
|
+
// src/engine/find/run-pattern.ts
|
|
28
|
+
var NEVER = "(?!)";
|
|
29
|
+
function anchored(source, start, end) {
|
|
30
|
+
let out = "";
|
|
31
|
+
let inClass = false;
|
|
32
|
+
for (let i = 0; i < source.length; i++) {
|
|
33
|
+
const char = source[i];
|
|
34
|
+
if (char === "\\") {
|
|
35
|
+
out += source.slice(i, i + 2);
|
|
36
|
+
i++;
|
|
37
|
+
} else if (inClass) {
|
|
38
|
+
inClass = char !== "]";
|
|
39
|
+
out += char;
|
|
40
|
+
} else {
|
|
41
|
+
inClass = char === "[";
|
|
42
|
+
out += char === "^" && !start || char === "$" && !end ? NEVER : char;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
return out;
|
|
46
|
+
}
|
|
47
|
+
function runPattern(pattern) {
|
|
48
|
+
const variants = {};
|
|
49
|
+
return ({ start, text: text2 }, regionLength) => {
|
|
50
|
+
const atStart = start === 0;
|
|
51
|
+
const atEnd = start + text2.length === regionLength;
|
|
52
|
+
return variants[`${atStart} ${atEnd}`] ??= new RegExp(anchored(pattern.source, atStart, atEnd), pattern.flags);
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
26
56
|
// src/engine/find/text-runs.ts
|
|
27
57
|
function textRuns(inline) {
|
|
28
58
|
const runs = [];
|
|
@@ -48,10 +78,13 @@ function runHolding(inline, from, to) {
|
|
|
48
78
|
}
|
|
49
79
|
|
|
50
80
|
// src/engine/find/find-matches.ts
|
|
51
|
-
function regionMatches(
|
|
81
|
+
function regionMatches(patternOf, block, region) {
|
|
52
82
|
const matches = [];
|
|
53
|
-
|
|
54
|
-
|
|
83
|
+
const inline = block.regions[region];
|
|
84
|
+
const length = chunk4JDRDPLC_cjs.inlineLength(inline);
|
|
85
|
+
for (const run of textRuns(inline)) {
|
|
86
|
+
const { start, text: text2 } = run;
|
|
87
|
+
for (const found of text2.matchAll(patternOf(run, length))) {
|
|
55
88
|
if (found[0] === "") continue;
|
|
56
89
|
const from = start + found.index;
|
|
57
90
|
matches.push({ block: block.id, region, from, to: from + found[0].length });
|
|
@@ -63,12 +96,13 @@ function blockMatcher(query, options) {
|
|
|
63
96
|
if (query === "") return () => [];
|
|
64
97
|
const pattern = findPattern({ ...options, query });
|
|
65
98
|
if (!(pattern instanceof RegExp)) return pattern;
|
|
99
|
+
const patternOf = runPattern(pattern);
|
|
66
100
|
const found = /* @__PURE__ */ new WeakMap();
|
|
67
101
|
return (block) => {
|
|
68
102
|
let matches = found.get(block);
|
|
69
103
|
if (matches === void 0) {
|
|
70
|
-
const regions = Object.keys(block.regions).sort(
|
|
71
|
-
matches = regions.flatMap((region) => regionMatches(
|
|
104
|
+
const regions = Object.keys(block.regions).sort(chunk4JDRDPLC_cjs.compareRegionNames);
|
|
105
|
+
matches = regions.flatMap((region) => regionMatches(patternOf, block, region));
|
|
72
106
|
found.set(block, matches);
|
|
73
107
|
}
|
|
74
108
|
return matches;
|
|
@@ -81,7 +115,6 @@ function findMatches(doc, query, options) {
|
|
|
81
115
|
}
|
|
82
116
|
|
|
83
117
|
// src/extensions/find/find-state.ts
|
|
84
|
-
var MATCH_CAP = 1e3;
|
|
85
118
|
var CLOSED = {
|
|
86
119
|
open: false,
|
|
87
120
|
opened: 0,
|
|
@@ -89,39 +122,42 @@ var CLOSED = {
|
|
|
89
122
|
matcher: null,
|
|
90
123
|
error: null,
|
|
91
124
|
matches: [],
|
|
92
|
-
capped: false,
|
|
93
125
|
current: -1,
|
|
94
126
|
origin: null
|
|
95
127
|
};
|
|
96
128
|
var startOfMatch = ({ block, region, from }) => ({ block, region, offset: from });
|
|
97
129
|
function originOf({ doc, selection }) {
|
|
98
|
-
const range =
|
|
130
|
+
const range = chunkZ5EEDCRI_cjs.selectionRange(doc, selection);
|
|
99
131
|
if (range !== null) return range.from;
|
|
100
|
-
const [block] =
|
|
132
|
+
const [block] = chunkZ5EEDCRI_cjs.selectedBlockIds(doc, selection);
|
|
101
133
|
return block === void 0 ? null : { block, region: "", offset: 0 };
|
|
102
134
|
}
|
|
103
135
|
function nearestMatch(state, matches, at) {
|
|
104
136
|
if (matches.length === 0) return -1;
|
|
105
|
-
if (at === null ||
|
|
106
|
-
|
|
107
|
-
|
|
137
|
+
if (at === null || chunk4JDRDPLC_cjs.indexOfBlock(state.doc, at.block) < 0) return 0;
|
|
138
|
+
let low = 0;
|
|
139
|
+
let high = matches.length;
|
|
140
|
+
while (low < high) {
|
|
141
|
+
const middle = low + high >> 1;
|
|
142
|
+
if (chunkZ5EEDCRI_cjs.comparePos(state.doc, startOfMatch(matches[middle]), at) < 0) low = middle + 1;
|
|
143
|
+
else high = middle;
|
|
144
|
+
}
|
|
145
|
+
return low === matches.length ? 0 : low;
|
|
108
146
|
}
|
|
109
147
|
function searched(value, state, at) {
|
|
110
148
|
const matcher = value.matcher ?? blockMatcher(value.search.query, value.search);
|
|
111
149
|
if (typeof matcher !== "function") {
|
|
112
|
-
return { ...value, matcher: null, error: matcher.error, matches: [],
|
|
150
|
+
return { ...value, matcher: null, error: matcher.error, matches: [], current: -1 };
|
|
113
151
|
}
|
|
114
|
-
const
|
|
115
|
-
|
|
116
|
-
const current = nearestMatch(state, matches, at);
|
|
117
|
-
return { ...value, matcher, error: null, matches, capped: all.length > MATCH_CAP, current };
|
|
152
|
+
const matches = state.doc.blocks.flatMap((block) => matcher(block));
|
|
153
|
+
return { ...value, matcher, error: null, matches, current: nearestMatch(state, matches, at) };
|
|
118
154
|
}
|
|
119
155
|
function currentMatch(value) {
|
|
120
156
|
return value.matches[value.current] ?? null;
|
|
121
157
|
}
|
|
122
158
|
|
|
123
159
|
// src/extensions/find/find-plugin.ts
|
|
124
|
-
var findKey =
|
|
160
|
+
var findKey = chunkZ5EEDCRI_cjs.createPluginKey("find");
|
|
125
161
|
var FIND = "find";
|
|
126
162
|
var wrap = (index, length) => (index + length) % length;
|
|
127
163
|
function remapped(tr, value, state) {
|
|
@@ -159,23 +195,30 @@ var findPlugin = {
|
|
|
159
195
|
// src/extensions/find/find-decorations.ts
|
|
160
196
|
var MATCH_CLASS = "quoin-find-match";
|
|
161
197
|
var CURRENT_CLASS = "quoin-find-current";
|
|
198
|
+
var DRAWN_MATCHES = 1e3;
|
|
162
199
|
var MATCH = { class: MATCH_CLASS };
|
|
163
200
|
var CURRENT = { class: `${MATCH_CLASS} ${CURRENT_CLASS}` };
|
|
164
201
|
var NONE = [];
|
|
165
202
|
var drawn = /* @__PURE__ */ new WeakMap();
|
|
203
|
+
function firstDrawn({ matches, current }) {
|
|
204
|
+
return Math.max(0, Math.min(current - DRAWN_MATCHES / 2, matches.length - DRAWN_MATCHES));
|
|
205
|
+
}
|
|
166
206
|
function findDecorations(state) {
|
|
167
|
-
const value =
|
|
207
|
+
const value = chunkZ5EEDCRI_cjs.getPluginState(state, findKey);
|
|
168
208
|
if (!value.open || value.matches.length === 0) return NONE;
|
|
169
209
|
let decorations = drawn.get(value);
|
|
170
210
|
if (decorations === void 0) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
block,
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
211
|
+
const first = firstDrawn(value);
|
|
212
|
+
decorations = value.matches.slice(first, first + DRAWN_MATCHES).map(
|
|
213
|
+
({ block, region, from, to }, index) => ({
|
|
214
|
+
kind: "inline",
|
|
215
|
+
block,
|
|
216
|
+
region,
|
|
217
|
+
from,
|
|
218
|
+
to,
|
|
219
|
+
attrs: first + index === value.current ? CURRENT : MATCH
|
|
220
|
+
})
|
|
221
|
+
);
|
|
179
222
|
drawn.set(value, decorations);
|
|
180
223
|
}
|
|
181
224
|
return decorations;
|
|
@@ -207,40 +250,42 @@ function expand(run, sticky, from, to, replacement) {
|
|
|
207
250
|
const replaced = run.text.replace(sticky, replacement);
|
|
208
251
|
return replaced.slice(from, replaced.length - (run.text.length - to));
|
|
209
252
|
}
|
|
210
|
-
function replacementFor(doc,
|
|
211
|
-
const inline =
|
|
253
|
+
function replacementFor(doc, patternOf, search, match, replacement) {
|
|
254
|
+
const inline = chunk4JDRDPLC_cjs.blockById(doc, match.block)?.regions[match.region];
|
|
212
255
|
const run = inline && runHolding(inline, match.from, match.to);
|
|
213
256
|
if (inline === void 0 || run === void 0) return null;
|
|
214
257
|
const from = match.from - run.start;
|
|
215
258
|
const to = match.to - run.start;
|
|
259
|
+
const pattern = patternOf(run, chunk4JDRDPLC_cjs.inlineLength(inline));
|
|
216
260
|
const sticky = new RegExp(pattern.source, pattern.flags.replace("g", "y"));
|
|
217
261
|
sticky.lastIndex = from;
|
|
218
262
|
const found = sticky.exec(run.text);
|
|
219
263
|
if (found === null || sticky.lastIndex !== to) return null;
|
|
220
264
|
const replaced = search.regex ? expand(run, sticky, from, to, replacement) : replacement;
|
|
221
265
|
if (replaced === found[0]) return null;
|
|
222
|
-
const marks =
|
|
223
|
-
return { match, slice: replaced === "" ? [] : [
|
|
266
|
+
const marks = chunk4JDRDPLC_cjs.sliceInline(inline, match.from, match.from + 1)[0]?.marks ?? [];
|
|
267
|
+
return { match, slice: replaced === "" ? [] : [chunk4JDRDPLC_cjs.text(replaced, marks)] };
|
|
224
268
|
}
|
|
225
269
|
var startOf = ({ block, region, from }) => ({ block, region, offset: from });
|
|
226
270
|
var endOf = ({ block, region, to }) => ({ block, region, offset: to });
|
|
227
271
|
function lastFirst(doc, replacements) {
|
|
228
|
-
const sorted = [...replacements].sort((a, b) =>
|
|
229
|
-
return sorted.filter((item, i) => i === 0 ||
|
|
272
|
+
const sorted = [...replacements].sort((a, b) => chunkZ5EEDCRI_cjs.comparePos(doc, startOf(b.match), startOf(a.match)));
|
|
273
|
+
return sorted.filter((item, i) => i === 0 || chunkZ5EEDCRI_cjs.comparePos(doc, endOf(item.match), startOf(sorted[i - 1].match)) <= 0);
|
|
230
274
|
}
|
|
231
275
|
function replaceMatches(search, matches, replacement) {
|
|
232
276
|
return (state, dispatch) => {
|
|
233
277
|
const pattern = findPattern(search);
|
|
234
278
|
if (!(pattern instanceof RegExp) || search.query === "") return false;
|
|
279
|
+
const patternOf = runPattern(pattern);
|
|
235
280
|
const replacements = lastFirst(
|
|
236
281
|
state.doc,
|
|
237
|
-
matches.map((match) => replacementFor(state.doc,
|
|
282
|
+
matches.map((match) => replacementFor(state.doc, patternOf, search, match, replacement)).filter((found) => found !== null)
|
|
238
283
|
);
|
|
239
284
|
if (replacements.length === 0) return false;
|
|
240
285
|
if (dispatch) {
|
|
241
|
-
const tr = new
|
|
286
|
+
const tr = new chunkZ5EEDCRI_cjs.Transaction(state);
|
|
242
287
|
for (const { match, slice } of replacements) {
|
|
243
|
-
tr.step(
|
|
288
|
+
tr.step(chunkZ5EEDCRI_cjs.replaceInlineStep(match.block, match.region, match.from, match.to, slice));
|
|
244
289
|
}
|
|
245
290
|
dispatch(tr);
|
|
246
291
|
}
|
|
@@ -249,13 +294,13 @@ function replaceMatches(search, matches, replacement) {
|
|
|
249
294
|
}
|
|
250
295
|
|
|
251
296
|
// src/extensions/find/find-commands.ts
|
|
252
|
-
var act = (state, action) => new
|
|
297
|
+
var act = (state, action) => new chunkZ5EEDCRI_cjs.Transaction(state).setMeta(FIND, action);
|
|
253
298
|
function selectedText({ doc, selection }) {
|
|
254
299
|
if (selection?.kind !== "text") return void 0;
|
|
255
300
|
const { anchor, head } = selection;
|
|
256
301
|
if (anchor.block !== head.block || anchor.region !== head.region || anchor.offset === head.offset) return void 0;
|
|
257
|
-
const inline =
|
|
258
|
-
const slice = inline &&
|
|
302
|
+
const inline = chunk4JDRDPLC_cjs.blockById(doc, anchor.block)?.regions[anchor.region];
|
|
303
|
+
const slice = inline && chunk4JDRDPLC_cjs.sliceInline(inline, Math.min(anchor.offset, head.offset), Math.max(anchor.offset, head.offset));
|
|
259
304
|
if (slice === void 0 || slice.some((node) => node.kind === "atom")) return void 0;
|
|
260
305
|
return slice.map((node) => node.kind === "text" ? node.text : "").join("");
|
|
261
306
|
}
|
|
@@ -274,7 +319,7 @@ function stepFind(state, by) {
|
|
|
274
319
|
}
|
|
275
320
|
function replaceCurrent(replacement) {
|
|
276
321
|
return (state, dispatch) => {
|
|
277
|
-
const value =
|
|
322
|
+
const value = chunkZ5EEDCRI_cjs.getPluginState(state, findKey);
|
|
278
323
|
const match = currentMatch(value);
|
|
279
324
|
if (!value.open || match === null) return false;
|
|
280
325
|
const replaced = dispatch && ((tr) => dispatch(tr.setMeta(FIND, { type: "replaced" })));
|
|
@@ -283,7 +328,7 @@ function replaceCurrent(replacement) {
|
|
|
283
328
|
}
|
|
284
329
|
function replaceAll(replacement) {
|
|
285
330
|
return (state, dispatch) => {
|
|
286
|
-
const { open, search } =
|
|
331
|
+
const { open, search } = chunkZ5EEDCRI_cjs.getPluginState(state, findKey);
|
|
287
332
|
const result = findMatches(state.doc, search.query, search);
|
|
288
333
|
if (!open || "error" in result) return false;
|
|
289
334
|
return replaceMatches(search, result.matches, replacement)(state, dispatch);
|
|
@@ -294,7 +339,7 @@ function replaceAll(replacement) {
|
|
|
294
339
|
function findActions(controller) {
|
|
295
340
|
const { editor } = controller;
|
|
296
341
|
const write = (tr) => editor.dispatch(tr);
|
|
297
|
-
const current = () =>
|
|
342
|
+
const current = () => chunkZ5EEDCRI_cjs.getPluginState(editor.state, findKey);
|
|
298
343
|
return {
|
|
299
344
|
search: (query) => write(setSearch(editor.state, { ...current().search, query })),
|
|
300
345
|
toggle(option) {
|
|
@@ -311,7 +356,7 @@ function findActions(controller) {
|
|
|
311
356
|
const tr = closeFind(editor.state);
|
|
312
357
|
if (match !== null) {
|
|
313
358
|
const { block, region, from, to } = match;
|
|
314
|
-
tr.setSelection(
|
|
359
|
+
tr.setSelection(chunkZ5EEDCRI_cjs.textSelection({ block, region, offset: from }, { block, region, offset: to }));
|
|
315
360
|
}
|
|
316
361
|
controller.dispatch(tr);
|
|
317
362
|
controller.focus();
|
|
@@ -323,9 +368,9 @@ function statusText(labels, value) {
|
|
|
323
368
|
if (value.error !== null) return labels.invalidPattern;
|
|
324
369
|
if (value.search.query === "") return "";
|
|
325
370
|
if (value.matches.length === 0) return labels.noResults;
|
|
326
|
-
return labels.matchCount(value.current + 1, value.matches.length,
|
|
371
|
+
return labels.matchCount(value.current + 1, value.matches.length, false);
|
|
327
372
|
}
|
|
328
|
-
function FindStatus({ labels, value }) {
|
|
373
|
+
function FindStatus({ id, labels, value }) {
|
|
329
374
|
const text2 = statusText(labels, value);
|
|
330
375
|
const [announced, setAnnounced] = react.useState("");
|
|
331
376
|
react.useEffect(() => {
|
|
@@ -333,20 +378,20 @@ function FindStatus({ labels, value }) {
|
|
|
333
378
|
return () => clearTimeout(timer);
|
|
334
379
|
}, [text2]);
|
|
335
380
|
return /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
336
|
-
/* @__PURE__ */ jsxRuntime.jsx("span", { "data-quoin-find-status": "", className: "text-muted-foreground min-w-16 text-xs whitespace-nowrap tabular-nums", children: text2 }),
|
|
381
|
+
/* @__PURE__ */ jsxRuntime.jsx("span", { id, "data-quoin-find-status": "", className: "text-muted-foreground min-w-16 text-xs whitespace-nowrap tabular-nums", children: text2 }),
|
|
337
382
|
/* @__PURE__ */ jsxRuntime.jsx("span", { "data-quoin-find-announcer": "", "aria-live": "polite", className: "quoin-visually-hidden", children: announced })
|
|
338
383
|
] });
|
|
339
384
|
}
|
|
340
385
|
var TOGGLES = [
|
|
341
|
-
{ option: "caseSensitive", label: "matchCase", icon:
|
|
342
|
-
{ option: "wholeWord", label: "wholeWord", icon:
|
|
343
|
-
{ option: "regex", label: "regularExpression", icon:
|
|
386
|
+
{ option: "caseSensitive", label: "matchCase", icon: chunk4UFWFV43_cjs.CaseSensitive },
|
|
387
|
+
{ option: "wholeWord", label: "wholeWord", icon: chunk4UFWFV43_cjs.WholeWord },
|
|
388
|
+
{ option: "regex", label: "regularExpression", icon: chunk4UFWFV43_cjs.Regex }
|
|
344
389
|
];
|
|
345
390
|
function FindToggles({ labels, options, onToggle }) {
|
|
346
391
|
return TOGGLES.map(({ option, label, icon: Icon }) => {
|
|
347
392
|
const name = labels[label];
|
|
348
393
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
349
|
-
|
|
394
|
+
chunk4UFWFV43_cjs.Button,
|
|
350
395
|
{
|
|
351
396
|
type: "button",
|
|
352
397
|
variant: "ghost",
|
|
@@ -362,13 +407,13 @@ function FindToggles({ labels, options, onToggle }) {
|
|
|
362
407
|
);
|
|
363
408
|
});
|
|
364
409
|
}
|
|
365
|
-
var isFindShortcut = (event, isMac) =>
|
|
410
|
+
var isFindShortcut = (event, isMac) => chunkZ5EEDCRI_cjs.keyName(event, isMac) === chunkZ5EEDCRI_cjs.normalizeKey("Mod-Shift-f", isMac);
|
|
366
411
|
function useFindShortcut(controller) {
|
|
367
412
|
react.useEffect(() => {
|
|
368
413
|
const root = controller.root;
|
|
369
414
|
if (root === null) return;
|
|
370
415
|
const onKeyDown = (event) => {
|
|
371
|
-
if (
|
|
416
|
+
if (chunkN25EH2GZ_cjs.isComposingKey(controller, event) || !isFindShortcut(event, controller.isMac)) return;
|
|
372
417
|
event.preventDefault();
|
|
373
418
|
const { editor } = controller;
|
|
374
419
|
openFind(editor.state, (tr) => editor.dispatch(tr));
|
|
@@ -377,15 +422,19 @@ function useFindShortcut(controller) {
|
|
|
377
422
|
return () => root.removeEventListener("keydown", onKeyDown);
|
|
378
423
|
}, [controller]);
|
|
379
424
|
}
|
|
425
|
+
var CLEARANCE = "--quoin-find-clearance";
|
|
380
426
|
function useScrollToCurrent(controller, panel, match) {
|
|
381
427
|
const key = match && `${match.block}
|
|
382
428
|
${match.region}
|
|
383
429
|
${match.from}`;
|
|
384
430
|
react.useEffect(() => {
|
|
385
431
|
const owner = panel.current?.ownerDocument;
|
|
386
|
-
|
|
387
|
-
|
|
432
|
+
const { root } = controller;
|
|
433
|
+
if (key === null || root === null || !panel.current?.contains(owner?.activeElement ?? null)) return;
|
|
434
|
+
root.style.setProperty(CLEARANCE, `${panel.current.getBoundingClientRect().bottom}px`);
|
|
435
|
+
root.querySelector(`.${CURRENT_CLASS}`)?.scrollIntoView?.({ block: "nearest", inline: "nearest" });
|
|
388
436
|
}, [controller, panel, key]);
|
|
437
|
+
react.useEffect(() => () => void controller.root?.style.removeProperty(CLEARANCE), [controller]);
|
|
389
438
|
}
|
|
390
439
|
var composing = (event) => event.nativeEvent.isComposing || event.keyCode === 229;
|
|
391
440
|
var focusAll = (field) => {
|
|
@@ -393,17 +442,19 @@ var focusAll = (field) => {
|
|
|
393
442
|
field?.select();
|
|
394
443
|
};
|
|
395
444
|
var HISTORY = [
|
|
396
|
-
["Mod-z",
|
|
397
|
-
["Mod-Shift-z",
|
|
398
|
-
["Mod-y",
|
|
445
|
+
["Mod-z", chunkZ5EEDCRI_cjs.undo],
|
|
446
|
+
["Mod-Shift-z", chunkZ5EEDCRI_cjs.redo],
|
|
447
|
+
["Mod-y", chunkZ5EEDCRI_cjs.redo]
|
|
399
448
|
];
|
|
400
|
-
var historyCommand = (event, isMac) => HISTORY.find(([key]) =>
|
|
449
|
+
var historyCommand = (event, isMac) => HISTORY.find(([key]) => chunkZ5EEDCRI_cjs.normalizeKey(key, isMac) === chunkZ5EEDCRI_cjs.keyName(event, isMac))?.[1];
|
|
401
450
|
var plainEnter = (event) => event.key === "Enter" && !event.altKey && !event.ctrlKey && !event.metaKey;
|
|
402
451
|
function FindPanel({ controller, labels, value, readOnly }) {
|
|
403
452
|
const actions = react.useMemo(() => findActions(controller), [controller]);
|
|
404
453
|
const [replacement, setReplacement] = react.useState("");
|
|
405
454
|
const panel = react.useRef(null);
|
|
455
|
+
const dir = reactDirection.useDirection();
|
|
406
456
|
const query = react.useRef(null);
|
|
457
|
+
const statusId = react.useId();
|
|
407
458
|
react.useEffect(() => focusAll(query.current), [value.opened]);
|
|
408
459
|
useScrollToCurrent(controller, panel, currentMatch(value));
|
|
409
460
|
const onPanelKeyDown = (event) => {
|
|
@@ -439,30 +490,32 @@ function FindPanel({ controller, labels, value, readOnly }) {
|
|
|
439
490
|
"div",
|
|
440
491
|
{
|
|
441
492
|
ref: panel,
|
|
493
|
+
dir,
|
|
442
494
|
role: "search",
|
|
443
495
|
"aria-label": labels.findAndReplace,
|
|
444
|
-
className: "quoin quoin-find-panel bg-popover fixed top-4
|
|
496
|
+
className: "quoin quoin-find-panel bg-popover fixed top-4 end-4 z-50 max-w-[calc(100vw-2rem)] text-popover-foreground flex flex-col gap-1.5 rounded-lg border p-2 shadow-md",
|
|
445
497
|
onKeyDown: onPanelKeyDown,
|
|
446
498
|
onClick: onPanelClick,
|
|
447
499
|
children: [
|
|
448
500
|
/* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1", children: [
|
|
449
501
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
450
|
-
|
|
502
|
+
chunk4UFWFV43_cjs.Input,
|
|
451
503
|
{
|
|
452
504
|
ref: query,
|
|
453
505
|
"aria-label": labels.find,
|
|
454
506
|
placeholder: labels.find,
|
|
455
507
|
value: value.search.query,
|
|
456
508
|
"aria-invalid": value.error !== null,
|
|
509
|
+
"aria-describedby": value.error === null ? void 0 : statusId,
|
|
457
510
|
onChange: (event) => actions.search(event.target.value),
|
|
458
511
|
onKeyDown: onQueryKeyDown,
|
|
459
512
|
className: "h-8 w-48"
|
|
460
513
|
}
|
|
461
514
|
),
|
|
462
|
-
/* @__PURE__ */ jsxRuntime.jsx(FindStatus, { labels, value }),
|
|
515
|
+
/* @__PURE__ */ jsxRuntime.jsx(FindStatus, { id: statusId, labels, value }),
|
|
463
516
|
/* @__PURE__ */ jsxRuntime.jsx(FindToggles, { labels, options: value.search, onToggle: actions.toggle }),
|
|
464
517
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
465
|
-
|
|
518
|
+
chunk4UFWFV43_cjs.Button,
|
|
466
519
|
{
|
|
467
520
|
type: "button",
|
|
468
521
|
variant: "ghost",
|
|
@@ -470,11 +523,11 @@ function FindPanel({ controller, labels, value, readOnly }) {
|
|
|
470
523
|
"aria-label": labels.previousMatch,
|
|
471
524
|
title: labels.previousMatch,
|
|
472
525
|
onClick: () => actions.step(-1),
|
|
473
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
526
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunk4UFWFV43_cjs.ChevronUp, { "aria-hidden": true })
|
|
474
527
|
}
|
|
475
528
|
),
|
|
476
529
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
477
|
-
|
|
530
|
+
chunk4UFWFV43_cjs.Button,
|
|
478
531
|
{
|
|
479
532
|
type: "button",
|
|
480
533
|
variant: "ghost",
|
|
@@ -482,11 +535,11 @@ function FindPanel({ controller, labels, value, readOnly }) {
|
|
|
482
535
|
"aria-label": labels.nextMatch,
|
|
483
536
|
title: labels.nextMatch,
|
|
484
537
|
onClick: () => actions.step(1),
|
|
485
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
538
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunk4UFWFV43_cjs.ChevronDown, { "aria-hidden": true })
|
|
486
539
|
}
|
|
487
540
|
),
|
|
488
541
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
489
|
-
|
|
542
|
+
chunk4UFWFV43_cjs.Button,
|
|
490
543
|
{
|
|
491
544
|
type: "button",
|
|
492
545
|
variant: "ghost",
|
|
@@ -494,13 +547,13 @@ function FindPanel({ controller, labels, value, readOnly }) {
|
|
|
494
547
|
"aria-label": labels.close,
|
|
495
548
|
title: labels.close,
|
|
496
549
|
onClick: actions.close,
|
|
497
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
550
|
+
children: /* @__PURE__ */ jsxRuntime.jsx(chunk4UFWFV43_cjs.X, { "aria-hidden": true })
|
|
498
551
|
}
|
|
499
552
|
)
|
|
500
553
|
] }),
|
|
501
554
|
!readOnly && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-wrap items-center gap-1", children: [
|
|
502
555
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
503
|
-
|
|
556
|
+
chunk4UFWFV43_cjs.Input,
|
|
504
557
|
{
|
|
505
558
|
"aria-label": labels.replaceWith,
|
|
506
559
|
placeholder: labels.replaceWith,
|
|
@@ -510,18 +563,18 @@ function FindPanel({ controller, labels, value, readOnly }) {
|
|
|
510
563
|
className: "h-8 w-48"
|
|
511
564
|
}
|
|
512
565
|
),
|
|
513
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
514
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
566
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk4UFWFV43_cjs.Button, { type: "button", variant: "outline", size: "sm", onClick: () => actions.replace(replacement), children: labels.replace }),
|
|
567
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk4UFWFV43_cjs.Button, { type: "button", variant: "outline", size: "sm", onClick: () => actions.replaceAll(replacement), children: labels.replaceAll })
|
|
515
568
|
] })
|
|
516
569
|
]
|
|
517
570
|
}
|
|
518
571
|
);
|
|
519
572
|
}
|
|
520
573
|
function FindOverlay({ controller, labels }) {
|
|
521
|
-
const readOnly =
|
|
522
|
-
const value =
|
|
574
|
+
const readOnly = chunkN25EH2GZ_cjs.useReadOnly(controller);
|
|
575
|
+
const value = chunkN25EH2GZ_cjs.useEditorState(
|
|
523
576
|
controller,
|
|
524
|
-
react.useCallback((state) =>
|
|
577
|
+
react.useCallback((state) => chunkZ5EEDCRI_cjs.getPluginState(state, findKey), [])
|
|
525
578
|
);
|
|
526
579
|
useFindShortcut(controller);
|
|
527
580
|
if (!value.open) return null;
|
|
@@ -533,7 +586,7 @@ function findExtension(options = {}) {
|
|
|
533
586
|
const labels = resolveFindLabels(options.labels);
|
|
534
587
|
const Overlay = ({ controller }) => /* @__PURE__ */ jsxRuntime.jsx(FindOverlay, { controller, labels });
|
|
535
588
|
const ui = { overlays: [Overlay] };
|
|
536
|
-
return
|
|
589
|
+
return chunkZ5EEDCRI_cjs.defineExtension({ name: "find", plugins: [findPlugin], decorations: findDecorations, ui });
|
|
537
590
|
}
|
|
538
591
|
|
|
539
592
|
exports.englishFindLabels = englishFindLabels;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunk4JDRDPLC_cjs = require('./chunk-4JDRDPLC.cjs');
|
|
4
4
|
|
|
5
5
|
// src/engine/diff/myers.ts
|
|
6
6
|
var same = (x, y) => x === y;
|
|
@@ -97,21 +97,21 @@ function tokenize(inline) {
|
|
|
97
97
|
|
|
98
98
|
// src/engine/diff/diff-inline.ts
|
|
99
99
|
function diffInline(a, b) {
|
|
100
|
-
return diffSequences(tokenize(a), tokenize(b),
|
|
100
|
+
return diffSequences(tokenize(a), tokenize(b), chunk4JDRDPLC_cjs.equalNode).map(({ op, items }) => ({
|
|
101
101
|
op,
|
|
102
|
-
inline:
|
|
102
|
+
inline: chunk4JDRDPLC_cjs.normalizeInline(items)
|
|
103
103
|
}));
|
|
104
104
|
}
|
|
105
105
|
|
|
106
106
|
// src/engine/diff/block-change.ts
|
|
107
107
|
var indentOf = (block) => block.indent ?? 0;
|
|
108
108
|
function sameContent(a, b) {
|
|
109
|
-
return a.type === b.type && indentOf(a) === indentOf(b) &&
|
|
109
|
+
return a.type === b.type && indentOf(a) === indentOf(b) && chunk4JDRDPLC_cjs.sameValue(a.data, b.data);
|
|
110
110
|
}
|
|
111
111
|
function changeBetween(before, after, schema, ctx) {
|
|
112
|
-
const left =
|
|
113
|
-
const right =
|
|
114
|
-
const names = [.../* @__PURE__ */ new Set([...Object.keys(left.regions), ...Object.keys(right.regions)])].sort(
|
|
112
|
+
const left = chunk4JDRDPLC_cjs.specFor(schema, before.type).fromData(before.data, ctx);
|
|
113
|
+
const right = chunk4JDRDPLC_cjs.specFor(schema, after.type).fromData(after.data, ctx);
|
|
114
|
+
const names = [.../* @__PURE__ */ new Set([...Object.keys(left.regions), ...Object.keys(right.regions)])].sort(chunk4JDRDPLC_cjs.compareRegionNames);
|
|
115
115
|
return {
|
|
116
116
|
op: "change",
|
|
117
117
|
before,
|
|
@@ -119,7 +119,7 @@ function changeBetween(before, after, schema, ctx) {
|
|
|
119
119
|
regions: Object.fromEntries(
|
|
120
120
|
names.map((name) => [name, diffInline(left.regions[name] ?? [], right.regions[name] ?? [])])
|
|
121
121
|
),
|
|
122
|
-
attrsChanged: before.type !== after.type || indentOf(before) !== indentOf(after) || !
|
|
122
|
+
attrsChanged: before.type !== after.type || indentOf(before) !== indentOf(after) || !chunk4JDRDPLC_cjs.sameValue(left.attrs, right.attrs)
|
|
123
123
|
};
|
|
124
124
|
}
|
|
125
125
|
|
|
@@ -173,7 +173,7 @@ function profileOf(block) {
|
|
|
173
173
|
}
|
|
174
174
|
function similarity(a, b) {
|
|
175
175
|
if (a.block.type !== b.block.type) return 0;
|
|
176
|
-
if (a.total === 0 && b.total === 0) return
|
|
176
|
+
if (a.total === 0 && b.total === 0) return chunk4JDRDPLC_cjs.sameValue(a.block.data, b.block.data) ? 1 : 0;
|
|
177
177
|
let shared = 0;
|
|
178
178
|
for (const [word, count] of a.words) shared += Math.min(count, b.words.get(word) ?? 0);
|
|
179
179
|
return 2 * shared / (a.total + b.total);
|
|
@@ -286,8 +286,8 @@ function idsMostlyMatch(a, b) {
|
|
|
286
286
|
return matching * 2 >= Math.min(a.length, b.length);
|
|
287
287
|
}
|
|
288
288
|
function diffBlocks(a, b, options = {}) {
|
|
289
|
-
const schema = options.schema ??
|
|
290
|
-
const codec =
|
|
289
|
+
const schema = options.schema ?? chunk4JDRDPLC_cjs.createSchema();
|
|
290
|
+
const codec = chunk4JDRDPLC_cjs.createBlockCodec(schema);
|
|
291
291
|
const byId = idsMostlyMatch(a, b);
|
|
292
292
|
const taken = { before: new Set(a.map(idOf2)), after: new Set(b.map(idOf2)) };
|
|
293
293
|
const expand = (block, side) => {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { selectedAtomDecorations, atomKeymap, useSelectionOutOfAtoms, atomAtTarget, plainEnter, selectedAtom } from './chunk-
|
|
2
|
-
import { webAddress } from './chunk-
|
|
3
|
-
import { suggestionPlugin, useQuoin, SuggestionMenu, replaceTrigger, toError, dismissSuggestion } from './chunk-
|
|
4
|
-
import { useReadOnly, useIsomorphicLayoutEffect, isComposingKey } from './chunk-
|
|
1
|
+
import { selectedAtomDecorations, atomKeymap, useSelectionOutOfAtoms, atomAtTarget, plainEnter, selectedAtom } from './chunk-F73QEF7E.js';
|
|
2
|
+
import { webAddress } from './chunk-3QYFAAQR.js';
|
|
3
|
+
import { suggestionPlugin, useQuoin, SuggestionMenu, replaceTrigger, toError, dismissSuggestion } from './chunk-ZGFZRVQA.js';
|
|
4
|
+
import { useReadOnly, useIsomorphicLayoutEffect, isComposingKey } from './chunk-MO4UMXMT.js';
|
|
5
5
|
import { mergeLabels } from './chunk-DLQCTGC3.js';
|
|
6
|
-
import { createPluginKey, defineExtension, getPluginState, runCommands, insertMention, insertText } from './chunk-
|
|
6
|
+
import { createPluginKey, defineExtension, getPluginState, runCommands, insertMention, insertText } from './chunk-TL2MJOWM.js';
|
|
7
7
|
import { useEffect, useRef, useMemo, useCallback, useState } from 'react';
|
|
8
8
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
9
9
|
|
|
@@ -111,7 +111,7 @@ function useCloseOnSpace(controller, foundNothing) {
|
|
|
111
111
|
const onBeforeInput = (event) => {
|
|
112
112
|
if (event.inputType !== "insertText" || event.isComposing || !STARTS_WITH_SPACE.test(event.data ?? "")) return;
|
|
113
113
|
const query = getPluginState(controller.editor.state, mentionKey).active?.query;
|
|
114
|
-
if (query
|
|
114
|
+
if (query && foundNothing(query)) controller.run(dismissSuggestion(mentionKey));
|
|
115
115
|
};
|
|
116
116
|
root.addEventListener("beforeinput", onBeforeInput, true);
|
|
117
117
|
return () => root.removeEventListener("beforeinput", onBeforeInput, true);
|
|
@@ -268,5 +268,5 @@ function mentionExtension(options = {}) {
|
|
|
268
268
|
}
|
|
269
269
|
|
|
270
270
|
export { englishMentionLabels, mentionExtension };
|
|
271
|
-
//# sourceMappingURL=chunk-
|
|
272
|
-
//# sourceMappingURL=chunk-
|
|
271
|
+
//# sourceMappingURL=chunk-6Y7JAWYY.js.map
|
|
272
|
+
//# sourceMappingURL=chunk-6Y7JAWYY.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/extensions/mention/mention-feature.ts","../src/extensions/mention/mention-key.ts","../src/extensions/mention/mention-labels.ts","../src/extensions/mention/MentionChip.ts","../src/extensions/mention/choose-mention.ts","../src/extensions/mention/mention-results.ts","../src/extensions/mention/mention-source.ts","../src/extensions/mention/use-close-on-space.ts","../src/extensions/mention/MentionItem.tsx","../src/extensions/mention/MentionMenu.tsx","../src/extensions/mention/use-mention-opening.ts","../src/extensions/mention/use-read-only-chips.ts","../src/extensions/mention/MentionOverlay.tsx","../src/extensions/mention/mention-extension.tsx"],"names":["jsx","useEffect"],"mappings":"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","file":"chunk-6Y7JAWYY.js"}
|