quoin-editor 2.0.5 → 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 +105 -0
- package/MIGRATION.md +1 -1
- package/README.md +4 -3
- 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,20 +1,23 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var chunk2SWLD6R5_cjs = require('./chunk-2SWLD6R5.cjs');
|
|
4
|
-
var
|
|
5
|
-
var
|
|
4
|
+
var chunk4UFWFV43_cjs = require('./chunk-4UFWFV43.cjs');
|
|
5
|
+
var chunkN25EH2GZ_cjs = require('./chunk-N25EH2GZ.cjs');
|
|
6
6
|
var chunkZWTIRGY5_cjs = require('./chunk-ZWTIRGY5.cjs');
|
|
7
|
-
var
|
|
8
|
-
var
|
|
7
|
+
var chunkZ5EEDCRI_cjs = require('./chunk-Z5EEDCRI.cjs');
|
|
8
|
+
var chunk4JDRDPLC_cjs = require('./chunk-4JDRDPLC.cjs');
|
|
9
9
|
var react = require('react');
|
|
10
10
|
var jsxRuntime = require('react/jsx-runtime');
|
|
11
11
|
|
|
12
12
|
// src/extensions/emoji/all-callouts.ts
|
|
13
|
-
var allCallouts = (state, blockIds) => blockIds.length > 0 && blockIds.every((id) =>
|
|
13
|
+
var allCallouts = (state, blockIds) => blockIds.length > 0 && blockIds.every((id) => chunk4JDRDPLC_cjs.blockById(state.doc, id)?.type === "CALLOUT");
|
|
14
14
|
|
|
15
15
|
// src/extensions/emoji/composing-key.ts
|
|
16
16
|
var isComposing = (event) => event.isComposing || event.keyCode === 229;
|
|
17
17
|
|
|
18
|
+
// src/extensions/emoji/emoji-at.ts
|
|
19
|
+
var emojiAt = (target) => target instanceof Element ? target.closest("[data-emoji]")?.getAttribute("data-emoji") ?? null : null;
|
|
20
|
+
|
|
18
21
|
// src/extensions/emoji/emoji-name.ts
|
|
19
22
|
var emojiName = ({ shortcodes, tags }) => shortcodes[0] ?? tags[0] ?? "";
|
|
20
23
|
|
|
@@ -40,14 +43,13 @@ var MOVES = {
|
|
|
40
43
|
function gridMove(rows, cell, key, ctrl = false) {
|
|
41
44
|
return Object.hasOwn(MOVES, key) ? MOVES[key](rows, cell, ctrl) : null;
|
|
42
45
|
}
|
|
43
|
-
var CELL =
|
|
46
|
+
var CELL = chunk4UFWFV43_cjs.cn(
|
|
44
47
|
"flex size-8 shrink-0 cursor-default items-center justify-center rounded-sm text-xl hover:bg-accent",
|
|
45
|
-
|
|
48
|
+
chunk4UFWFV43_cjs.FOCUS_RING
|
|
46
49
|
);
|
|
47
50
|
var HEADING = "px-1 pt-2 pb-1 text-xs font-medium text-muted-foreground";
|
|
48
51
|
var FIRST = { row: 0, col: 0 };
|
|
49
52
|
var cellId = (baseId, row, col) => `${baseId}-cell-${row}-${col}`;
|
|
50
|
-
var emojiAt = (target) => target instanceof Element ? target.closest("[data-emoji]")?.getAttribute("data-emoji") ?? null : null;
|
|
51
53
|
var EmojiRow = react.memo(function EmojiRow2({ baseId, row, emoji, activeCol }) {
|
|
52
54
|
return /* @__PURE__ */ jsxRuntime.jsx("div", { role: "row", className: "flex", children: emoji.map((cell, col) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
53
55
|
"div",
|
|
@@ -63,10 +65,10 @@ var EmojiRow = react.memo(function EmojiRow2({ baseId, row, emoji, activeCol })
|
|
|
63
65
|
cell.emoji
|
|
64
66
|
)) });
|
|
65
67
|
});
|
|
66
|
-
|
|
68
|
+
function EmojiGrid({ section: section2, onPick }) {
|
|
67
69
|
const baseId = react.useId();
|
|
68
70
|
const [active, setActive] = react.useState(null);
|
|
69
|
-
const current = (active === null ? void 0 :
|
|
71
|
+
const current = (active === null ? void 0 : section2.places.get(active)) ?? FIRST;
|
|
70
72
|
const onKeyDown = (event) => {
|
|
71
73
|
if (isComposing(event.nativeEvent) || event.altKey || event.shiftKey || event.metaKey) return;
|
|
72
74
|
if (event.key === "Enter") {
|
|
@@ -76,45 +78,47 @@ var EmojiGrids = react.forwardRef(function EmojiGrids2({ layout, onPick }, ref)
|
|
|
76
78
|
onPick(emoji);
|
|
77
79
|
return;
|
|
78
80
|
}
|
|
79
|
-
const key =
|
|
80
|
-
const next = gridMove(
|
|
81
|
+
const key = chunkN25EH2GZ_cjs.arrowAsWritten(event.key, chunkN25EH2GZ_cjs.inlineDirection(event.currentTarget));
|
|
82
|
+
const next = gridMove(section2.rowLengths, current, key, event.ctrlKey);
|
|
81
83
|
if (next === null) return;
|
|
82
84
|
event.preventDefault();
|
|
83
|
-
setActive(
|
|
85
|
+
setActive(section2.rows[next.row][next.col].emoji);
|
|
84
86
|
event.currentTarget.ownerDocument.getElementById(cellId(baseId, next.row, next.col))?.focus();
|
|
85
87
|
};
|
|
86
|
-
const onClick = (event) => {
|
|
87
|
-
const emoji = emojiAt(event.target);
|
|
88
|
-
if (emoji !== null) onPick(emoji);
|
|
89
|
-
};
|
|
90
88
|
const onFocus = (event) => {
|
|
91
89
|
const emoji = emojiAt(event.target);
|
|
92
90
|
if (emoji !== null) setActive(emoji);
|
|
93
91
|
};
|
|
94
|
-
return /* @__PURE__ */ jsxRuntime.
|
|
95
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { id: `${baseId}
|
|
96
|
-
/* @__PURE__ */ jsxRuntime.jsx("div", { role: "grid", "aria-labelledby": `${baseId}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
92
|
+
return /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
|
|
93
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { id: `${baseId}-label`, className: HEADING, children: section2.label }),
|
|
94
|
+
/* @__PURE__ */ jsxRuntime.jsx("div", { role: "grid", "aria-labelledby": `${baseId}-label`, onKeyDown, onFocus, children: section2.rows.map((emoji, row) => /* @__PURE__ */ jsxRuntime.jsx(
|
|
95
|
+
EmojiRow,
|
|
96
|
+
{
|
|
97
|
+
baseId,
|
|
98
|
+
row,
|
|
99
|
+
emoji,
|
|
100
|
+
activeCol: row === current.row ? current.col : null
|
|
101
|
+
},
|
|
102
|
+
row
|
|
103
|
+
)) })
|
|
104
|
+
] });
|
|
105
|
+
}
|
|
106
|
+
var EmojiGrids = react.forwardRef(function EmojiGrids2({ layout, onPick }, ref) {
|
|
107
|
+
const onClick = (event) => {
|
|
108
|
+
const emoji = emojiAt(event.target);
|
|
109
|
+
if (emoji !== null) onPick(emoji);
|
|
110
|
+
};
|
|
111
|
+
return /* @__PURE__ */ jsxRuntime.jsx("div", { ref, className: "max-h-72 overflow-y-auto", onClick, children: layout.map((section2) => /* @__PURE__ */ jsxRuntime.jsx(EmojiGrid, { section: section2, onPick }, section2.key)) });
|
|
110
112
|
});
|
|
111
113
|
|
|
112
114
|
// src/extensions/emoji/picker-layout.ts
|
|
113
115
|
var COLUMNS = 8;
|
|
114
|
-
function
|
|
116
|
+
function section(key, label, emoji) {
|
|
115
117
|
const rows = [];
|
|
116
118
|
for (let start = 0; start < emoji.length; start += COLUMNS) rows.push(emoji.slice(start, start + COLUMNS));
|
|
117
|
-
|
|
119
|
+
const places = /* @__PURE__ */ new Map();
|
|
120
|
+
rows.forEach((cells, row) => cells.forEach((cell, col) => places.set(cell.emoji, { row, col })));
|
|
121
|
+
return { key, label, rows, rowLengths: rows.map((cells) => cells.length), places };
|
|
118
122
|
}
|
|
119
123
|
function grouped(found, labels) {
|
|
120
124
|
const byGroup = /* @__PURE__ */ new Map();
|
|
@@ -123,20 +127,11 @@ function grouped(found, labels) {
|
|
|
123
127
|
if (group === void 0) byGroup.set(emoji.group, [emoji]);
|
|
124
128
|
else group.push(emoji);
|
|
125
129
|
}
|
|
126
|
-
return [...byGroup].map(([group, emoji]) => (
|
|
130
|
+
return [...byGroup].map(([group, emoji]) => section(group, labels.groups[group], emoji));
|
|
127
131
|
}
|
|
128
132
|
function pickerLayout(found, searching, labels) {
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
const sections = unplaced.map((section) => {
|
|
132
|
-
const placed = { ...section, firstRow };
|
|
133
|
-
firstRow += section.rows.length;
|
|
134
|
-
return placed;
|
|
135
|
-
});
|
|
136
|
-
const rows = sections.flatMap((section) => section.rows);
|
|
137
|
-
const places = /* @__PURE__ */ new Map();
|
|
138
|
-
rows.forEach((cells, row) => cells.forEach(({ emoji }, col) => places.set(emoji, { row, col })));
|
|
139
|
-
return { sections, rows, rowLengths: rows.map((cells) => cells.length), places };
|
|
133
|
+
if (found.length === 0) return [];
|
|
134
|
+
return searching ? [section("results", labels.searchResults, found)] : grouped(found, labels);
|
|
140
135
|
}
|
|
141
136
|
|
|
142
137
|
// src/extensions/emoji/emoji-data.ts
|
|
@@ -150,9 +145,9 @@ var loadEmojiData = () => emojiData.load();
|
|
|
150
145
|
|
|
151
146
|
// src/extensions/emoji/use-emoji-data.ts
|
|
152
147
|
function useEmojiData() {
|
|
153
|
-
const { onError } =
|
|
148
|
+
const { onError } = chunk4UFWFV43_cjs.useQuoin();
|
|
154
149
|
const report = react.useRef(onError);
|
|
155
|
-
|
|
150
|
+
chunkN25EH2GZ_cjs.useIsomorphicLayoutEffect(() => {
|
|
156
151
|
report.current = onError;
|
|
157
152
|
});
|
|
158
153
|
const [state, setState] = react.useState(() => emojiData.loaded() ?? "loading");
|
|
@@ -165,7 +160,7 @@ function useEmojiData() {
|
|
|
165
160
|
(reason) => {
|
|
166
161
|
if (!current) return;
|
|
167
162
|
setState("failed");
|
|
168
|
-
report.current(
|
|
163
|
+
report.current(chunk4UFWFV43_cjs.toError(reason));
|
|
169
164
|
}
|
|
170
165
|
);
|
|
171
166
|
return () => {
|
|
@@ -185,15 +180,16 @@ function EmojiPicker({ labels, onPick }) {
|
|
|
185
180
|
() => typeof data === "string" ? null : pickerLayout(data.searchEmoji(query), searching, labels),
|
|
186
181
|
[data, query, searching, labels]
|
|
187
182
|
);
|
|
188
|
-
const shown = layout !== null && layout.
|
|
183
|
+
const shown = layout !== null && layout.length > 0;
|
|
189
184
|
const status = data === "loading" ? labels.loading : data === "failed" ? labels.loadFailed : shown ? "" : labels.noMatches;
|
|
190
185
|
const focusGrids = () => grids.current?.querySelector(ACTIVE_CELL)?.focus();
|
|
191
186
|
const onKeyDown = (event) => {
|
|
192
187
|
if (event.key !== "Tab" || isComposing(event.nativeEvent) || event.altKey || event.ctrlKey || event.metaKey) return;
|
|
193
188
|
event.preventDefault();
|
|
194
189
|
event.stopPropagation();
|
|
195
|
-
|
|
196
|
-
|
|
190
|
+
const stops = [field.current, ...grids.current?.querySelectorAll(ACTIVE_CELL) ?? []];
|
|
191
|
+
const at = stops.indexOf(event.target);
|
|
192
|
+
stops[(at + (event.shiftKey ? -1 : 1) + stops.length) % stops.length]?.focus();
|
|
197
193
|
};
|
|
198
194
|
const onFieldKeyDown = (event) => {
|
|
199
195
|
if (isComposing(event.nativeEvent)) return;
|
|
@@ -202,12 +198,12 @@ function EmojiPicker({ labels, onPick }) {
|
|
|
202
198
|
focusGrids();
|
|
203
199
|
} else if (event.key === "Enter" && searching && shown) {
|
|
204
200
|
event.preventDefault();
|
|
205
|
-
onPick(layout.rows[0][0].emoji);
|
|
201
|
+
onPick(layout[0].rows[0][0].emoji);
|
|
206
202
|
}
|
|
207
203
|
};
|
|
208
204
|
return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "flex flex-col gap-1", onKeyDown, children: [
|
|
209
205
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
210
|
-
|
|
206
|
+
chunk4UFWFV43_cjs.Input,
|
|
211
207
|
{
|
|
212
208
|
ref: field,
|
|
213
209
|
className: "h-8",
|
|
@@ -251,11 +247,11 @@ function useIconRequest(controller) {
|
|
|
251
247
|
const read = react.useCallback(() => storeOf(controller).request, [controller]);
|
|
252
248
|
return react.useSyncExternalStore(subscribe, read, read);
|
|
253
249
|
}
|
|
254
|
-
var
|
|
250
|
+
var CALLOUT_ICON_BUTTON = ".quoin-callout > :first-child";
|
|
255
251
|
function CalloutIconPicker({ controller, labels }) {
|
|
256
|
-
const readOnly =
|
|
252
|
+
const readOnly = chunkN25EH2GZ_cjs.useReadOnly(controller);
|
|
257
253
|
const request = useIconRequest(controller);
|
|
258
|
-
const there =
|
|
254
|
+
const there = chunkN25EH2GZ_cjs.useEditorState(
|
|
259
255
|
controller,
|
|
260
256
|
react.useCallback((state) => request !== null && allCallouts(state, request.blocks), [request])
|
|
261
257
|
);
|
|
@@ -267,18 +263,18 @@ function CalloutIconPicker({ controller, labels }) {
|
|
|
267
263
|
return /* @__PURE__ */ jsxRuntime.jsx(IconPopover, { controller, labels, request }, request.blocks.join(" "));
|
|
268
264
|
}
|
|
269
265
|
function IconPopover({ controller, labels, request: { blocks } }) {
|
|
270
|
-
const anchor =
|
|
266
|
+
const anchor = chunk4UFWFV43_cjs.usePartAnchor(controller, blocks[0], CALLOUT_ICON_BUTTON);
|
|
271
267
|
const content = react.useRef(null);
|
|
272
268
|
const close = () => requestIcon(controller, null);
|
|
273
269
|
const finish = (icon) => {
|
|
274
270
|
close();
|
|
275
|
-
|
|
271
|
+
chunk4UFWFV43_cjs.runOnBlocks(controller, blocks, icon === null ? chunk4UFWFV43_cjs.noChange : chunkZ5EEDCRI_cjs.setAttrs({ icon }));
|
|
276
272
|
controller.focus();
|
|
277
273
|
};
|
|
278
274
|
const ownerDocument = react.useCallback(() => controller.root?.ownerDocument ?? document, [controller]);
|
|
279
|
-
|
|
275
|
+
chunk4UFWFV43_cjs.useOutsidePress(content, ownerDocument, close);
|
|
280
276
|
return /* @__PURE__ */ jsxRuntime.jsxs(
|
|
281
|
-
|
|
277
|
+
chunk4UFWFV43_cjs.Popover,
|
|
282
278
|
{
|
|
283
279
|
open: true,
|
|
284
280
|
modal: false,
|
|
@@ -286,21 +282,21 @@ function IconPopover({ controller, labels, request: { blocks } }) {
|
|
|
286
282
|
if (!open) close();
|
|
287
283
|
},
|
|
288
284
|
children: [
|
|
289
|
-
/* @__PURE__ */ jsxRuntime.jsx(
|
|
285
|
+
/* @__PURE__ */ jsxRuntime.jsx(chunk4UFWFV43_cjs.PopoverAnchor, { virtualRef: anchor }),
|
|
290
286
|
/* @__PURE__ */ jsxRuntime.jsx(
|
|
291
|
-
|
|
287
|
+
chunk4UFWFV43_cjs.PopoverContent,
|
|
292
288
|
{
|
|
293
289
|
ref: content,
|
|
294
290
|
"aria-label": labels.chooseIcon,
|
|
295
291
|
side: "bottom",
|
|
296
292
|
align: "start",
|
|
297
293
|
className: "w-80 p-2",
|
|
298
|
-
onCloseAutoFocus:
|
|
294
|
+
onCloseAutoFocus: chunk4UFWFV43_cjs.preventDefault,
|
|
299
295
|
onEscapeKeyDown: (event) => {
|
|
300
296
|
event.preventDefault();
|
|
301
297
|
if (!isComposing(event)) finish(null);
|
|
302
298
|
},
|
|
303
|
-
...
|
|
299
|
+
...chunk4UFWFV43_cjs.bubblePart(controller),
|
|
304
300
|
children: /* @__PURE__ */ jsxRuntime.jsx(EmojiPicker, { labels, onPick: finish })
|
|
305
301
|
}
|
|
306
302
|
)
|
|
@@ -312,13 +308,13 @@ function IconPopover({ controller, labels, request: { blocks } }) {
|
|
|
312
308
|
// src/extensions/emoji/choose-icon-action.ts
|
|
313
309
|
function calloutsFor(state, blockIds) {
|
|
314
310
|
if (blockIds.length === 0 || !state.doc.index.has(blockIds[0])) return null;
|
|
315
|
-
const targets =
|
|
311
|
+
const targets = chunk4UFWFV43_cjs.styleTargets(state, blockIds[0]);
|
|
316
312
|
return allCallouts(state, targets) ? targets : null;
|
|
317
313
|
}
|
|
318
314
|
var chooseIconAction = (labels) => ({
|
|
319
315
|
id: "choose-icon",
|
|
320
316
|
label: labels.chooseIcon,
|
|
321
|
-
icon:
|
|
317
|
+
icon: chunk4UFWFV43_cjs.SmilePlus,
|
|
322
318
|
available: (state, blockIds) => calloutsFor(state, blockIds) !== null,
|
|
323
319
|
run: (controller, blockIds) => {
|
|
324
320
|
const blocks = calloutsFor(controller.editor.state, blockIds);
|
|
@@ -327,7 +323,7 @@ var chooseIconAction = (labels) => ({
|
|
|
327
323
|
});
|
|
328
324
|
|
|
329
325
|
// src/extensions/emoji/emoji-key.ts
|
|
330
|
-
var emojiKey =
|
|
326
|
+
var emojiKey = chunkZ5EEDCRI_cjs.createPluginKey("emoji");
|
|
331
327
|
|
|
332
328
|
// src/extensions/emoji/emoji-labels.ts
|
|
333
329
|
var englishEmojiLabels = {
|
|
@@ -370,28 +366,27 @@ function emojiSource(limit, onFailure) {
|
|
|
370
366
|
};
|
|
371
367
|
}
|
|
372
368
|
var SHOWN = 8;
|
|
373
|
-
var
|
|
374
|
-
var queryAt = (state) => chunkFK7EBZPX_cjs.getPluginState(state, emojiKey).active?.query ?? null;
|
|
369
|
+
var queryAt = (state) => chunkZ5EEDCRI_cjs.getPluginState(state, emojiKey).active?.query ?? null;
|
|
375
370
|
var emojiOf = ({ emoji }) => emoji;
|
|
376
371
|
var renderEmoji = (emoji) => /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
|
|
377
372
|
/* @__PURE__ */ jsxRuntime.jsx("span", { "aria-hidden": "true", className: "text-base", children: emoji.emoji }),
|
|
378
373
|
/* @__PURE__ */ jsxRuntime.jsx("span", { className: "truncate", children: emojiName(emoji) })
|
|
379
374
|
] });
|
|
380
375
|
function EmojiMenu({ controller, labels }) {
|
|
381
|
-
const readOnly =
|
|
382
|
-
const query =
|
|
383
|
-
if (readOnly || query === null
|
|
376
|
+
const readOnly = chunkN25EH2GZ_cjs.useReadOnly(controller);
|
|
377
|
+
const query = chunkN25EH2GZ_cjs.useEditorState(controller, queryAt);
|
|
378
|
+
if (readOnly || query === null) return null;
|
|
384
379
|
return /* @__PURE__ */ jsxRuntime.jsx(EmojiMatches, { controller, labels });
|
|
385
380
|
}
|
|
386
381
|
function EmojiMatches({ controller, labels }) {
|
|
387
382
|
const [failed, setFailed] = react.useState(false);
|
|
388
383
|
const source = react.useMemo(() => emojiSource(SHOWN, () => setFailed(true)), []);
|
|
389
384
|
const choose = react.useCallback(
|
|
390
|
-
(emoji, range) => void
|
|
385
|
+
(emoji, range) => void chunk4UFWFV43_cjs.replaceTrigger(controller, range, chunkZ5EEDCRI_cjs.insertText(emoji.emoji)),
|
|
391
386
|
[controller]
|
|
392
387
|
);
|
|
393
388
|
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
394
|
-
|
|
389
|
+
chunk4UFWFV43_cjs.SuggestionMenu,
|
|
395
390
|
{
|
|
396
391
|
controller,
|
|
397
392
|
pluginKey: emojiKey,
|
|
@@ -410,7 +405,7 @@ function emojiExtension(options = {}) {
|
|
|
410
405
|
const Menu = ({ controller }) => /* @__PURE__ */ jsxRuntime.jsx(EmojiMenu, { controller, labels });
|
|
411
406
|
const Picker = ({ controller }) => /* @__PURE__ */ jsxRuntime.jsx(CalloutIconPicker, { controller, labels });
|
|
412
407
|
const ui = { blockMenuItems: [chooseIconAction(labels)], overlays: [Menu, Picker] };
|
|
413
|
-
return
|
|
408
|
+
return chunkZ5EEDCRI_cjs.defineExtension({ name: "emoji", plugins: [chunk4UFWFV43_cjs.suggestionPlugin(emojiKey, { char: ":", minLength: 2 })], ui });
|
|
414
409
|
}
|
|
415
410
|
|
|
416
411
|
exports.emojiExtension = emojiExtension;
|