quoin-editor 0.4.2 → 1.0.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 (231) hide show
  1. package/CHANGELOG.md +205 -0
  2. package/MIGRATION.md +233 -0
  3. package/README.md +78 -716
  4. package/dist/ai.cjs +1107 -0
  5. package/dist/ai.cjs.map +1 -0
  6. package/dist/ai.d.cts +68 -0
  7. package/dist/ai.d.ts +68 -0
  8. package/dist/ai.js +1107 -0
  9. package/dist/ai.js.map +1 -0
  10. package/dist/catalogue.cjs +59 -0
  11. package/dist/catalogue.cjs.map +1 -0
  12. package/dist/catalogue.d.cts +39 -0
  13. package/dist/catalogue.d.ts +39 -0
  14. package/dist/catalogue.js +59 -0
  15. package/dist/catalogue.js.map +1 -0
  16. package/dist/chunk-2QCRZ7OL.cjs +319 -0
  17. package/dist/chunk-2QCRZ7OL.cjs.map +1 -0
  18. package/dist/chunk-2VDK27IF.cjs +6666 -0
  19. package/dist/chunk-2VDK27IF.cjs.map +1 -0
  20. package/dist/chunk-47MLKSI2.js +326 -0
  21. package/dist/chunk-47MLKSI2.js.map +1 -0
  22. package/dist/chunk-5DNCCN6X.cjs +326 -0
  23. package/dist/chunk-5DNCCN6X.cjs.map +1 -0
  24. package/dist/chunk-AEJXZBVR.cjs +1378 -0
  25. package/dist/chunk-AEJXZBVR.cjs.map +1 -0
  26. package/dist/chunk-CDELOHDY.cjs +239 -0
  27. package/dist/chunk-CDELOHDY.cjs.map +1 -0
  28. package/dist/chunk-E75EHRPA.cjs +175 -0
  29. package/dist/chunk-E75EHRPA.cjs.map +1 -0
  30. package/dist/chunk-EL2OEJQC.cjs +562 -0
  31. package/dist/chunk-EL2OEJQC.cjs.map +1 -0
  32. package/dist/chunk-GLLXHMH2.cjs +25 -0
  33. package/dist/chunk-GLLXHMH2.cjs.map +1 -0
  34. package/dist/chunk-GTTPVJSD.cjs +3286 -0
  35. package/dist/chunk-GTTPVJSD.cjs.map +1 -0
  36. package/dist/chunk-HELJTLNC.cjs +100 -0
  37. package/dist/chunk-HELJTLNC.cjs.map +1 -0
  38. package/dist/chunk-HJIQT3S5.js +4047 -0
  39. package/dist/chunk-HJIQT3S5.js.map +1 -0
  40. package/dist/chunk-HZSSEYJS.cjs +504 -0
  41. package/dist/chunk-HZSSEYJS.cjs.map +1 -0
  42. package/dist/chunk-JDPTZUBW.js +184 -0
  43. package/dist/chunk-JDPTZUBW.js.map +1 -0
  44. package/dist/chunk-JEIFJHEI.js +14 -0
  45. package/dist/chunk-JEIFJHEI.js.map +1 -0
  46. package/dist/chunk-K574XHMM.js +25 -0
  47. package/dist/chunk-K574XHMM.js.map +1 -0
  48. package/dist/chunk-KAVU6T6J.js +249 -0
  49. package/dist/chunk-KAVU6T6J.js.map +1 -0
  50. package/dist/chunk-KXOBZGQO.js +1378 -0
  51. package/dist/chunk-KXOBZGQO.js.map +1 -0
  52. package/dist/chunk-LCQSG4M6.js +3335 -0
  53. package/dist/chunk-LCQSG4M6.js.map +1 -0
  54. package/dist/chunk-MQ2XQ4MX.js +100 -0
  55. package/dist/chunk-MQ2XQ4MX.js.map +1 -0
  56. package/dist/chunk-ND5XJVK2.cjs +3335 -0
  57. package/dist/chunk-ND5XJVK2.cjs.map +1 -0
  58. package/dist/chunk-NNDYYEW5.js +504 -0
  59. package/dist/chunk-NNDYYEW5.js.map +1 -0
  60. package/dist/chunk-NOKWNK2O.js +319 -0
  61. package/dist/chunk-NOKWNK2O.js.map +1 -0
  62. package/dist/chunk-OMOBMXD5.cjs +57 -0
  63. package/dist/chunk-OMOBMXD5.cjs.map +1 -0
  64. package/dist/chunk-PMWCQSQX.js +239 -0
  65. package/dist/chunk-PMWCQSQX.js.map +1 -0
  66. package/dist/chunk-POBM7MGR.js +30 -0
  67. package/dist/chunk-POBM7MGR.js.map +1 -0
  68. package/dist/chunk-PWUEPDA3.cjs +598 -0
  69. package/dist/chunk-PWUEPDA3.cjs.map +1 -0
  70. package/dist/chunk-PZ4GT5JO.cjs +4047 -0
  71. package/dist/chunk-PZ4GT5JO.cjs.map +1 -0
  72. package/dist/chunk-QAW5NH6S.cjs +14 -0
  73. package/dist/chunk-QAW5NH6S.cjs.map +1 -0
  74. package/dist/chunk-RDG4VI6E.cjs +706 -0
  75. package/dist/chunk-RDG4VI6E.cjs.map +1 -0
  76. package/dist/chunk-RUDWMKYX.js +562 -0
  77. package/dist/chunk-RUDWMKYX.js.map +1 -0
  78. package/dist/chunk-SG37UBDO.js +706 -0
  79. package/dist/chunk-SG37UBDO.js.map +1 -0
  80. package/dist/chunk-SLVDAHHK.cjs +30 -0
  81. package/dist/chunk-SLVDAHHK.cjs.map +1 -0
  82. package/dist/chunk-T7SW6OWV.js +598 -0
  83. package/dist/chunk-T7SW6OWV.js.map +1 -0
  84. package/dist/chunk-TC4DARU2.js +175 -0
  85. package/dist/chunk-TC4DARU2.js.map +1 -0
  86. package/dist/chunk-WQHV3MRE.cjs +184 -0
  87. package/dist/chunk-WQHV3MRE.cjs.map +1 -0
  88. package/dist/chunk-WXMYDXPN.cjs +33 -0
  89. package/dist/chunk-WXMYDXPN.cjs.map +1 -0
  90. package/dist/chunk-XEBWC7ZL.js +57 -0
  91. package/dist/chunk-XEBWC7ZL.js.map +1 -0
  92. package/dist/chunk-ZC24WB7Y.cjs +249 -0
  93. package/dist/chunk-ZC24WB7Y.cjs.map +1 -0
  94. package/dist/chunk-ZGZEJCRV.js +6666 -0
  95. package/dist/chunk-ZGZEJCRV.js.map +1 -0
  96. package/dist/chunk-ZHOSSWUM.js +33 -0
  97. package/dist/chunk-ZHOSSWUM.js.map +1 -0
  98. package/dist/chunk-ZS2WA357.js +3286 -0
  99. package/dist/chunk-ZS2WA357.js.map +1 -0
  100. package/dist/comments.cjs +993 -0
  101. package/dist/comments.cjs.map +1 -0
  102. package/dist/comments.d.cts +88 -0
  103. package/dist/comments.d.ts +88 -0
  104. package/dist/comments.js +993 -0
  105. package/dist/comments.js.map +1 -0
  106. package/dist/diff.cjs +343 -0
  107. package/dist/diff.cjs.map +1 -0
  108. package/dist/diff.d.cts +67 -0
  109. package/dist/diff.d.ts +67 -0
  110. package/dist/diff.js +343 -0
  111. package/dist/diff.js.map +1 -0
  112. package/dist/docx.cjs +854 -0
  113. package/dist/docx.cjs.map +1 -0
  114. package/dist/docx.d.cts +27 -0
  115. package/dist/docx.d.ts +27 -0
  116. package/dist/docx.js +854 -0
  117. package/dist/docx.js.map +1 -0
  118. package/dist/embed-provider-jXwlRmnp.d.cts +19 -0
  119. package/dist/embed-provider-jXwlRmnp.d.ts +19 -0
  120. package/dist/embed.cjs +17 -0
  121. package/dist/embed.cjs.map +1 -0
  122. package/dist/embed.d.cts +56 -0
  123. package/dist/embed.d.ts +56 -0
  124. package/dist/embed.js +17 -0
  125. package/dist/embed.js.map +1 -0
  126. package/dist/emoji-data.cjs +1968 -0
  127. package/dist/emoji-data.cjs.map +1 -0
  128. package/dist/emoji-data.js +1968 -0
  129. package/dist/emoji-data.js.map +1 -0
  130. package/dist/emoji-extension-C12gDPm6.d.cts +46 -0
  131. package/dist/emoji-extension-DpQ43HjE.d.ts +46 -0
  132. package/dist/emoji.cjs +18 -0
  133. package/dist/emoji.cjs.map +1 -0
  134. package/dist/emoji.d.cts +31 -0
  135. package/dist/emoji.d.ts +31 -0
  136. package/dist/emoji.js +18 -0
  137. package/dist/emoji.js.map +1 -0
  138. package/dist/engine.cjs +119 -0
  139. package/dist/engine.cjs.map +1 -0
  140. package/dist/engine.d.cts +144 -0
  141. package/dist/engine.d.ts +144 -0
  142. package/dist/engine.js +119 -0
  143. package/dist/engine.js.map +1 -0
  144. package/dist/find-extension-DKqLLSuP.d.ts +41 -0
  145. package/dist/find-extension-_sbZEt3R.d.cts +41 -0
  146. package/dist/find.cjs +20 -0
  147. package/dist/find.cjs.map +1 -0
  148. package/dist/find.d.cts +44 -0
  149. package/dist/find.d.ts +44 -0
  150. package/dist/find.js +20 -0
  151. package/dist/find.js.map +1 -0
  152. package/dist/headless.cjs +151 -518
  153. package/dist/headless.cjs.map +1 -1
  154. package/dist/headless.d.cts +102 -69
  155. package/dist/headless.d.ts +102 -69
  156. package/dist/headless.js +149 -467
  157. package/dist/headless.js.map +1 -1
  158. package/dist/index-CgD72kHB.d.cts +65 -0
  159. package/dist/index-DNYbTK3w.d.ts +65 -0
  160. package/dist/index.cjs +183 -2753
  161. package/dist/index.cjs.map +1 -1
  162. package/dist/index.d.cts +345 -253
  163. package/dist/index.d.ts +345 -253
  164. package/dist/index.js +168 -2696
  165. package/dist/index.js.map +1 -1
  166. package/dist/math.cjs +18 -0
  167. package/dist/math.cjs.map +1 -0
  168. package/dist/math.d.cts +49 -0
  169. package/dist/math.d.ts +49 -0
  170. package/dist/math.js +18 -0
  171. package/dist/math.js.map +1 -0
  172. package/dist/mention.cjs +18 -0
  173. package/dist/mention.cjs.map +1 -0
  174. package/dist/mention.d.cts +50 -0
  175. package/dist/mention.d.ts +50 -0
  176. package/dist/mention.js +18 -0
  177. package/dist/mention.js.map +1 -0
  178. package/dist/presence.cjs +565 -0
  179. package/dist/presence.cjs.map +1 -0
  180. package/dist/presence.d.cts +30 -0
  181. package/dist/presence.d.ts +30 -0
  182. package/dist/presence.js +565 -0
  183. package/dist/presence.js.map +1 -0
  184. package/dist/registry-CWBOSAHm.d.cts +121 -0
  185. package/dist/registry-CWBOSAHm.d.ts +121 -0
  186. package/dist/stats-extension-Bly88uio.d.ts +40 -0
  187. package/dist/stats-extension-CJPijvUb.d.cts +40 -0
  188. package/dist/stats.cjs +19 -0
  189. package/dist/stats.cjs.map +1 -0
  190. package/dist/stats.d.cts +19 -0
  191. package/dist/stats.d.ts +19 -0
  192. package/dist/stats.js +19 -0
  193. package/dist/stats.js.map +1 -0
  194. package/dist/styles.css +1 -1
  195. package/dist/table-extension-BTLxFy2S.d.cts +57 -0
  196. package/dist/table-extension-Dzf4k6hI.d.ts +57 -0
  197. package/dist/table.cjs +50 -0
  198. package/dist/table.cjs.map +1 -0
  199. package/dist/table.d.cts +57 -0
  200. package/dist/table.d.ts +57 -0
  201. package/dist/table.js +50 -0
  202. package/dist/table.js.map +1 -0
  203. package/dist/to-html-C5t7xyaM.d.ts +21 -0
  204. package/dist/to-html-CNCITCln.d.cts +21 -0
  205. package/dist/toc-extension-B3-s6h2x.d.cts +25 -0
  206. package/dist/toc-extension-DWm5alVj.d.ts +25 -0
  207. package/dist/toc.cjs +18 -0
  208. package/dist/toc.cjs.map +1 -0
  209. package/dist/toc.d.cts +24 -0
  210. package/dist/toc.d.ts +24 -0
  211. package/dist/toc.js +18 -0
  212. package/dist/toc.js.map +1 -0
  213. package/dist/types-Cz7XJLaK.d.cts +366 -0
  214. package/dist/types-DULc8wwg.d.cts +120 -0
  215. package/dist/types-DULc8wwg.d.ts +120 -0
  216. package/dist/types-a1CRBlEh.d.ts +366 -0
  217. package/dist/view-controller-DSHw0ltQ.d.cts +118 -0
  218. package/dist/view-controller-UbpzblGl.d.ts +118 -0
  219. package/dist/view.cjs +23 -0
  220. package/dist/view.cjs.map +1 -0
  221. package/dist/view.d.cts +40 -0
  222. package/dist/view.d.ts +40 -0
  223. package/dist/view.js +23 -0
  224. package/dist/view.js.map +1 -0
  225. package/dist/yjs.cjs +1026 -0
  226. package/dist/yjs.cjs.map +1 -0
  227. package/dist/yjs.d.cts +22 -0
  228. package/dist/yjs.d.ts +22 -0
  229. package/dist/yjs.js +1026 -0
  230. package/dist/yjs.js.map +1 -0
  231. package/package.json +217 -18
