quoin-editor 1.4.1 → 1.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/README.md +8 -6
  3. package/THIRD_PARTY_NOTICES.md +25 -1
  4. package/dist/ai.cjs +21 -23
  5. package/dist/ai.js +1 -1
  6. package/dist/catalogue.cjs +17 -18
  7. package/dist/catalogue.js +10 -9
  8. package/dist/catalogue.js.map +1 -1
  9. package/dist/{chunk-VVS6JJLI.js → chunk-2AVGGPLT.js} +4 -25
  10. package/dist/chunk-2AVGGPLT.js.map +1 -0
  11. package/dist/chunk-2SWLD6R5.cjs +25 -0
  12. package/dist/{chunk-MQTLZTIM.js → chunk-32OZ2WM2.js} +12 -12
  13. package/dist/{chunk-MQTLZTIM.js.map → chunk-32OZ2WM2.js.map} +1 -1
  14. package/dist/{chunk-H5FM6I5W.cjs → chunk-46JH34SR.cjs} +7 -9
  15. package/dist/chunk-4T4TJ2QS.cjs +0 -2
  16. package/dist/chunk-A6PGQVTR.cjs +0 -2
  17. package/dist/chunk-AZF7B2AE.cjs +0 -2
  18. package/dist/{chunk-AC4AFDTI.js → chunk-B5OMWOVI.js} +3 -3
  19. package/dist/{chunk-AC4AFDTI.js.map → chunk-B5OMWOVI.js.map} +1 -1
  20. package/dist/chunk-BM2GRZNM.cjs +0 -2
  21. package/dist/chunk-H3C3MJW5.cjs +0 -2
  22. package/dist/{chunk-6LOYAC5N.js → chunk-HT7OF52E.js} +3 -3
  23. package/dist/{chunk-6LOYAC5N.js.map → chunk-HT7OF52E.js.map} +1 -1
  24. package/dist/{chunk-3NVFHJFS.cjs → chunk-JVSYEENH.cjs} +17 -19
  25. package/dist/{chunk-3YA7FYEL.js → chunk-KF3KKN4N.js} +3 -3
  26. package/dist/{chunk-3YA7FYEL.js.map → chunk-KF3KKN4N.js.map} +1 -1
  27. package/dist/{chunk-KRLHGVJV.js → chunk-KFYJW7W5.js} +4 -4
  28. package/dist/{chunk-KRLHGVJV.js.map → chunk-KFYJW7W5.js.map} +1 -1
  29. package/dist/chunk-KTUOPDVO.js +25 -0
  30. package/dist/chunk-KTUOPDVO.js.map +1 -0
  31. package/dist/{chunk-QPOUONJ7.cjs → chunk-L6RB43YM.cjs} +21 -44
  32. package/dist/chunk-LE5XMIFJ.cjs +0 -2
  33. package/dist/{chunk-VUYJGFUA.cjs → chunk-LOP66FVU.cjs} +8 -10
  34. package/dist/{chunk-STCJWXP5.js → chunk-N2SCDXTI.js} +3 -3
  35. package/dist/{chunk-STCJWXP5.js.map → chunk-N2SCDXTI.js.map} +1 -1
  36. package/dist/{chunk-YEQEBJPM.js → chunk-O7XZFXPE.js} +3 -3
  37. package/dist/{chunk-YEQEBJPM.js.map → chunk-O7XZFXPE.js.map} +1 -1
  38. package/dist/chunk-QJ34MOFV.cjs +0 -2
  39. package/dist/chunk-QR2NIDUK.cjs +0 -2
  40. package/dist/chunk-STKGRXSA.cjs +0 -2
  41. package/dist/{chunk-7WSBPD6Z.cjs → chunk-T7O3BROK.cjs} +38 -40
  42. package/dist/{chunk-AZ2ZNSFN.cjs → chunk-TKCPXUPP.cjs} +15 -17
  43. package/dist/{chunk-65WK575V.cjs → chunk-UUSZGUXJ.cjs} +10 -11
  44. package/dist/chunk-VZZPCYA3.cjs +0 -2
  45. package/dist/chunk-WN7BZDNH.cjs +0 -2
  46. package/dist/chunk-WZA5S5EJ.cjs +0 -2
  47. package/dist/{chunk-FQDNF7MF.cjs → chunk-XFR7QGSN.cjs} +39 -41
  48. package/dist/chunk-XZ4NC3Q7.cjs +0 -2
  49. package/dist/code-highlighter-BQDxhRrv.d.cts +14 -0
  50. package/dist/code-highlighter-BQDxhRrv.d.ts +14 -0
  51. package/dist/comments.cjs +18 -20
  52. package/dist/comments.js +1 -1
  53. package/dist/diff.cjs +0 -2
  54. package/dist/diff.d.cts +2 -2
  55. package/dist/diff.d.ts +2 -2
  56. package/dist/docx.cjs +0 -2
  57. package/dist/embed.cjs +4 -6
  58. package/dist/embed.js +2 -2
  59. package/dist/emoji-data.cjs +0 -2
  60. package/dist/emoji.cjs +6 -7
  61. package/dist/emoji.js +3 -2
  62. package/dist/engine.cjs +0 -2
  63. package/dist/engine.d.cts +3 -15
  64. package/dist/engine.d.ts +3 -15
  65. package/dist/find.cjs +6 -8
  66. package/dist/find.js +2 -2
  67. package/dist/headless.cjs +0 -2
  68. package/dist/headless.d.cts +2 -1
  69. package/dist/headless.d.ts +2 -1
  70. package/dist/highlight.cjs +98 -0
  71. package/dist/highlight.d.cts +10 -0
  72. package/dist/highlight.d.ts +10 -0
  73. package/dist/highlight.js +98 -0
  74. package/dist/highlight.js.map +1 -0
  75. package/dist/index.cjs +12 -14
  76. package/dist/index.d.cts +6 -3
  77. package/dist/index.d.ts +6 -3
  78. package/dist/index.js +1 -1
  79. package/dist/math.cjs +5 -7
  80. package/dist/math.js +3 -3
  81. package/dist/mention.cjs +4 -6
  82. package/dist/mention.js +2 -2
  83. package/dist/presence.cjs +1 -3
  84. package/dist/presence.js +1 -1
  85. package/dist/prism-grammars.cjs +56 -0
  86. package/dist/prism-grammars.js +52 -0
  87. package/dist/prism-grammars.js.map +1 -0
  88. package/dist/{registry-DdQaddP1.d.ts → registry-DZ8LIGt5.d.cts} +2 -15
  89. package/dist/{registry-DdQaddP1.d.cts → registry-DZ8LIGt5.d.ts} +2 -15
  90. package/dist/source.cjs +97 -0
  91. package/dist/source.d.cts +56 -0
  92. package/dist/source.d.ts +56 -0
  93. package/dist/source.js +94 -0
  94. package/dist/source.js.map +1 -0
  95. package/dist/stats.cjs +1 -3
  96. package/dist/stats.js +1 -1
  97. package/dist/styles.css +1 -1
  98. package/dist/table.cjs +21 -23
  99. package/dist/table.js +2 -2
  100. package/dist/to-markdown-BVOzhgVM.d.ts +17 -0
  101. package/dist/to-markdown-CFPMbbiX.d.cts +17 -0
  102. package/dist/toc.cjs +5 -7
  103. package/dist/toc.js +2 -2
  104. package/dist/view.cjs +0 -2
  105. package/dist/view.d.cts +2 -2
  106. package/dist/view.d.ts +2 -2
  107. package/dist/yjs.cjs +0 -2
  108. package/package.json +24 -3
  109. package/dist/ai.cjs.map +0 -1
  110. package/dist/catalogue.cjs.map +0 -1
  111. package/dist/chunk-3NVFHJFS.cjs.map +0 -1
  112. package/dist/chunk-4T4TJ2QS.cjs.map +0 -1
  113. package/dist/chunk-65WK575V.cjs.map +0 -1
  114. package/dist/chunk-7WSBPD6Z.cjs.map +0 -1
  115. package/dist/chunk-A6PGQVTR.cjs.map +0 -1
  116. package/dist/chunk-AZ2ZNSFN.cjs.map +0 -1
  117. package/dist/chunk-AZF7B2AE.cjs.map +0 -1
  118. package/dist/chunk-BM2GRZNM.cjs.map +0 -1
  119. package/dist/chunk-FQDNF7MF.cjs.map +0 -1
  120. package/dist/chunk-H3C3MJW5.cjs.map +0 -1
  121. package/dist/chunk-H5FM6I5W.cjs.map +0 -1
  122. package/dist/chunk-LE5XMIFJ.cjs.map +0 -1
  123. package/dist/chunk-QJ34MOFV.cjs.map +0 -1
  124. package/dist/chunk-QPOUONJ7.cjs.map +0 -1
  125. package/dist/chunk-QR2NIDUK.cjs.map +0 -1
  126. package/dist/chunk-STKGRXSA.cjs.map +0 -1
  127. package/dist/chunk-VUYJGFUA.cjs.map +0 -1
  128. package/dist/chunk-VVS6JJLI.js.map +0 -1
  129. package/dist/chunk-VZZPCYA3.cjs.map +0 -1
  130. package/dist/chunk-WN7BZDNH.cjs.map +0 -1
  131. package/dist/chunk-WZA5S5EJ.cjs.map +0 -1
  132. package/dist/chunk-XZ4NC3Q7.cjs.map +0 -1
  133. package/dist/comments.cjs.map +0 -1
  134. package/dist/diff.cjs.map +0 -1
  135. package/dist/docx.cjs.map +0 -1
  136. package/dist/embed.cjs.map +0 -1
  137. package/dist/emoji-data.cjs.map +0 -1
  138. package/dist/emoji.cjs.map +0 -1
  139. package/dist/engine.cjs.map +0 -1
  140. package/dist/find.cjs.map +0 -1
  141. package/dist/headless.cjs.map +0 -1
  142. package/dist/index.cjs.map +0 -1
  143. package/dist/math.cjs.map +0 -1
  144. package/dist/mention.cjs.map +0 -1
  145. package/dist/presence.cjs.map +0 -1
  146. package/dist/stats.cjs.map +0 -1
  147. package/dist/table.cjs.map +0 -1
  148. package/dist/toc.cjs.map +0 -1
  149. package/dist/view.cjs.map +0 -1
  150. package/dist/yjs.cjs.map +0 -1
@@ -0,0 +1,98 @@
1
+ 'use client';
2
+ import { lazyLoad } from './chunk-KTUOPDVO.js';
3
+ import { CODE_LANGUAGES } from './chunk-32OZ2WM2.js';
4
+ import './chunk-XFEDJEJF.js';
5
+ import './chunk-HDJ653LM.js';
6
+ import './chunk-OS2O6IKX.js';
7
+ import './chunk-CSKKSXCE.js';
8
+ import './chunk-BJTOLCRR.js';
9
+ import { useState, useEffect, useMemo } from 'react';
10
+
11
+ // src/blocks/code/prism/grammar-name.ts
12
+ var NEAREST = { dockerfile: "docker", html: "markup", xml: "markup", shell: "bash" };
13
+ function grammarName(language) {
14
+ const key = language.trim().toLowerCase();
15
+ if (key === "") return void 0;
16
+ const known = CODE_LANGUAGES.find(({ id, aliases = [] }) => id === key || aliases.includes(key));
17
+ return known && (NEAREST[known.id] ?? known.id);
18
+ }
19
+
20
+ // src/blocks/code/prism/prism-tokens.ts
21
+ var WORD = /^[a-z][a-z0-9-]*$/;
22
+ function className(token) {
23
+ const alias = typeof token.alias === "string" ? token.alias : token.alias?.[0];
24
+ const name = alias ?? token.type;
25
+ return WORD.test(name) ? `quoin-tok-${name}` : void 0;
26
+ }
27
+ function pushText(lines, text, drawn) {
28
+ text.split("\n").forEach((part, index) => {
29
+ if (index > 0) lines.push([]);
30
+ if (part === "") return;
31
+ lines[lines.length - 1].push(drawn === void 0 ? { text: part } : { text: part, className: drawn });
32
+ });
33
+ }
34
+ function walk(node, drawn, lines) {
35
+ if (typeof node === "string") return pushText(lines, node, drawn);
36
+ if (Array.isArray(node)) return node.forEach((child) => walk(child, drawn, lines));
37
+ const token = node;
38
+ walk(token.content, className(token) ?? drawn, lines);
39
+ }
40
+ function codeLines(nodes) {
41
+ const lines = [[]];
42
+ nodes.forEach((node) => walk(node, void 0, lines));
43
+ return lines;
44
+ }
45
+
46
+ // src/blocks/code/prism/prism-highlight.ts
47
+ function nodesOf(tokenize, code, grammar) {
48
+ try {
49
+ return tokenize(code, grammar);
50
+ } catch {
51
+ return null;
52
+ }
53
+ }
54
+ function highlightWith(tokenize, code, language) {
55
+ const grammar = grammarName(language);
56
+ const nodes = grammar === void 0 ? null : nodesOf(tokenize, code, grammar);
57
+ return codeLines(nodes ?? [code]);
58
+ }
59
+
60
+ // src/blocks/code/prism/prism-source.ts
61
+ async function importTokenize() {
62
+ const globals = globalThis;
63
+ const theirs = globals.Prism;
64
+ globals.Prism = { manual: true };
65
+ try {
66
+ const { tokenize } = await import('./prism-grammars.js');
67
+ return tokenize;
68
+ } finally {
69
+ if (theirs === void 0) delete globals.Prism;
70
+ else globals.Prism = theirs;
71
+ }
72
+ }
73
+ var prismSource = lazyLoad(importTokenize);
74
+
75
+ // src/blocks/code/prism/use-prism-highlighter.ts
76
+ function usePrismHighlighter() {
77
+ const [tokenize, setTokenize] = useState(prismSource.loaded);
78
+ useEffect(() => {
79
+ if (tokenize !== void 0) return;
80
+ let live = true;
81
+ void prismSource.load().then(
82
+ (loaded) => void (live && setTokenize(() => loaded)),
83
+ () => {
84
+ }
85
+ );
86
+ return () => {
87
+ live = false;
88
+ };
89
+ }, [tokenize]);
90
+ return useMemo(
91
+ () => tokenize === void 0 ? void 0 : (code, language) => highlightWith(tokenize, code, language),
92
+ [tokenize]
93
+ );
94
+ }
95
+
96
+ export { usePrismHighlighter };
97
+ //# sourceMappingURL=highlight.js.map
98
+ //# sourceMappingURL=highlight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/blocks/code/prism/grammar-name.ts","../src/blocks/code/prism/prism-tokens.ts","../src/blocks/code/prism/prism-highlight.ts","../src/blocks/code/prism/prism-source.ts","../src/blocks/code/prism/use-prism-highlighter.ts"],"names":[],"mappings":";;;;;;;;;;;AAGA,IAAM,UAAkC,EAAE,YAAY,UAAU,MAAM,UAAU,KAAK,UAAU,OAAO,QAAO;AAGtG,SAAS,YAAY,UAAsC;AAChE,QAAM,MAAM,SAAS,MAAK,CAAE,aAAY;AACxC,MAAI,QAAQ,IAAI,OAAO;AACvB,QAAM,QAAQ,eAAe,KAAK,CAAC,EAAE,IAAI,UAAU,EAAC,OAAQ,OAAO,OAAO,QAAQ,SAAS,GAAG,CAAC;AAC/F,SAAO,UAAU,QAAQ,MAAM,EAAE,KAAK,MAAM;AAC9C;;;ACJA,IAAM,OAAO;AAEb,SAAS,UAAU,OAAuC;AACxD,QAAM,QAAQ,OAAO,MAAM,UAAU,WAAW,MAAM,QAAQ,MAAM,QAAQ,CAAC;AAC7E,QAAM,OAAO,SAAS,MAAM;AAC5B,SAAO,KAAK,KAAK,IAAI,IAAI,aAAa,IAAI,KAAK;AACjD;AAGA,SAAS,SAAS,OAAsB,MAAc,OAAiC;AACrF,OAAK,MAAM,IAAI,EAAE,QAAQ,CAAC,MAAM,UAAU;AACxC,QAAI,QAAQ,GAAG,MAAM,KAAK,EAAE;AAC5B,QAAI,SAAS,IAAI;AACjB,UAAM,MAAM,SAAS,CAAC,EAAE,KAAK,UAAU,SAAY,EAAE,MAAM,SAAS,EAAE,MAAM,MAAM,WAAW,OAAO;AAAA,EACtG,CAAC;AACH;AAEA,SAAS,KAAK,MAAiB,OAA2B,OAA4B;AACpF,MAAI,OAAO,SAAS,iBAAiB,SAAS,OAAO,MAAM,KAAK;AAChE,MAAI,MAAM,QAAQ,IAAI,GAAG,OAAQ,KAA8B,QAAQ,CAAC,UAAU,KAAK,OAAO,OAAO,KAAK,CAAC;AAC3G,QAAM,QAAQ;AACd,OAAK,MAAM,SAAS,UAAU,KAAK,KAAK,OAAO,KAAK;AACtD;AAGO,SAAS,UAAU,OAA4C;AACpE,QAAM,QAAuB,CAAC,EAAE;AAChC,QAAM,QAAQ,CAAC,SAAS,KAAK,MAAM,QAAW,KAAK,CAAC;AACpD,SAAO;AACT;;;AC3BA,SAAS,QAAQ,UAAoB,MAAc,SAAqC;AACtF,MAAI;AACF,WAAO,SAAS,MAAM,OAAO;AAAA,EAC/B,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGO,SAAS,cAAc,UAAoB,MAAc,UAAiC;AAC/F,QAAM,UAAU,YAAY,QAAQ;AACpC,QAAM,QAAQ,YAAY,SAAY,OAAO,QAAQ,UAAU,MAAM,OAAO;AAC5E,SAAO,UAAU,SAAS,CAAC,IAAI,CAAC;AAClC;;;ACTA,eAAe,iBAAoC;AACjD,QAAM,UAAU;AAChB,QAAM,SAAS,QAAQ;AACvB,UAAQ,QAAQ,EAAE,QAAQ,MAAK;AAC/B,MAAI;AACF,UAAM,EAAE,UAAS,GAAI,MAAM,OAAO,qBAAkB;AACpD,WAAO;AAAA,EACT,UAAE;AACA,QAAI,WAAW,QAAW,OAAO,QAAQ;AAAA,iBAC5B,QAAQ;AAAA,EACvB;AACF;AAGO,IAAM,cAAc,SAAS,cAAc;;;ACf3C,SAAS,sBAAmD;AACjE,QAAM,CAAC,UAAU,WAAW,IAAI,SAA+B,YAAY,MAAM;AAEjF,YAAU,MAAM;AACd,QAAI,aAAa,QAAW;AAC5B,QAAI,OAAO;AAEX,SAAK,YAAY,MAAK,CAAE;AAAA,MACtB,CAAC,WAAW,MAAM,QAAQ,YAAY,MAAM,MAAM;AAAA,MAClD,MAAM;AAAA,MAAC;AAAA,KACT;AACA,WAAO,MAAM;AACX,aAAO;AAAA,IACT;AAAA,EACF,GAAG,CAAC,QAAQ,CAAC;AAEb,SAAO;AAAA,IACL,MAAO,aAAa,SAAY,SAAY,CAAC,MAAM,aAAa,cAAc,UAAU,MAAM,QAAQ;AAAA,IACtG,CAAC,QAAQ;AAAA,GACX;AACF","file":"highlight.js"}
package/dist/index.cjs CHANGED
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunk65WK575V_cjs = require('./chunk-65WK575V.cjs');
4
+ var chunkUUSZGUXJ_cjs = require('./chunk-UUSZGUXJ.cjs');
5
5
  var chunkQJ34MOFV_cjs = require('./chunk-QJ34MOFV.cjs');