package/dist/headless.cjs CHANGED
@@ -1,519 +1,152 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
-
30
- // src/headless.ts
31
- var headless_exports = {};
32
- __export(headless_exports, {
33
- applyEdit: () => applyEdit,
34
- caretRect: () => caretRect,
35
- continueList: () => continueList,
36
- formatShortcut: () => formatShortcut,
37
- indentList: () => indentList,
38
- insertCommand: () => insertCommand,
39
- lineAt: () => lineAt,
40
- linkPaste: () => linkPaste,
41
- shouldOpenPalette: () => shouldOpenPalette,
42
- toggleLinePrefix: () => toggleLinePrefix,
43
- useAutoGrow: () => useAutoGrow,
44
- useMarkdownKeymap: () => useMarkdownKeymap,
45
- wrapSelection: () => wrapSelection
46
- });
47
- module.exports = __toCommonJS(headless_exports);
48
-
49
- // src/markdown/edit.ts
50
- function changedSpan(before, after) {
51
- let start = 0;
52
- const shortest = Math.min(before.length, after.length);
53
- while (start < shortest && before[start] === after[start]) start += 1;
54
- let endBefore = before.length;
55
- let endAfter = after.length;
56
- while (endBefore > start && endAfter > start && before[endBefore - 1] === after[endAfter - 1]) {
57
- endBefore -= 1;
58
- endAfter -= 1;
59
- }
60
- return { start, endBefore, replacement: after.slice(start, endAfter) };
61
- }
62
- function writeNatively(el, replacement) {
63
- if (typeof document.execCommand !== "function") return false;
64
- try {
65
- return replacement === "" ? document.execCommand("delete") : document.execCommand("insertText", false, replacement);
66
- } catch {
67
- return false;
68
- }
69
- }
70
- function applyEdit(el, edit, commit) {
71
- if (el.value !== edit.value) {
72
- const { start, endBefore, replacement } = changedSpan(el.value, edit.value);
73
- el.setSelectionRange(start, endBefore);
74
- if (!writeNatively(el, replacement)) {
75
- el.value = edit.value;
76
- }
77
- commit(el.value);
78
- }
79
- el.setSelectionRange(edit.selectionStart, edit.selectionEnd);
80
- }
81
-
82
- // src/markdown/line-at.ts
83
- var FENCE = /^ {0,3}(```|~~~)/;
84
- function lineAt(value, offset) {
85
- const start = value.lastIndexOf("\n", offset - 1) + 1;
86
- const next = value.indexOf("\n", offset);
87
- const end = next === -1 ? value.length : next;
88
- return { start, end, text: value.slice(start, end) };
89
- }
90
- function isFenceDelimiter(text) {
91
- return FENCE.test(text);
92
- }
93
- function insideFence(value, offset) {
94
- const lines = value.slice(0, offset).split("\n");
95
- if (isFenceDelimiter(lines[lines.length - 1])) return true;
96
- let open = false;
97
- for (let i = 0; i < lines.length - 1; i += 1) {
98
- if (isFenceDelimiter(lines[i])) open = !open;
99
- }
100
- return open;
101
- }
102
-
103
- // src/markdown/line-toggles.ts
104
- var EXISTING = /^(\s*)(?:#{1,6} |[-*+] \[[ xX]\] |[-*+] |\d+[.)] )?/;
105
- var PREFIX = {
106
- h1: () => "# ",
107
- h2: () => "## ",
108
- h3: () => "### ",
109
- bullet: () => "- ",
110
- ordered: (index) => `${index + 1}. `
111
- };
112
- var CARRIES = {
113
- h1: /^\s*# /,
114
- h2: /^\s*## /,
115
- h3: /^\s*### /,
116
- bullet: /^\s*[-*+] /,
117
- ordered: /^\s*\d+[.)] /
118
- };
119
- function toggleLinePrefix(kind, value, selectionStart, selectionEnd) {
120
- const first = lineAt(value, selectionStart);
121
- const last = lineAt(value, selectionEnd);
122
- const block = value.slice(first.start, last.end);
123
- const lines = block.split("\n");
124
- let offset = first.start;
125
- const eligible = lines.map((text) => {
126
- const at = offset;
127
- offset += text.length + 1;
128
- return !insideFence(value, at) && !isFenceDelimiter(text);
129
- });
130
- const carried = lines.every((text, i) => !eligible[i] || CARRIES[kind].test(text));
131
- const rewritten = lines.map((text, i) => {
132
- if (!eligible[i]) return text;
133
- const match = EXISTING.exec(text);
134
- const indent = match?.[1] ?? "";
135
- const body = text.slice(match?.[0].length ?? 0);
136
- return carried ? indent + body : indent + PREFIX[kind](i) + body;
137
- });
138
- const joined = rewritten.join("\n");
139
- const next = value.slice(0, first.start) + joined + value.slice(last.end);
140
- if (selectionStart !== selectionEnd) {
141
- return { value: next, selectionStart: first.start, selectionEnd: first.start + joined.length };
142
- }
143
- const caret = Math.max(first.start, selectionStart + (rewritten[0].length - lines[0].length));
144
- return { value: next, selectionStart: caret, selectionEnd: caret };
145
- }
146
-
147
- // src/markdown/list-continuation.ts
148
- var LIST_MARKER = /^(\s*)((?:[-*+] \[[ xX]\] )|(?:[-*+] )|(?:\d+[.)] )|(?:> ))(.*)$/;
149
- var INDENT = " ";
150
- function nextMarker(marker) {
151
- const ordered = /^(\d+)([.)] )$/.exec(marker);
152
- if (ordered) return `${Number(ordered[1]) + 1}${ordered[2]}`;
153
- const task = /^([-*+]) \[[ xX]\] $/.exec(marker);
154
- if (task) return `${task[1]} [ ] `;
155
- return marker;
156
- }
157
- function climbOut(value, line, indent, marker, content) {
158
- const outdent = indent.length >= INDENT.length;
159
- if (outdent) {
160
- const text2 = indent.slice(INDENT.length) + marker + content;
161
- const at2 = line.start + indent.length - INDENT.length + marker.length;
162
- return {
163
- value: value.slice(0, line.start) + text2 + value.slice(line.end),
164
- selectionStart: at2,
165
- selectionEnd: at2
166
- };
167
- }
168
- const leavesList = line.start > 0 && LIST_MARKER.test(lineAt(value, line.start - 1).text);
169
- const text = leavesList ? `
170
- ${content}` : content;
171
- const at = leavesList ? line.start + 1 : line.start;
172
- return {
173
- value: value.slice(0, line.start) + text + value.slice(line.end),
174
- selectionStart: at,
175
- selectionEnd: at
176
- };
177
- }
178
- function continueList(value, caret, key) {
179
- if (insideFence(value, caret)) return null;
180
- const line = lineAt(value, caret);
181
- const match = LIST_MARKER.exec(line.text);
182
- if (!match) return null;
183
- const [, indent, marker, content] = match;
184
- if (key === "Backspace") {
185
- if (caret !== line.start + indent.length + marker.length) return null;
186
- return climbOut(value, line, indent, marker, content);
187
- }
188
- if (content.trim() === "") return climbOut(value, line, indent, marker, content);
189
- const inserted = `
190
- ${indent}${nextMarker(marker)}`;
191
- const at = caret + inserted.length;
192
- return {
193
- value: value.slice(0, caret) + inserted + value.slice(caret),
194
- selectionStart: at,
195
- selectionEnd: at
196
- };
197
- }
198
-
199
- // src/markdown/indent-list.ts
200
- var INDENT2 = " ";
201
- function indentOf(text) {
202
- return /^\s*/.exec(text)?.[0].length ?? 0;
203
- }
204
- function shift(text, direction, cap) {
205
- const current = indentOf(text);
206
- if (direction === -1) return text.slice(Math.min(current, INDENT2.length));
207
- if (cap !== void 0 && current >= cap + INDENT2.length) return text;
208
- return INDENT2 + text;
209
- }
210
- function indentList(value, selectionStart, selectionEnd, direction) {
211
- if (insideFence(value, selectionStart)) return null;
212
- const first = lineAt(value, selectionStart);
213
- const last = lineAt(value, selectionEnd);
214
- const block = value.slice(first.start, last.end);
215
- const lines = block.split("\n");
216
- if (!lines.every((text) => LIST_MARKER.test(text))) return null;
217
- const cap = first.start === 0 ? 0 : indentOf(lineAt(value, first.start - 1).text);
218
- const shifted = lines.map((text, i) => shift(text, direction, i === 0 ? cap : void 0));
219
- if (shifted.every((text, i) => text === lines[i])) return null;
220
- const joined = shifted.join("\n");
221
- return {
222
- value: value.slice(0, first.start) + joined + value.slice(last.end),
223
- selectionStart: selectionStart + (shifted[0].length - lines[0].length),
224
- selectionEnd: selectionEnd + (joined.length - block.length)
225
- };
226
- }
227
-
228
- // src/markdown/wrap-selection.ts
229
- var DELIMITER = {
230
- bold: "**",
231
- italic: "_",
232
- code: "`"
233
- };
234
- var WHOLE_LINK = /^\[([^\]]*)\]\(([^)]*)\)$/;
235
- var BARE_URL = /^https?:\/\/[^\s]+$/;
236
- function unwrap(value, start, end, delimiter) {
237
- const selected = value.slice(start, end);
238
- const width = delimiter.length;
239
- if (selected.length >= 2 * width && selected.startsWith(delimiter) && selected.endsWith(delimiter)) {
240
- const inner = selected.slice(width, selected.length - width);
241
- return {
242
- value: value.slice(0, start) + inner + value.slice(end),
243
- selectionStart: start,
244
- selectionEnd: start + inner.length
245
- };
246
- }
247
- const outside = start >= width && value.slice(start - width, start) === delimiter && value.slice(end, end + width) === delimiter;
248
- if (!outside) return null;
249
- return {
250
- value: value.slice(0, start - width) + selected + value.slice(end + width),
251
- selectionStart: start - width,
252
- selectionEnd: start - width + selected.length
253
- };
254
- }
255
- function link(value, start, end) {
256
- const selected = value.slice(start, end);
257
- const whole = WHOLE_LINK.exec(selected);
258
- if (whole) {
259
- const text = whole[1];
260
- return {
261
- value: value.slice(0, start) + text + value.slice(end),
262
- selectionStart: start,
263
- selectionEnd: start + text.length
264
- };
265
- }
266
- const opened = `[${selected}](`;
267
- const at = selected === "" ? start + 1 : start + opened.length;
268
- return {
269
- value: value.slice(0, start) + opened + ")" + value.slice(end),
270
- selectionStart: at,
271
- selectionEnd: at
272
- };
273
- }
274
- function wrapSelection(kind, value, selectionStart, selectionEnd) {
275
- if (kind === "link") return link(value, selectionStart, selectionEnd);
276
- const delimiter = DELIMITER[kind];
277
- const stripped = unwrap(value, selectionStart, selectionEnd, delimiter);
278
- if (stripped) return stripped;
279
- const selected = value.slice(selectionStart, selectionEnd);
280
- if (kind === "code" && selected.includes("\n")) {
281
- const at2 = selectionStart + 4;
282
- return {
283
- value: value.slice(0, selectionStart) + "```\n" + selected + "\n```" + value.slice(selectionEnd),
284
- selectionStart: at2,
285
- selectionEnd: at2 + selected.length
286
- };
287
- }
288
- const at = selectionStart + delimiter.length;
289
- return {
290
- value: value.slice(0, selectionStart) + delimiter + selected + delimiter + value.slice(selectionEnd),
291
- selectionStart: at,
292
- selectionEnd: at + selected.length
293
- };
294
- }
295
- function linkPaste(value, selectionStart, selectionEnd, pasted) {
296
- if (selectionStart === selectionEnd) return null;
297
- const url = pasted.trim();
298
- if (!BARE_URL.test(url)) return null;
299
- const inserted = `[${value.slice(selectionStart, selectionEnd)}](${url})`;
300
- const at = selectionStart + inserted.length;
301
- return {
302
- value: value.slice(0, selectionStart) + inserted + value.slice(selectionEnd),
303
- selectionStart: at,
304
- selectionEnd: at
305
- };
306
- }
307
-
308
- // src/markdown/insert-command.ts
309
- function insertCommand(command, value, caret) {
310
- const line = lineAt(value, caret);
311
- const before = value.slice(line.start, caret).replace(/[ \t]+$/, "");
312
- const cut = line.start + before.length;
313
- const prefix = before.trim() === "" ? "" : command.separate ? "\n\n" : "\n";
314
- const at = cut + prefix.length + command.caretOffset;
315
- return {
316
- value: value.slice(0, cut) + prefix + command.insert + value.slice(caret),
317
- selectionStart: at,
318
- selectionEnd: at + (command.selectLength ?? 0)
319
- };
320
- }
321
-
322
- // src/markdown/slash-trigger.ts
323
- function shouldOpenPalette(value, selectionStart, selectionEnd) {
324
- if (selectionStart !== selectionEnd) return false;
325
- if (insideFence(value, selectionStart)) return false;
326
- if (selectionStart === 0) return true;
327
- const previous = value[selectionStart - 1];
328
- return previous === "\n" || previous === " " || previous === " ";
329
- }
330
-
331
- // src/markdown/platform.ts
332
- function isMac() {
333
- if (typeof navigator === "undefined") return false;
334
- const { userAgentData, platform } = navigator;
335
- return /mac|iphone|ipad/i.test(userAgentData?.platform || platform || "");
336
- }
337
-
338
- // src/markdown/shortcut-label.ts
339
- var MAC_LABEL = { mod: "\u2318", alt: "\u2325", shift: "\u21E7" };
340
- var OTHER_LABEL = { mod: "Ctrl", alt: "Alt", shift: "Shift" };
341
- function formatShortcut(hint) {
342
- const mac = isMac();
343
- const labels = mac ? MAC_LABEL : OTHER_LABEL;
344
- const parts = hint.split("+").map((part) => labels[part] ?? part.toUpperCase());
345
- return parts.join(mac ? "" : "+");
346
- }
347
-
348
- // src/markdown/caret-coordinates.ts
349
- var COPIED = [
350
- "boxSizing",
351
- "fontFamily",
352
- "fontSize",
353
- "fontStyle",
354
- "fontWeight",
355
- "letterSpacing",
356
- "lineHeight",
357
- "paddingBottom",
358
- "paddingLeft",
359
- "paddingRight",
360
- "paddingTop",
361
- "textIndent",
362
- "textTransform",
363
- "wordBreak",
364
- "wordSpacing",
365
- "borderBottomWidth",
366
- "borderLeftWidth",
367
- "borderRightWidth",
368
- "borderTopWidth"
369
- ];
370
- function caretRect(el) {
371
- if (el.offsetWidth === 0) return null;
372
- const style = window.getComputedStyle(el);
373
- const mirror = document.createElement("div");
374
- for (const property of COPIED) mirror.style[property] = style[property];
375
- mirror.style.position = "absolute";
376
- mirror.style.top = "0";
377
- mirror.style.left = "-9999px";
378
- mirror.style.visibility = "hidden";
379
- mirror.style.whiteSpace = "pre-wrap";
380
- mirror.style.overflowWrap = "break-word";
381
- mirror.style.width = `${el.clientWidth}px`;
382
- mirror.textContent = el.value.slice(0, el.selectionStart);
383
- const marker = document.createElement("span");
384
- marker.textContent = "\u200B";
385
- mirror.appendChild(marker);
386
- document.body.appendChild(mirror);
387
- const top = marker.offsetTop;
388
- const left = marker.offsetLeft;
389
- const height = marker.offsetHeight || Number.parseFloat(style.lineHeight) || 0;
390
- mirror.remove();
391
- if (height === 0) return null;
392
- return { top: top - el.scrollTop, left, height };
393
- }
394
-
395
- // src/markdown/useMarkdownKeymap.ts
396
- var React = __toESM(require("react"), 1);
397
- var WRAP = { b: "bold", i: "italic", e: "code", k: "link" };
398
- var HEADING = { Digit1: "h1", Digit2: "h2", Digit3: "h3" };
399
- var LIST = { Digit7: "ordered", Digit8: "bullet" };
400
- function useMarkdownKeymap({
401
- commit,
402
- onOpenPalette
403
- }) {
404
- const onKeyDown = React.useCallback(
405
- (event) => {
406
- if (event.nativeEvent.isComposing || event.keyCode === 229) return;
407
- const el = event.currentTarget;
408
- const { value, selectionStart, selectionEnd } = el;
409
- const mod = isMac() ? event.metaKey : event.ctrlKey;
410
- const run = (edit) => {
411
- if (!edit) return;
412
- event.preventDefault();
413
- applyEdit(el, edit, commit);
414
- };
415
- if (mod && event.altKey) {
416
- const kind = HEADING[event.code];
417
- if (kind) run(toggleLinePrefix(kind, value, selectionStart, selectionEnd));
418
- return;
419
- }
420
- if (mod && event.shiftKey) {
421
- const kind = LIST[event.code];
422
- if (kind) run(toggleLinePrefix(kind, value, selectionStart, selectionEnd));
423
- return;
424
- }
425
- if (mod) {
426
- const kind = WRAP[event.key.toLowerCase()];
427
- if (kind) run(wrapSelection(kind, value, selectionStart, selectionEnd));
428
- return;
429
- }
430
- if (event.key === "/") {
431
- if (!shouldOpenPalette(value, selectionStart, selectionEnd)) return;
432
- event.preventDefault();
433
- onOpenPalette();
434
- return;
435
- }
436
- if (event.key === "Enter" && !event.shiftKey) {
437
- run(continueList(value, selectionStart, "Enter"));
438
- return;
439
- }
440
- if (event.key === "Backspace" && selectionStart === selectionEnd) {
441
- run(continueList(value, selectionStart, "Backspace"));
442
- return;
443
- }
444
- if (event.key === "Tab") {
445
- run(indentList(value, selectionStart, selectionEnd, event.shiftKey ? -1 : 1));
446
- }
447
- },
448
- [commit, onOpenPalette]
449
- );
450
- const onPaste = React.useCallback(
451
- (event) => {
452
- const el = event.currentTarget;
453
- const edit = linkPaste(
454
- el.value,
455
- el.selectionStart,
456
- el.selectionEnd,
457
- event.clipboardData.getData("text/plain")
458
- );
459
- if (!edit) return;
460
- event.preventDefault();
461
- applyEdit(el, edit, commit);
462
- },
463
- [commit]
464
- );
465
- return { onKeyDown, onPaste };
466
- }
467
-
468
- // src/hooks/useAutoGrow.ts
469
- var React3 = __toESM(require("react"), 1);
470
-
471
- // src/hooks/use-isomorphic-layout-effect.ts
472
- var React2 = __toESM(require("react"), 1);
473
- var useIsomorphicLayoutEffect = typeof document === "undefined" ? React2.useEffect : React2.useLayoutEffect;
474
-
475
- // src/hooks/useAutoGrow.ts
476
- function useAutoGrow(value) {
477
- const ref = React3.useRef(null);
478
- const lastWidth = React3.useRef(null);
479
- const fit = React3.useCallback(() => {
480
- const el = ref.current;
481
- if (!el) return;
482
- const scroller = document.scrollingElement ?? document.documentElement;
483
- const scrollTop = scroller.scrollTop;
484
- el.style.height = "auto";
485
- if (el.scrollHeight > 0) el.style.height = `${el.scrollHeight}px`;
486
- if (scroller.scrollTop !== scrollTop) scroller.scrollTop = scrollTop;
487
- }, []);
488
- useIsomorphicLayoutEffect(fit, [fit, value]);
489
- React3.useEffect(() => {
490
- const el = ref.current;
491
- if (!el || typeof ResizeObserver === "undefined") return;
492
- const observer = new ResizeObserver(([entry]) => {
493
- const width = entry.contentRect.width;
494
- if (width === lastWidth.current) return;
495
- lastWidth.current = width;
496
- fit();
497
- });
498
- observer.observe(el);
499
- return () => observer.disconnect();
500
- }, [fit]);
501
- return ref;
502
- }
503
- // Annotate the CommonJS export names for ESM import in node:
504
- 0 && (module.exports = {
505
- applyEdit,
506
- caretRect,
507
- continueList,
508
- formatShortcut,
509
- indentList,
510
- insertCommand,
511
- lineAt,
512
- linkPaste,
513
- shouldOpenPalette,
514
- toggleLinePrefix,
515
- useAutoGrow,
516
- useMarkdownKeymap,
517
- wrapSelection
518
- });
1
+ 'use client';"use strict";Object.defineProperty(exports, "__esModule", {value: true});"use client";
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+
18
+ var _chunkGTTPVJSDcjs = require('./chunk-GTTPVJSD.cjs');
19
+
20
+
21
+
22
+
23
+
24
+
25
+
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+
40
+
41
+
42
+
43
+
44
+
45
+
46
+
47
+
48
+
49
+
50
+
51
+
52
+
53
+
54
+
55
+
56
+
57
+
58
+
59
+
60
+
61
+
62
+ var _chunkPZ4GT5JOcjs = require('./chunk-PZ4GT5JO.cjs');
63
+
64
+
65
+
66
+ var _chunk2QCRZ7OLcjs = require('./chunk-2QCRZ7OL.cjs');
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+ var _chunkND5XJVK2cjs = require('./chunk-ND5XJVK2.cjs');
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+
120
+
121
+
122
+
123
+
124
+
125
+
126
+
127
+
128
+
129
+
130
+
131
+
132
+
133
+
134
+
135
+
136
+
137
+
138
+
139
+
140
+
141
+
142
+
143
+
144
+
145
+
146
+
147
+
148
+
149
+
150
+
151
+ exports.BlockShell = _chunkGTTPVJSDcjs.BlockShell; exports.EditableRegion = _chunkGTTPVJSDcjs.EditableRegion; exports.EditorView = _chunkGTTPVJSDcjs.EditorView; exports.PALETTE = _chunkND5XJVK2cjs.PALETTE; exports.SelectionSink = _chunkGTTPVJSDcjs.SelectionSink; exports.Transaction = _chunkPZ4GT5JOcjs.Transaction; exports.ViewController = _chunkGTTPVJSDcjs.ViewController; exports.VoidBlockFallback = _chunkGTTPVJSDcjs.VoidBlockFallback; exports.addMarkStep = _chunkPZ4GT5JOcjs.addMarkStep; exports.applyTransaction = _chunkPZ4GT5JOcjs.applyTransaction; exports.atom = _chunkND5XJVK2cjs.atom; exports.blockInputRules = _chunkPZ4GT5JOcjs.blockInputRules; exports.blockRangeSelection = _chunkPZ4GT5JOcjs.blockRangeSelection; exports.caretFromPoint = _chunkGTTPVJSDcjs.caretFromPoint; exports.coreBlockSpecs = _chunkND5XJVK2cjs.coreBlockSpecs; exports.coreExtensions = _chunkPZ4GT5JOcjs.coreExtensions; exports.countDoc = _chunkPZ4GT5JOcjs.countDoc; exports.countText = _chunkPZ4GT5JOcjs.countText; exports.createBlockCodec = _chunkND5XJVK2cjs.createBlockCodec; exports.createEditor = _chunkPZ4GT5JOcjs.createEditor; exports.createPluginKey = _chunkPZ4GT5JOcjs.createPluginKey; exports.createSchema = _chunkND5XJVK2cjs.createSchema; exports.createState = _chunkPZ4GT5JOcjs.createState; exports.defaultRenderers = _chunkGTTPVJSDcjs.defaultRenderers; exports.defineExtension = _chunkPZ4GT5JOcjs.defineExtension; exports.diffBlocks = _chunk2QCRZ7OLcjs.diffBlocks; exports.diffInline = _chunk2QCRZ7OLcjs.diffInline; exports.domMapOf = _chunkGTTPVJSDcjs.domMapOf; exports.fromHTML = _chunkPZ4GT5JOcjs.fromHTML; exports.fromMarkdown = _chunkND5XJVK2cjs.fromMarkdown; exports.getPluginState = _chunkPZ4GT5JOcjs.getPluginState; exports.hostKey = _chunkGTTPVJSDcjs.hostKey; exports.insertBlockAfter = _chunkPZ4GT5JOcjs.insertBlockAfter; exports.insertBlocksStep = _chunkPZ4GT5JOcjs.insertBlocksStep; exports.insertText = _chunkPZ4GT5JOcjs.insertText; exports.insertTextWithRules = _chunkPZ4GT5JOcjs.insertTextWithRules; exports.isCrossSelection = _chunkGTTPVJSDcjs.isCrossSelection; exports.joinBlocksStep = _chunkPZ4GT5JOcjs.joinBlocksStep; exports.keyName = _chunkPZ4GT5JOcjs.keyName; exports.markInputRules = _chunkPZ4GT5JOcjs.markInputRules; exports.moveBlocksStep = _chunkPZ4GT5JOcjs.moveBlocksStep; exports.nodeSelection = _chunkPZ4GT5JOcjs.nodeSelection; exports.normalizeInline = _chunkND5XJVK2cjs.normalizeInline; exports.normalizeKey = _chunkPZ4GT5JOcjs.normalizeKey; exports.parseInline = _chunkND5XJVK2cjs.parseInline; exports.redo = _chunkPZ4GT5JOcjs.redo; exports.removeBlocksStep = _chunkPZ4GT5JOcjs.removeBlocksStep; exports.removeMarkStep = _chunkPZ4GT5JOcjs.removeMarkStep; exports.renderInline = _chunkGTTPVJSDcjs.renderInline; exports.replaceBlockStep = _chunkPZ4GT5JOcjs.replaceBlockStep; exports.replaceDocStep = _chunkPZ4GT5JOcjs.replaceDocStep; exports.replaceInlineStep = _chunkPZ4GT5JOcjs.replaceInlineStep; exports.sanitizeHref = _chunkND5XJVK2cjs.sanitizeHref; exports.serializeInline = _chunkND5XJVK2cjs.serializeInline; exports.setAttrsStep = _chunkPZ4GT5JOcjs.setAttrsStep; exports.setBlockType = _chunkPZ4GT5JOcjs.setBlockType; exports.setIndentStep = _chunkPZ4GT5JOcjs.setIndentStep; exports.splitBlockStep = _chunkPZ4GT5JOcjs.splitBlockStep; exports.stepFromJSON = _chunkPZ4GT5JOcjs.stepFromJSON; exports.text = _chunkND5XJVK2cjs.text; exports.textSelection = _chunkPZ4GT5JOcjs.textSelection; exports.toHTML = _chunkPZ4GT5JOcjs.toHTML; exports.toMarkdown = _chunkPZ4GT5JOcjs.toMarkdown; exports.toPlainText = _chunkPZ4GT5JOcjs.toPlainText; exports.toggleMark = _chunkPZ4GT5JOcjs.toggleMark; exports.typographyRules = _chunkPZ4GT5JOcjs.typographyRules; exports.undo = _chunkPZ4GT5JOcjs.undo; exports.useEditorState = _chunkGTTPVJSDcjs.useEditorState; exports.useQuoinEditor = _chunkGTTPVJSDcjs.useQuoinEditor; exports.useViewController = _chunkGTTPVJSDcjs.useViewController;
519
152
  //# sourceMappingURL=headless.cjs.map