6
6
  var chunkA6PGQVTR_cjs = require('./chunk-A6PGQVTR.cjs');
7
7
  var chunkVZZPCYA3_cjs = require('./chunk-VZZPCYA3.cjs');
@@ -12,47 +12,47 @@ var chunkWZA5S5EJ_cjs = require('./chunk-WZA5S5EJ.cjs');
12
12
 
13
13
  Object.defineProperty(exports, "BlockCanvas", {
14
14
  enumerable: true,
15
- get: function () { return chunk65WK575V_cjs.BlockCanvas; }
15
+ get: function () { return chunkUUSZGUXJ_cjs.BlockCanvas; }
16
16
  });
17
17
  Object.defineProperty(exports, "FilePickerButton", {
18
18
  enumerable: true,
19
- get: function () { return chunk65WK575V_cjs.FilePickerButton; }
19
+ get: function () { return chunkUUSZGUXJ_cjs.FilePickerButton; }
20
20
  });
21
21
  Object.defineProperty(exports, "QuoinProvider", {
22
22
  enumerable: true,
23
- get: function () { return chunk65WK575V_cjs.QuoinProvider; }
23
+ get: function () { return chunkUUSZGUXJ_cjs.QuoinProvider; }
24
24
  });
25
25
  Object.defineProperty(exports, "UploadField", {
26
26
  enumerable: true,
27
- get: function () { return chunk65WK575V_cjs.UploadField; }
27
+ get: function () { return chunkUUSZGUXJ_cjs.UploadField; }
28
28
  });
29
29
  Object.defineProperty(exports, "coreBlocks", {
30
30
  enumerable: true,
31
- get: function () { return chunk65WK575V_cjs.coreBlocks; }
31
+ get: function () { return chunkUUSZGUXJ_cjs.coreBlocks; }
32
32
  });
33
33
  Object.defineProperty(exports, "englishLabels", {
34
34
  enumerable: true,
35
- get: function () { return chunk65WK575V_cjs.englishLabels; }
35
+ get: function () { return chunkUUSZGUXJ_cjs.englishLabels; }
36
36
  });
37
37
  Object.defineProperty(exports, "formatShortcut", {
38
38
  enumerable: true,
39
- get: function () { return chunk65WK575V_cjs.formatShortcut; }
39
+ get: function () { return chunkUUSZGUXJ_cjs.formatShortcut; }
40
40
  });
41
41
  Object.defineProperty(exports, "resolveLabels", {
42
42
  enumerable: true,
43
- get: function () { return chunk65WK575V_cjs.resolveLabels; }
43
+ get: function () { return chunkUUSZGUXJ_cjs.resolveLabels; }
44
44
  });
45
45
  Object.defineProperty(exports, "useAutosave", {
46
46
  enumerable: true,
47
- get: function () { return chunk65WK575V_cjs.useAutosave; }
47
+ get: function () { return chunkUUSZGUXJ_cjs.useAutosave; }
48
48
  });
49
49
  Object.defineProperty(exports, "useLabels", {
50
50
  enumerable: true,
51
- get: function () { return chunk65WK575V_cjs.useLabels; }
51
+ get: function () { return chunkUUSZGUXJ_cjs.useLabels; }
52
52
  });
53
53
  Object.defineProperty(exports, "useQuoin", {
54
54
  enumerable: true,
55
- get: function () { return chunk65WK575V_cjs.useQuoin; }
55
+ get: function () { return chunkUUSZGUXJ_cjs.useQuoin; }
56
56
  });
57
57
  Object.defineProperty(exports, "BlockShell", {
58
58
  enumerable: true,
@@ -346,5 +346,3 @@ Object.defineProperty(exports, "text", {
346
346
  enumerable: true,
347
347
  get: function () { return chunkWZA5S5EJ_cjs.text; }
348
348
  });
349
- //# sourceMappingURL=index.cjs.map
350
- //# sourceMappingURL=index.cjs.map
package/dist/index.d.cts CHANGED
@@ -1,17 +1,20 @@
1
1
  import * as react from 'react';
2
2
  import { ComponentType } from 'react';
3
- import { A as AnyBlockDefinition, U as UploadFn, C as CodeHighlighter, a as UploadResult } from './registry-DdQaddP1.cjs';
4
- export { B as BlockDefinition, b as BlockEditorProps, c as BlockPreviewProps, e as CodeToken, f as blockByType, d as defineBlock, p as paletteBlocks } from './registry-DdQaddP1.cjs';
3
+ import { C as CodeHighlighter } from './code-highlighter-BQDxhRrv.cjs';
4
+ export { a as CodeToken } from './code-highlighter-BQDxhRrv.cjs';
5
5
  import { Q as QuoinBlock, P as Pos } from './types-CQ8Vw_7N.cjs';
6
6
  export { d as Assoc, c as AtomNode, e as AtomSpec, A as Attrs, B as BlockAttrs, f as BlockContent, g as BlockFlow, h as BlockRangeSelection, i as BlockSpec, C as CodecContext, j as CreatedBlock, k as EngineBlock, E as EngineDoc, I as Inline, l as InlineCodec, m as InlineNode, M as Mark, n as MarkSpec, o as MarkdownExportContext, N as NodeSelection, p as ParseInlineOptions, q as PosMap, S as Schema, b as Selection, r as SerializeInlineOptions, a as Step, s as StepJSON, t as StepResult, T as TextNode, u as TextSelection } from './types-CQ8Vw_7N.cjs';
7
7
  import { E as Extension, a as Editor, c as EditorState, b as Command } from './types-DXF9p4qV.cjs';
8
8
  export { A as Align, B as BlockStructureOptions, e as BoundCommands, f as Chain, C as CommandFactories, g as CoreCommands, h as CoreExtensionOptions, i as DOMParserLike, D as Decoration, j as EditorOptions, F as FromHTMLOptions, I as InputRule, k as InputRuleContext, l as InputRuleRange, m as InsertTextOptions, K as KeyLike, M as MarkdownOptions, n as PasteRule, P as PluginKey, d as PluginSpec, S as Slice, o as TextStats, T as Transaction, p as TransactionOrigin, q as applyTransaction, r as coreExtensions, s as createEditor, t as createPluginKey, u as createState, v as fromHTML, w as getPluginState, x as insertBlockAfter, y as insertText, z as insertTextWithRules, G as keyName, H as normalizeKey, J as setBlockType, L as toggleMark } from './types-DXF9p4qV.cjs';
9
9
  import { PALETTE } from './engine.cjs';
10
- export { AttrsPatch, BlockChange, BlockCodec, BlockDiff, FromMarkdownOptions, InlineChange, SchemaInput, ToMarkdownOptions, addMarkStep, atom, blockInputRules, blockRangeSelection, coreBlockSpecs, countDoc, countText, createBlockCodec, createSchema, defineExtension, diffBlocks, diffInline, fromMarkdown, insertBlocksStep, joinBlocksStep, markInputRules, moveBlocksStep, nodeSelection, normalizeInline, parseInline, redo, removeBlocksStep, removeMarkStep, replaceBlockStep, replaceDocStep, replaceInlineStep, sanitizeHref, serializeInline, setAttrsStep, setIndentStep, splitBlockStep, stepFromJSON, text, textSelection, toMarkdown, toPlainText, typographyRules, undo } from './engine.cjs';
10
+ export { AttrsPatch, BlockChange, BlockCodec, BlockDiff, FromMarkdownOptions, InlineChange, SchemaInput, addMarkStep, atom, blockInputRules, blockRangeSelection, coreBlockSpecs, countDoc, countText, createBlockCodec, createSchema, defineExtension, diffBlocks, diffInline, fromMarkdown, insertBlocksStep, joinBlocksStep, markInputRules, moveBlocksStep, nodeSelection, normalizeInline, parseInline, redo, removeBlocksStep, removeMarkStep, replaceBlockStep, replaceDocStep, replaceInlineStep, sanitizeHref, serializeInline, setAttrsStep, setIndentStep, splitBlockStep, stepFromJSON, text, textSelection, toPlainText, typographyRules, undo } from './engine.cjs';
11
+ import { A as AnyBlockDefinition, U as UploadFn, a as UploadResult } from './registry-DZ8LIGt5.cjs';
12
+ export { B as BlockDefinition, b as BlockEditorProps, c as BlockPreviewProps, e as blockByType, d as defineBlock, p as paletteBlocks } from './registry-DZ8LIGt5.cjs';
11
13
  import { V as ViewController, R as RenderOptions } from './view-controller-BfVSNZYZ.cjs';
12
14
  export { A as AtomRenderer, K as KeyInterceptor, a as ViewControllerOptions, W as WidgetRenderer, h as hostKey } from './view-controller-BfVSNZYZ.cjs';
13
15
  import { BlockRenderer } from './headless.cjs';
14
16
  export { BlockLabel, BlockPlaceholder, BlockRenderProps, BlockShell, DomMap, DomPoint, EditableRegion, EditableRegionProps, EditorView, EditorViewProps, SelectionSink, UseQuoinEditorOptions, VoidBlockFallback, caretFromPoint, defaultRenderers, domMapOf, isCrossSelection, renderInline, useEditorState, useQuoinEditor, useViewController } from './headless.cjs';
17
+ export { T as ToMarkdownOptions, t as toMarkdown } from './to-markdown-CFPMbbiX.cjs';
15
18
  export { E as EmbedProvider, a as EmbedUrl } from './embed-provider-jXwlRmnp.cjs';
16
19
  export { H as HTMLOptions, t as toHTML } from './to-html-1oD-CDle.cjs';
17
20
 
package/dist/index.d.ts CHANGED
@@ -1,17 +1,20 @@
1
1
  import * as react from 'react';
2
2
  import { ComponentType } from 'react';
3
- import { A as AnyBlockDefinition, U as UploadFn, C as CodeHighlighter, a as UploadResult } from './registry-DdQaddP1.js';
4
- export { B as BlockDefinition, b as BlockEditorProps, c as BlockPreviewProps, e as CodeToken, f as blockByType, d as defineBlock, p as paletteBlocks } from './registry-DdQaddP1.js';
3
+ import { C as CodeHighlighter } from './code-highlighter-BQDxhRrv.js';
4
+ export { a as CodeToken } from './code-highlighter-BQDxhRrv.js';
5
5
  import { Q as QuoinBlock, P as Pos } from './types-CQ8Vw_7N.js';
6
6
  export { d as Assoc, c as AtomNode, e as AtomSpec, A as Attrs, B as BlockAttrs, f as BlockContent, g as BlockFlow, h as BlockRangeSelection, i as BlockSpec, C as CodecContext, j as CreatedBlock, k as EngineBlock, E as EngineDoc, I as Inline, l as InlineCodec, m as InlineNode, M as Mark, n as MarkSpec, o as MarkdownExportContext, N as NodeSelection, p as ParseInlineOptions, q as PosMap, S as Schema, b as Selection, r as SerializeInlineOptions, a as Step, s as StepJSON, t as StepResult, T as TextNode, u as TextSelection } from './types-CQ8Vw_7N.js';
7
7
  import { E as Extension, a as Editor, c as EditorState, b as Command } from './types-BjLcmV00.js';
8
8
  export { A as Align, B as BlockStructureOptions, e as BoundCommands, f as Chain, C as CommandFactories, g as CoreCommands, h as CoreExtensionOptions, i as DOMParserLike, D as Decoration, j as EditorOptions, F as FromHTMLOptions, I as InputRule, k as InputRuleContext, l as InputRuleRange, m as InsertTextOptions, K as KeyLike, M as MarkdownOptions, n as PasteRule, P as PluginKey, d as PluginSpec, S as Slice, o as TextStats, T as Transaction, p as TransactionOrigin, q as applyTransaction, r as coreExtensions, s as createEditor, t as createPluginKey, u as createState, v as fromHTML, w as getPluginState, x as insertBlockAfter, y as insertText, z as insertTextWithRules, G as keyName, H as normalizeKey, J as setBlockType, L as toggleMark } from './types-BjLcmV00.js';
9
9
  import { PALETTE } from './engine.js';
10
- export { AttrsPatch, BlockChange, BlockCodec, BlockDiff, FromMarkdownOptions, InlineChange, SchemaInput, ToMarkdownOptions, addMarkStep, atom, blockInputRules, blockRangeSelection, coreBlockSpecs, countDoc, countText, createBlockCodec, createSchema, defineExtension, diffBlocks, diffInline, fromMarkdown, insertBlocksStep, joinBlocksStep, markInputRules, moveBlocksStep, nodeSelection, normalizeInline, parseInline, redo, removeBlocksStep, removeMarkStep, replaceBlockStep, replaceDocStep, replaceInlineStep, sanitizeHref, serializeInline, setAttrsStep, setIndentStep, splitBlockStep, stepFromJSON, text, textSelection, toMarkdown, toPlainText, typographyRules, undo } from './engine.js';
10
+ export { AttrsPatch, BlockChange, BlockCodec, BlockDiff, FromMarkdownOptions, InlineChange, SchemaInput, addMarkStep, atom, blockInputRules, blockRangeSelection, coreBlockSpecs, countDoc, countText, createBlockCodec, createSchema, defineExtension, diffBlocks, diffInline, fromMarkdown, insertBlocksStep, joinBlocksStep, markInputRules, moveBlocksStep, nodeSelection, normalizeInline, parseInline, redo, removeBlocksStep, removeMarkStep, replaceBlockStep, replaceDocStep, replaceInlineStep, sanitizeHref, serializeInline, setAttrsStep, setIndentStep, splitBlockStep, stepFromJSON, text, textSelection, toPlainText, typographyRules, undo } from './engine.js';
11
+ import { A as AnyBlockDefinition, U as UploadFn, a as UploadResult } from './registry-DZ8LIGt5.js';
12
+ export { B as BlockDefinition, b as BlockEditorProps, c as BlockPreviewProps, e as blockByType, d as defineBlock, p as paletteBlocks } from './registry-DZ8LIGt5.js';
11
13
  import { V as ViewController, R as RenderOptions } from './view-controller-p-2x3J7Y.js';
12
14
  export { A as AtomRenderer, K as KeyInterceptor, a as ViewControllerOptions, W as WidgetRenderer, h as hostKey } from './view-controller-p-2x3J7Y.js';
13
15
  import { BlockRenderer } from './headless.js';
14
16
  export { BlockLabel, BlockPlaceholder, BlockRenderProps, BlockShell, DomMap, DomPoint, EditableRegion, EditableRegionProps, EditorView, EditorViewProps, SelectionSink, UseQuoinEditorOptions, VoidBlockFallback, caretFromPoint, defaultRenderers, domMapOf, isCrossSelection, renderInline, useEditorState, useQuoinEditor, useViewController } from './headless.js';
17
+ export { T as ToMarkdownOptions, t as toMarkdown } from './to-markdown-BVOzhgVM.js';
15
18
  export { E as EmbedProvider, a as EmbedUrl } from './embed-provider-jXwlRmnp.js';
16
19
  export { H as HTMLOptions, t as toHTML } from './to-html-CLRBCX0I.js';
17
20
 
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- export { BlockCanvas, FilePickerButton, QuoinProvider, UploadField, coreBlocks, englishLabels, formatShortcut, resolveLabels, useAutosave, useLabels, useQuoin } from './chunk-MQTLZTIM.js';
2
+ export { BlockCanvas, FilePickerButton, QuoinProvider, UploadField, coreBlocks, englishLabels, formatShortcut, resolveLabels, useAutosave, useLabels, useQuoin } from './chunk-32OZ2WM2.js';
3
3
  export { BlockShell, EditableRegion, EditorView, SelectionSink, ViewController, VoidBlockFallback, caretFromPoint, defaultRenderers, domMapOf, hostKey, isCrossSelection, renderInline, useEditorState, useQuoinEditor, useViewController } from './chunk-XFEDJEJF.js';
4
4
  export { blockByType, defineBlock, paletteBlocks } from './chunk-HDJ653LM.js';
5
5
  export { Transaction, addMarkStep, applyTransaction, blockInputRules, blockRangeSelection, coreExtensions, countDoc, countText, createEditor, createPluginKey, createState, defineExtension, fromHTML, getPluginState, insertBlockAfter, insertBlocksStep, insertText, insertTextWithRules, joinBlocksStep, keyName, markInputRules, moveBlocksStep, nodeSelection, normalizeKey, redo, removeBlocksStep, removeMarkStep, replaceBlockStep, replaceDocStep, replaceInlineStep, setAttrsStep, setBlockType, setIndentStep, splitBlockStep, stepFromJSON, textSelection, toHTML, toMarkdown, toPlainText, toggleMark, typographyRules, undo } from './chunk-OS2O6IKX.js';
package/dist/math.cjs CHANGED
@@ -1,10 +1,10 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunk3NVFHJFS_cjs = require('./chunk-3NVFHJFS.cjs');
5
- require('./chunk-XZ4NC3Q7.cjs');
4
+ var chunkJVSYEENH_cjs = require('./chunk-JVSYEENH.cjs');
6
5
  require('./chunk-AZF7B2AE.cjs');
7
- require('./chunk-65WK575V.cjs');
6
+ require('./chunk-XZ4NC3Q7.cjs');
7
+ require('./chunk-UUSZGUXJ.cjs');
8
8
  require('./chunk-QJ34MOFV.cjs');
9
9
  require('./chunk-A6PGQVTR.cjs');
10
10
  require('./chunk-VZZPCYA3.cjs');
@@ -15,11 +15,9 @@ require('./chunk-WZA5S5EJ.cjs');
15
15
 
16
16
  Object.defineProperty(exports, "englishMathLabels", {
17
17
  enumerable: true,
18
- get: function () { return chunk3NVFHJFS_cjs.englishMathLabels; }
18
+ get: function () { return chunkJVSYEENH_cjs.englishMathLabels; }
19
19
  });
20
20
  Object.defineProperty(exports, "mathExtension", {
21
21
  enumerable: true,
22
- get: function () { return chunk3NVFHJFS_cjs.mathExtension; }
22
+ get: function () { return chunkJVSYEENH_cjs.mathExtension; }
23
23
  });
24
- //# sourceMappingURL=math.cjs.map
25
- //# sourceMappingURL=math.cjs.map
package/dist/math.js CHANGED
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- export { englishMathLabels, mathExtension } from './chunk-KRLHGVJV.js';
3
- import './chunk-AD3NY7NA.js';
2
+ export { englishMathLabels, mathExtension } from './chunk-KFYJW7W5.js';
4
3
  import './chunk-QOIVLYMW.js';
5
- import './chunk-MQTLZTIM.js';
4
+ import './chunk-AD3NY7NA.js';
5
+ import './chunk-32OZ2WM2.js';
6
6
  import './chunk-XFEDJEJF.js';
7
7
  import './chunk-HDJ653LM.js';
8
8
  import './chunk-OS2O6IKX.js';
package/dist/mention.cjs CHANGED
@@ -1,10 +1,10 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkH5FM6I5W_cjs = require('./chunk-H5FM6I5W.cjs');
4
+ var chunk46JH34SR_cjs = require('./chunk-46JH34SR.cjs');
5
5
  require('./chunk-H3C3MJW5.cjs');
6
6
  require('./chunk-AZF7B2AE.cjs');
7
- require('./chunk-65WK575V.cjs');
7
+ require('./chunk-UUSZGUXJ.cjs');
8
8
  require('./chunk-QJ34MOFV.cjs');
9
9
  require('./chunk-A6PGQVTR.cjs');
10
10
  require('./chunk-VZZPCYA3.cjs');
@@ -15,11 +15,9 @@ require('./chunk-WZA5S5EJ.cjs');
15
15
 
16
16
  Object.defineProperty(exports, "englishMentionLabels", {
17
17
  enumerable: true,
18
- get: function () { return chunkH5FM6I5W_cjs.englishMentionLabels; }
18
+ get: function () { return chunk46JH34SR_cjs.englishMentionLabels; }
19
19
  });
20
20
  Object.defineProperty(exports, "mentionExtension", {
21
21
  enumerable: true,
22
- get: function () { return chunkH5FM6I5W_cjs.mentionExtension; }
22
+ get: function () { return chunk46JH34SR_cjs.mentionExtension; }
23
23
  });
24
- //# sourceMappingURL=mention.cjs.map
25
- //# sourceMappingURL=mention.cjs.map
package/dist/mention.js CHANGED
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- export { englishMentionLabels, mentionExtension } from './chunk-AC4AFDTI.js';
2
+ export { englishMentionLabels, mentionExtension } from './chunk-B5OMWOVI.js';
3
3
  import './chunk-GHNQKJMD.js';
4
4
  import './chunk-QOIVLYMW.js';
5
- import './chunk-MQTLZTIM.js';
5
+ import './chunk-32OZ2WM2.js';
6
6
  import './chunk-XFEDJEJF.js';
7
7
  import './chunk-HDJ653LM.js';
8
8
  import './chunk-OS2O6IKX.js';
package/dist/presence.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  var chunkLE5XMIFJ_cjs = require('./chunk-LE5XMIFJ.cjs');
5
5
  var chunkQR2NIDUK_cjs = require('./chunk-QR2NIDUK.cjs');
6
- require('./chunk-65WK575V.cjs');
6
+ require('./chunk-UUSZGUXJ.cjs');
7
7
  var chunkQJ34MOFV_cjs = require('./chunk-QJ34MOFV.cjs');
8
8
  var chunkA6PGQVTR_cjs = require('./chunk-A6PGQVTR.cjs');
9
9
  var chunkWN7BZDNH_cjs = require('./chunk-WN7BZDNH.cjs');
@@ -522,5 +522,3 @@ function presenceExtension(collaboration, options = {}) {
522
522
 
523
523
  exports.englishPresenceLabels = englishPresenceLabels;
524
524
  exports.presenceExtension = presenceExtension;
525
- //# sourceMappingURL=presence.cjs.map
526
- //# sourceMappingURL=presence.cjs.map
package/dist/presence.js CHANGED
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { clipBoxes } from './chunk-MQUCCSWG.js';
3
3
  import { ownsNode, watchCanvasFocus } from './chunk-R7MYG522.js';
4
- import './chunk-MQTLZTIM.js';
4
+ import './chunk-32OZ2WM2.js';
5
5
  import { useEditorState, useIsomorphicLayoutEffect, listen, domMapOf } from './chunk-XFEDJEJF.js';
6
6
  import { devWarn } from './chunk-HDJ653LM.js';
7
7
  import { sharedOf, sharedChange, absolute, relative } from './chunk-G25FMFEZ.js';
@@ -0,0 +1,56 @@
1
+ 'use strict';
2
+
3
+ var Prism = require('prismjs/components/prism-core.js');
4
+ require('prismjs/components/prism-bash.js');
5
+ require('prismjs/components/prism-clike.js');
6
+ require('prismjs/components/prism-c.js');
7
+ require('prismjs/components/prism-cpp.js');
8
+ require('prismjs/components/prism-csharp.js');
9
+ require('prismjs/components/prism-css.js');
10
+ require('prismjs/components/prism-dart.js');
11
+ require('prismjs/components/prism-diff.js');
12
+ require('prismjs/components/prism-docker.js');
13
+ require('prismjs/components/prism-elixir.js');
14
+ require('prismjs/components/prism-go.js');
15
+ require('prismjs/components/prism-graphql.js');
16
+ require('prismjs/components/prism-haskell.js');
17
+ require('prismjs/components/prism-markup.js');
18
+ require('prismjs/components/prism-java.js');
19
+ require('prismjs/components/prism-javascript.js');
20
+ require('prismjs/components/prism-json.js');
21
+ require('prismjs/components/prism-jsx.js');
22
+ require('prismjs/components/prism-kotlin.js');
23
+ require('prismjs/components/prism-latex.js');
24
+ require('prismjs/components/prism-lua.js');
25
+ require('prismjs/components/prism-makefile.js');
26
+ require('prismjs/components/prism-markdown.js');
27
+ require('prismjs/components/prism-matlab.js');
28
+ require('prismjs/components/prism-perl.js');
29
+ require('prismjs/components/prism-markup-templating.js');
30
+ require('prismjs/components/prism-php.js');
31
+ require('prismjs/components/prism-powershell.js');
32
+ require('prismjs/components/prism-python.js');
33
+ require('prismjs/components/prism-r.js');
34
+ require('prismjs/components/prism-ruby.js');
35
+ require('prismjs/components/prism-rust.js');
36
+ require('prismjs/components/prism-scala.js');
37
+ require('prismjs/components/prism-scss.js');
38
+ require('prismjs/components/prism-sql.js');
39
+ require('prismjs/components/prism-swift.js');
40
+ require('prismjs/components/prism-toml.js');
41
+ require('prismjs/components/prism-typescript.js');
42
+ require('prismjs/components/prism-tsx.js');
43
+ require('prismjs/components/prism-yaml.js');
44
+
45
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
46
+
47
+ var Prism__default = /*#__PURE__*/_interopDefault(Prism);
48
+
49
+ // src/blocks/code/prism/prism-grammars.ts
50
+ var tokenize = (code, grammar) => {
51
+ const language = Prism__default.default.languages[grammar];
52
+ if (typeof language !== "object" || language === null) return null;
53
+ return Prism__default.default.tokenize(code, language);
54
+ };
55
+
56
+ exports.tokenize = tokenize;
@@ -0,0 +1,52 @@
1
+ import Prism from 'prismjs/components/prism-core.js';
2
+ import 'prismjs/components/prism-bash.js';
3
+ import 'prismjs/components/prism-clike.js';
4
+ import 'prismjs/components/prism-c.js';
5
+ import 'prismjs/components/prism-cpp.js';
6
+ import 'prismjs/components/prism-csharp.js';
7
+ import 'prismjs/components/prism-css.js';
8
+ import 'prismjs/components/prism-dart.js';
9
+ import 'prismjs/components/prism-diff.js';
10
+ import 'prismjs/components/prism-docker.js';
11
+ import 'prismjs/components/prism-elixir.js';
12
+ import 'prismjs/components/prism-go.js';
13
+ import 'prismjs/components/prism-graphql.js';
14
+ import 'prismjs/components/prism-haskell.js';
15
+ import 'prismjs/components/prism-markup.js';
16
+ import 'prismjs/components/prism-java.js';
17
+ import 'prismjs/components/prism-javascript.js';
18
+ import 'prismjs/components/prism-json.js';
19
+ import 'prismjs/components/prism-jsx.js';
20
+ import 'prismjs/components/prism-kotlin.js';
21
+ import 'prismjs/components/prism-latex.js';
22
+ import 'prismjs/components/prism-lua.js';
23
+ import 'prismjs/components/prism-makefile.js';
24
+ import 'prismjs/components/prism-markdown.js';
25
+ import 'prismjs/components/prism-matlab.js';
26
+ import 'prismjs/components/prism-perl.js';
27
+ import 'prismjs/components/prism-markup-templating.js';
28
+ import 'prismjs/components/prism-php.js';
29
+ import 'prismjs/components/prism-powershell.js';
30
+ import 'prismjs/components/prism-python.js';
31
+ import 'prismjs/components/prism-r.js';
32
+ import 'prismjs/components/prism-ruby.js';
33
+ import 'prismjs/components/prism-rust.js';
34
+ import 'prismjs/components/prism-scala.js';
35
+ import 'prismjs/components/prism-scss.js';
36
+ import 'prismjs/components/prism-sql.js';
37
+ import 'prismjs/components/prism-swift.js';
38
+ import 'prismjs/components/prism-toml.js';
39
+ import 'prismjs/components/prism-typescript.js';
40
+ import 'prismjs/components/prism-tsx.js';
41
+ import 'prismjs/components/prism-yaml.js';
42
+
43
+ // src/blocks/code/prism/prism-grammars.ts
44
+ var tokenize = (code, grammar) => {
45
+ const language = Prism.languages[grammar];
46
+ if (typeof language !== "object" || language === null) return null;
47
+ return Prism.tokenize(code, language);
48
+ };
49
+
50
+ export { tokenize };
51
+ //# sourceMappingURL=prism-grammars.js.map
52
+ //# sourceMappingURL=prism-grammars.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/blocks/code/prism/prism-grammars.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CO,IAAM,WAAqB,CAAC,MAAM,YAAY;AACnD,QAAM,WAAW,MAAM,UAAU,OAAO;AACxC,MAAI,OAAO,aAAa,YAAY,aAAa,MAAM,OAAO;AAC9D,SAAO,MAAM,SAAS,MAAM,QAAQ;AACtC","file":"prism-grammars.js"}
@@ -1,18 +1,5 @@
1
1
  import { ComponentType } from 'react';
2
2
 
3
- /** A run of code drawn in one colour or class. Its text is drawn as text, never parsed as markup. */
4
- type CodeToken = {
5
- text: string;
6
- color?: string;
7
- className?: string;
8
- };
9
- /**
10
- * Highlights the code of a code block: one array of tokens per line of `code`, split on `\n`, whose texts put together
11
- * spell the line exactly, since the tokens are drawn under the text the writer types into. Wrap any highlighter, such as
12
- * Shiki, Prism or highlight.js, in one. `language` is the block's language as stored, which may be an alias such as `ts`.
13
- */
14
- type CodeHighlighter = (code: string, language: string) => CodeToken[][];
15
-
16
3
  /** What your upload function resolves with so Quoin can reference the stored file later. */
17
4
  type UploadResult = {
18
5
  /** Opaque key your storage uses to find the file again. */
@@ -141,5 +128,5 @@ declare function blockByType(definitions: readonly AnyBlockDefinition[], type: s
141
128
  /** The definitions offered in the slash palette, in registration order, one per type, with the last registration of a type winning. */
142
129
  declare function paletteBlocks(definitions: AnyBlockDefinition[]): AnyBlockDefinition[];
143
130
 
144
- export { defineBlock as d, blockByType as f, paletteBlocks as p };
145
- export type { AnyBlockDefinition as A, BlockDefinition as B, CodeHighlighter as C, UploadFn as U, UploadResult as a, BlockEditorProps as b, BlockPreviewProps as c, CodeToken as e };
131
+ export { defineBlock as d, blockByType as e, paletteBlocks as p };
132
+ export type { AnyBlockDefinition as A, BlockDefinition as B, UploadFn as U, UploadResult as a, BlockEditorProps as b, BlockPreviewProps as c };
@@ -1,18 +1,5 @@
1
1
  import { ComponentType } from 'react';
2
2
 
3
- /** A run of code drawn in one colour or class. Its text is drawn as text, never parsed as markup. */
4
- type CodeToken = {
5
- text: string;
6
- color?: string;
7
- className?: string;
8
- };
9
- /**
10
- * Highlights the code of a code block: one array of tokens per line of `code`, split on `\n`, whose texts put together
11
- * spell the line exactly, since the tokens are drawn under the text the writer types into. Wrap any highlighter, such as
12
- * Shiki, Prism or highlight.js, in one. `language` is the block's language as stored, which may be an alias such as `ts`.
13
- */
14
- type CodeHighlighter = (code: string, language: string) => CodeToken[][];
15
-
16
3
  /** What your upload function resolves with so Quoin can reference the stored file later. */
17
4
  type UploadResult = {
18
5
  /** Opaque key your storage uses to find the file again. */
@@ -141,5 +128,5 @@ declare function blockByType(definitions: readonly AnyBlockDefinition[], type: s
141
128
  /** The definitions offered in the slash palette, in registration order, one per type, with the last registration of a type winning. */
142
129
  declare function paletteBlocks(definitions: AnyBlockDefinition[]): AnyBlockDefinition[];
143
130
 
144
- export { defineBlock as d, blockByType as f, paletteBlocks as p };
145
- export type { AnyBlockDefinition as A, BlockDefinition as B, CodeHighlighter as C, UploadFn as U, UploadResult as a, BlockEditorProps as b, BlockPreviewProps as c, CodeToken as e };
131
+ export { defineBlock as d, blockByType as e, paletteBlocks as p };
132
+ export type { AnyBlockDefinition as A, BlockDefinition as B, UploadFn as U, UploadResult as a, BlockEditorProps as b, BlockPreviewProps as c };
@@ -0,0 +1,97 @@
1
+ 'use client';
2
+ 'use strict';
3
+
4
+ require('./chunk-UUSZGUXJ.cjs');
5
+ require('./chunk-QJ34MOFV.cjs');
6
+ require('./chunk-A6PGQVTR.cjs');
7
+ var chunkVZZPCYA3_cjs = require('./chunk-VZZPCYA3.cjs');
8
+ require('./chunk-BM2GRZNM.cjs');
9
+ require('./chunk-WZA5S5EJ.cjs');
10
+ var react = require('react');
11
+ var jsxRuntime = require('react/jsx-runtime');
12
+
13
+ // src/extensions/source/source-labels.ts
14
+ var englishSourceLabels = { region: "Markdown source" };
15
+ function resolveSourceLabels(overrides) {
16
+ if (overrides === void 0) return englishSourceLabels;
17
+ const given = Object.entries(overrides).filter(([, value]) => value !== void 0);
18
+ return given.length === 0 ? englishSourceLabels : { ...englishSourceLabels, ...Object.fromEntries(given) };
19
+ }
20
+
21
+ // src/extensions/source/source-lines.ts
22
+ var lineCount = (text) => text.split("\n").length - 1;
23
+ var withoutTrailingNewlines = (text) => text.replace(/\n+$/, "");
24
+ function blockLines(blocks, index, options) {
25
+ if (!Number.isInteger(index) || index < 0 || index >= blocks.length) return null;
26
+ const before = withoutTrailingNewlines(chunkVZZPCYA3_cjs.toMarkdown(blocks.slice(0, index), options));
27
+ const through = chunkVZZPCYA3_cjs.toMarkdown(blocks.slice(0, index + 1), options);
28
+ const separator = /^\n*/.exec(through.slice(before.length))?.[0].length ?? 0;
29
+ return { from: lineCount(before) + separator, to: lineCount(withoutTrailingNewlines(through)) };
30
+ }
31
+
32
+ // src/extensions/source/use-editor-source.ts
33
+ function sourceOf(editor, given) {
34
+ const blocks = editor.getBlocks();
35
+ const options = { ...given, schema: editor.state.schema };
36
+ const [id] = chunkVZZPCYA3_cjs.selectedBlockIds(editor.state.doc, editor.state.selection);
37
+ const index = id === void 0 ? -1 : blocks.findIndex((block) => block.id === id);
38
+ return { markdown: chunkVZZPCYA3_cjs.toMarkdown(blocks, options), active: blockLines(blocks, index, options) };
39
+ }
40
+ var sameSource = (a, b) => a.markdown === b.markdown && a.active?.from === b.active?.from && a.active?.to === b.active?.to;
41
+ function useEditorSource(controller, options = {}) {
42
+ const { comments, lossless, resolveAssetUrl } = options;
43
+ const settings = react.useMemo(
44
+ () => ({ comments, lossless, resolveAssetUrl }),
45
+ [comments, lossless, resolveAssetUrl]
46
+ );
47
+ const [source, setSource] = react.useState(() => sourceOf(controller.editor, settings));
48
+ react.useEffect(() => {
49
+ const { editor } = controller;
50
+ let frame = 0;
51
+ const reread = () => {
52
+ frame = 0;
53
+ const next = sourceOf(editor, settings);
54
+ setSource((current) => sameSource(current, next) ? current : next);
55
+ };
56
+ reread();
57
+ const stop = editor.subscribe(() => {
58
+ if (frame === 0) frame = requestAnimationFrame(reread);
59
+ });
60
+ return () => {
61
+ stop();
62
+ cancelAnimationFrame(frame);
63
+ };
64
+ }, [controller, settings]);
65
+ return source;
66
+ }
67
+ function QuoinSource({ controller, options, labels: given, className, ...props }) {
68
+ const labels = react.useMemo(() => resolveSourceLabels(given), [given]);
69
+ const { markdown, active } = useEditorSource(controller, options);
70
+ const lines = react.useMemo(() => markdown === "" ? [] : markdown.replace(/\n$/, "").split("\n"), [markdown]);
71
+ return /* @__PURE__ */ jsxRuntime.jsx(
72
+ "div",
73
+ {
74
+ ...props,
75
+ role: "region",
76
+ "aria-label": labels.region,
77
+ tabIndex: 0,
78
+ className: className === void 0 ? "quoin-source" : `quoin-source ${className}`,
79
+ children: /* @__PURE__ */ jsxRuntime.jsx("pre", { className: "quoin-source-text", children: lines.map((line, index) => /* @__PURE__ */ jsxRuntime.jsxs(react.Fragment, { children: [
80
+ /* @__PURE__ */ jsxRuntime.jsx(
81
+ "span",
82
+ {
83
+ "data-quoin-source-line": index,
84
+ className: active && index >= active.from && index <= active.to ? "quoin-source-active" : void 0,
85
+ children: line
86
+ }
87
+ ),
88
+ "\n"
89
+ ] }, index)) })
90
+ }
91
+ );
92
+ }
93
+
94
+ exports.QuoinSource = QuoinSource;
95
+ exports.blockLines = blockLines;
96
+ exports.englishSourceLabels = englishSourceLabels;
97
+ exports.useEditorSource = useEditorSource;