@milkdown/crepe 7.8.0 → 7.9.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 (304) hide show
  1. package/lib/cjs/confirm-CNveM9QH.js +26 -0
  2. package/lib/cjs/confirm-CNveM9QH.js.map +1 -0
  3. package/lib/cjs/edit-BUtBJHpV.js +24 -0
  4. package/lib/cjs/edit-BUtBJHpV.js.map +1 -0
  5. package/lib/cjs/functions-BAY51plB.js +39 -0
  6. package/lib/cjs/functions-BAY51plB.js.map +1 -0
  7. package/lib/cjs/image-BXLkOVnO.js +24 -0
  8. package/lib/cjs/image-BXLkOVnO.js.map +1 -0
  9. package/lib/cjs/{index-DAiGM2G1.js → index-B7gqgc1H.js} +484 -204
  10. package/lib/cjs/index-B7gqgc1H.js.map +1 -0
  11. package/lib/cjs/{index-Dub20F3z.js → index-B91KhPew.js} +4 -4
  12. package/lib/cjs/index-B91KhPew.js.map +1 -0
  13. package/lib/cjs/{index-nrFkJeLW.js → index-BsrJn8Jp.js} +22 -7
  14. package/lib/cjs/index-BsrJn8Jp.js.map +1 -0
  15. package/lib/cjs/{index-BReSN-JQ.js → index-C2CAbC2F.js} +2 -2
  16. package/lib/cjs/{index-BReSN-JQ.js.map → index-C2CAbC2F.js.map} +1 -1
  17. package/lib/cjs/{index-CGies6Iv.js → index-CnyNb_OH.js} +45 -45
  18. package/lib/cjs/index-CnyNb_OH.js.map +1 -0
  19. package/lib/cjs/{index-CJdEvN3_.js → index-CoTb-QdE.js} +123 -105
  20. package/lib/cjs/index-CoTb-QdE.js.map +1 -0
  21. package/lib/cjs/index-DEs_IHHy.js +91 -0
  22. package/lib/cjs/index-DEs_IHHy.js.map +1 -0
  23. package/lib/cjs/index-DGAwtnNK.js +349 -0
  24. package/lib/cjs/index-DGAwtnNK.js.map +1 -0
  25. package/lib/cjs/index-DLIudQKW.js +126 -0
  26. package/lib/cjs/index-DLIudQKW.js.map +1 -0
  27. package/lib/cjs/index-Dw6lXgs6.js +81 -0
  28. package/lib/cjs/index-Dw6lXgs6.js.map +1 -0
  29. package/lib/cjs/{index-AlHHvSR_.js → index-xbwf60wt.js} +1 -6
  30. package/lib/cjs/{index-AlHHvSR_.js.map → index-xbwf60wt.js.map} +1 -1
  31. package/lib/cjs/{index-CvmlYYXX.js → index-xbxqAqH2.js} +21 -7
  32. package/lib/cjs/index-xbxqAqH2.js.map +1 -0
  33. package/lib/cjs/index.js +6 -6
  34. package/lib/cjs/plus-XLomtlXf.js +24 -0
  35. package/lib/cjs/plus-XLomtlXf.js.map +1 -0
  36. package/lib/cjs/remove-Ba-ypwBf.js +17 -0
  37. package/lib/cjs/remove-Ba-ypwBf.js.map +1 -0
  38. package/lib/esm/confirm-DtE-HkVd.js +24 -0
  39. package/lib/esm/confirm-DtE-HkVd.js.map +1 -0
  40. package/lib/esm/edit-D--t_JAb.js +22 -0
  41. package/lib/esm/edit-D--t_JAb.js.map +1 -0
  42. package/lib/esm/functions-DlJPkGmE.js +36 -0
  43. package/lib/esm/functions-DlJPkGmE.js.map +1 -0
  44. package/lib/esm/image-DoB1o1sl.js +22 -0
  45. package/lib/esm/image-DoB1o1sl.js.map +1 -0
  46. package/lib/esm/index-BAQT-9au.js +347 -0
  47. package/lib/esm/index-BAQT-9au.js.map +1 -0
  48. package/lib/esm/{index-DOrkOhki.js → index-BCvtgOeI.js} +4 -4
  49. package/lib/esm/index-BCvtgOeI.js.map +1 -0
  50. package/lib/esm/{index-x2oo_GmY.js → index-BDZ_pnSv.js} +122 -104
  51. package/lib/esm/index-BDZ_pnSv.js.map +1 -0
  52. package/lib/esm/{index-D6fLMv29.js → index-BPG8iO8t.js} +2 -6
  53. package/lib/esm/{index-D6fLMv29.js.map → index-BPG8iO8t.js.map} +1 -1
  54. package/lib/esm/{index-DcRgwPLd.js → index-BUBXHhHG.js} +18 -3
  55. package/lib/esm/index-BUBXHhHG.js.map +1 -0
  56. package/lib/esm/{index-CsYl2WR5.js → index-Bvz1Yyiz.js} +2 -2
  57. package/lib/esm/{index-CsYl2WR5.js.map → index-Bvz1Yyiz.js.map} +1 -1
  58. package/lib/esm/index-C1aVAv1l.js +124 -0
  59. package/lib/esm/index-C1aVAv1l.js.map +1 -0
  60. package/lib/esm/{index-CEOsxgzJ.js → index-CM4urRY9.js} +470 -190
  61. package/lib/esm/index-CM4urRY9.js.map +1 -0
  62. package/lib/esm/{index-BFsG6770.js → index-ChR5Qhyf.js} +17 -3
  63. package/lib/esm/index-ChR5Qhyf.js.map +1 -0
  64. package/lib/esm/index-CwMVnVeI.js +89 -0
  65. package/lib/esm/index-CwMVnVeI.js.map +1 -0
  66. package/lib/esm/{index-BwTxn2hs.js → index-Dc_wWopW.js} +46 -46
  67. package/lib/esm/index-Dc_wWopW.js.map +1 -0
  68. package/lib/esm/index-E8UgFLeN.js +79 -0
  69. package/lib/esm/index-E8UgFLeN.js.map +1 -0
  70. package/lib/esm/index.js +6 -6
  71. package/lib/esm/plus-lrX0Q75O.js +22 -0
  72. package/lib/esm/plus-lrX0Q75O.js.map +1 -0
  73. package/lib/esm/remove-D3g0Cd6_.js +15 -0
  74. package/lib/esm/remove-D3g0Cd6_.js.map +1 -0
  75. package/lib/theme/_internal/classic-common.css +6 -0
  76. package/lib/theme/common/block-edit.css +23 -23
  77. package/lib/theme/common/code-mirror.css +43 -44
  78. package/lib/theme/common/image-block.css +79 -81
  79. package/lib/theme/common/latex.css +6 -6
  80. package/lib/theme/common/link-tooltip.css +21 -21
  81. package/lib/theme/common/list-item.css +11 -10
  82. package/lib/theme/common/table.css +39 -39
  83. package/lib/theme/common/toolbar.css +8 -8
  84. package/lib/tsconfig.tsbuildinfo +1 -0
  85. package/lib/types/core/crepe.d.ts +6 -6
  86. package/lib/types/core/crepe.d.ts.map +1 -1
  87. package/lib/types/core/slice.d.ts.map +1 -1
  88. package/lib/types/feature/block-edit/handle/component.d.ts +4 -8
  89. package/lib/types/feature/block-edit/handle/component.d.ts.map +1 -1
  90. package/lib/types/feature/block-edit/handle/index.d.ts +1 -1
  91. package/lib/types/feature/block-edit/handle/index.d.ts.map +1 -1
  92. package/lib/types/feature/block-edit/index.d.ts.map +1 -1
  93. package/lib/types/feature/block-edit/menu/component.d.ts +8 -11
  94. package/lib/types/feature/block-edit/menu/component.d.ts.map +1 -1
  95. package/lib/types/feature/block-edit/menu/config.d.ts.map +1 -1
  96. package/lib/types/feature/block-edit/menu/index.d.ts.map +1 -1
  97. package/lib/types/feature/block-edit/menu/utils.d.ts +2 -3
  98. package/lib/types/feature/block-edit/menu/utils.d.ts.map +1 -1
  99. package/lib/types/feature/code-mirror/index.d.ts +3 -4
  100. package/lib/types/feature/code-mirror/index.d.ts.map +1 -1
  101. package/lib/types/feature/cursor/index.d.ts.map +1 -1
  102. package/lib/types/feature/image-block/index.d.ts.map +1 -1
  103. package/lib/types/feature/index.d.ts +4 -4
  104. package/lib/types/feature/index.d.ts.map +1 -1
  105. package/lib/types/feature/latex/index.d.ts.map +1 -1
  106. package/lib/types/feature/latex/inline-tooltip/component.d.ts +6 -10
  107. package/lib/types/feature/latex/inline-tooltip/component.d.ts.map +1 -1
  108. package/lib/types/feature/latex/inline-tooltip/view.d.ts.map +1 -1
  109. package/lib/types/feature/latex/input-rule.d.ts.map +1 -1
  110. package/lib/types/feature/latex/remark.d.ts.map +1 -1
  111. package/lib/types/feature/link-tooltip/index.d.ts.map +1 -1
  112. package/lib/types/feature/list-item/index.d.ts.map +1 -1
  113. package/lib/types/feature/placeholder/index.d.ts.map +1 -1
  114. package/lib/types/feature/shared.d.ts +1 -2
  115. package/lib/types/feature/shared.d.ts.map +1 -1
  116. package/lib/types/feature/table/index.d.ts.map +1 -1
  117. package/lib/types/feature/toolbar/component.d.ts +9 -12
  118. package/lib/types/feature/toolbar/component.d.ts.map +1 -1
  119. package/lib/types/feature/toolbar/index.d.ts.map +1 -1
  120. package/lib/types/icons/align-center.d.ts +1 -1
  121. package/lib/types/icons/align-center.d.ts.map +1 -1
  122. package/lib/types/icons/align-left.d.ts +1 -1
  123. package/lib/types/icons/align-left.d.ts.map +1 -1
  124. package/lib/types/icons/align-right.d.ts +1 -1
  125. package/lib/types/icons/align-right.d.ts.map +1 -1
  126. package/lib/types/icons/bold.d.ts +1 -1
  127. package/lib/types/icons/bold.d.ts.map +1 -1
  128. package/lib/types/icons/bullet-list.d.ts +1 -1
  129. package/lib/types/icons/bullet-list.d.ts.map +1 -1
  130. package/lib/types/icons/bullet.d.ts +1 -1
  131. package/lib/types/icons/bullet.d.ts.map +1 -1
  132. package/lib/types/icons/caption.d.ts +1 -1
  133. package/lib/types/icons/caption.d.ts.map +1 -1
  134. package/lib/types/icons/check-box-checked.d.ts +1 -1
  135. package/lib/types/icons/check-box-checked.d.ts.map +1 -1
  136. package/lib/types/icons/check-box-unchecked.d.ts +1 -1
  137. package/lib/types/icons/check-box-unchecked.d.ts.map +1 -1
  138. package/lib/types/icons/chevron-down.d.ts +1 -1
  139. package/lib/types/icons/chevron-down.d.ts.map +1 -1
  140. package/lib/types/icons/clear.d.ts +1 -1
  141. package/lib/types/icons/clear.d.ts.map +1 -1
  142. package/lib/types/icons/code.d.ts +1 -1
  143. package/lib/types/icons/code.d.ts.map +1 -1
  144. package/lib/types/icons/confirm.d.ts +1 -1
  145. package/lib/types/icons/confirm.d.ts.map +1 -1
  146. package/lib/types/icons/copy.d.ts +1 -1
  147. package/lib/types/icons/copy.d.ts.map +1 -1
  148. package/lib/types/icons/divider.d.ts +1 -1
  149. package/lib/types/icons/divider.d.ts.map +1 -1
  150. package/lib/types/icons/drag-handle.d.ts +1 -1
  151. package/lib/types/icons/drag-handle.d.ts.map +1 -1
  152. package/lib/types/icons/edit.d.ts +1 -1
  153. package/lib/types/icons/edit.d.ts.map +1 -1
  154. package/lib/types/icons/functions.d.ts +1 -1
  155. package/lib/types/icons/functions.d.ts.map +1 -1
  156. package/lib/types/icons/h1.d.ts +1 -1
  157. package/lib/types/icons/h1.d.ts.map +1 -1
  158. package/lib/types/icons/h2.d.ts +1 -1
  159. package/lib/types/icons/h2.d.ts.map +1 -1
  160. package/lib/types/icons/h3.d.ts +1 -1
  161. package/lib/types/icons/h3.d.ts.map +1 -1
  162. package/lib/types/icons/h4.d.ts +1 -1
  163. package/lib/types/icons/h4.d.ts.map +1 -1
  164. package/lib/types/icons/h5.d.ts +1 -1
  165. package/lib/types/icons/h5.d.ts.map +1 -1
  166. package/lib/types/icons/h6.d.ts +1 -1
  167. package/lib/types/icons/h6.d.ts.map +1 -1
  168. package/lib/types/icons/image.d.ts +1 -1
  169. package/lib/types/icons/image.d.ts.map +1 -1
  170. package/lib/types/icons/italic.d.ts +1 -1
  171. package/lib/types/icons/italic.d.ts.map +1 -1
  172. package/lib/types/icons/link.d.ts +1 -1
  173. package/lib/types/icons/link.d.ts.map +1 -1
  174. package/lib/types/icons/menu.d.ts +1 -1
  175. package/lib/types/icons/menu.d.ts.map +1 -1
  176. package/lib/types/icons/ordered-list.d.ts +1 -1
  177. package/lib/types/icons/ordered-list.d.ts.map +1 -1
  178. package/lib/types/icons/plus.d.ts +1 -1
  179. package/lib/types/icons/plus.d.ts.map +1 -1
  180. package/lib/types/icons/quote.d.ts +1 -1
  181. package/lib/types/icons/quote.d.ts.map +1 -1
  182. package/lib/types/icons/remove.d.ts +1 -1
  183. package/lib/types/icons/remove.d.ts.map +1 -1
  184. package/lib/types/icons/search.d.ts +1 -1
  185. package/lib/types/icons/search.d.ts.map +1 -1
  186. package/lib/types/icons/strikethrough.d.ts +1 -1
  187. package/lib/types/icons/strikethrough.d.ts.map +1 -1
  188. package/lib/types/icons/table.d.ts +1 -1
  189. package/lib/types/icons/table.d.ts.map +1 -1
  190. package/lib/types/icons/text.d.ts +1 -1
  191. package/lib/types/icons/text.d.ts.map +1 -1
  192. package/lib/types/icons/todo-list.d.ts +1 -1
  193. package/lib/types/icons/todo-list.d.ts.map +1 -1
  194. package/lib/types/icons/visibility-off.d.ts +1 -1
  195. package/lib/types/icons/visibility-off.d.ts.map +1 -1
  196. package/package.json +4 -26
  197. package/src/core/crepe.ts +13 -12
  198. package/src/core/slice.ts +2 -0
  199. package/src/feature/block-edit/handle/component.tsx +60 -0
  200. package/src/feature/block-edit/handle/index.ts +22 -14
  201. package/src/feature/block-edit/index.ts +3 -1
  202. package/src/feature/block-edit/menu/component.tsx +237 -0
  203. package/src/feature/block-edit/menu/config.ts +6 -3
  204. package/src/feature/block-edit/menu/index.ts +38 -18
  205. package/src/feature/block-edit/menu/utils.ts +3 -3
  206. package/src/feature/code-mirror/index.ts +20 -20
  207. package/src/feature/cursor/index.ts +1 -1
  208. package/src/feature/image-block/index.ts +3 -1
  209. package/src/feature/index.ts +5 -4
  210. package/src/feature/latex/index.ts +8 -8
  211. package/src/feature/latex/inline-tooltip/component.tsx +57 -0
  212. package/src/feature/latex/inline-tooltip/view.ts +30 -17
  213. package/src/feature/latex/input-rule.ts +4 -3
  214. package/src/feature/latex/remark.ts +3 -2
  215. package/src/feature/link-tooltip/index.ts +3 -1
  216. package/src/feature/list-item/index.ts +8 -16
  217. package/src/feature/placeholder/index.ts +6 -3
  218. package/src/feature/shared.ts +1 -2
  219. package/src/feature/table/index.ts +2 -0
  220. package/src/feature/toolbar/component.tsx +256 -0
  221. package/src/feature/toolbar/index.ts +34 -17
  222. package/src/icons/align-center.ts +1 -3
  223. package/src/icons/align-left.ts +1 -3
  224. package/src/icons/align-right.ts +1 -3
  225. package/src/icons/bold.ts +1 -3
  226. package/src/icons/bullet-list.ts +1 -3
  227. package/src/icons/bullet.ts +1 -3
  228. package/src/icons/caption.ts +1 -3
  229. package/src/icons/check-box-checked.ts +1 -3
  230. package/src/icons/check-box-unchecked.ts +1 -3
  231. package/src/icons/chevron-down.ts +1 -3
  232. package/src/icons/clear.ts +1 -3
  233. package/src/icons/code.ts +1 -3
  234. package/src/icons/confirm.ts +1 -3
  235. package/src/icons/copy.ts +1 -3
  236. package/src/icons/divider.ts +1 -3
  237. package/src/icons/drag-handle.ts +1 -3
  238. package/src/icons/edit.ts +1 -3
  239. package/src/icons/functions.ts +1 -3
  240. package/src/icons/h1.ts +1 -3
  241. package/src/icons/h2.ts +1 -3
  242. package/src/icons/h3.ts +1 -3
  243. package/src/icons/h4.ts +1 -3
  244. package/src/icons/h5.ts +1 -3
  245. package/src/icons/h6.ts +1 -3
  246. package/src/icons/image.ts +1 -3
  247. package/src/icons/italic.ts +1 -3
  248. package/src/icons/link.ts +1 -3
  249. package/src/icons/menu.ts +1 -3
  250. package/src/icons/ordered-list.ts +1 -3
  251. package/src/icons/plus.ts +1 -3
  252. package/src/icons/quote.ts +1 -3
  253. package/src/icons/remove.ts +1 -3
  254. package/src/icons/search.ts +1 -3
  255. package/src/icons/strikethrough.ts +1 -3
  256. package/src/icons/table.ts +1 -3
  257. package/src/icons/text.ts +1 -3
  258. package/src/icons/todo-list.ts +1 -3
  259. package/src/icons/visibility-off.ts +1 -3
  260. package/src/theme/_internal/classic-common.css +6 -0
  261. package/src/theme/common/block-edit.css +2 -2
  262. package/src/theme/common/code-mirror.css +5 -6
  263. package/src/theme/common/image-block.css +9 -11
  264. package/src/theme/common/latex.css +1 -1
  265. package/src/theme/common/link-tooltip.css +2 -2
  266. package/src/theme/common/list-item.css +3 -2
  267. package/src/theme/common/table.css +2 -2
  268. package/src/theme/common/toolbar.css +1 -1
  269. package/lib/cjs/functions-Dk90yOUc.js +0 -690
  270. package/lib/cjs/functions-Dk90yOUc.js.map +0 -1
  271. package/lib/cjs/index-CGies6Iv.js.map +0 -1
  272. package/lib/cjs/index-CJdEvN3_.js.map +0 -1
  273. package/lib/cjs/index-CvmlYYXX.js.map +0 -1
  274. package/lib/cjs/index-D3lu92SA.js +0 -39
  275. package/lib/cjs/index-D3lu92SA.js.map +0 -1
  276. package/lib/cjs/index-DAiGM2G1.js.map +0 -1
  277. package/lib/cjs/index-DKY_Kri2.js +0 -272
  278. package/lib/cjs/index-DKY_Kri2.js.map +0 -1
  279. package/lib/cjs/index-DQll67YS.js +0 -65
  280. package/lib/cjs/index-DQll67YS.js.map +0 -1
  281. package/lib/cjs/index-Dub20F3z.js.map +0 -1
  282. package/lib/cjs/index-hPk2gbSt.js +0 -35
  283. package/lib/cjs/index-hPk2gbSt.js.map +0 -1
  284. package/lib/cjs/index-nrFkJeLW.js.map +0 -1
  285. package/lib/esm/functions-Bsik6ikd.js +0 -652
  286. package/lib/esm/functions-Bsik6ikd.js.map +0 -1
  287. package/lib/esm/index-B3KiKTSt.js +0 -63
  288. package/lib/esm/index-B3KiKTSt.js.map +0 -1
  289. package/lib/esm/index-BFsG6770.js.map +0 -1
  290. package/lib/esm/index-BwTxn2hs.js.map +0 -1
  291. package/lib/esm/index-CBrOT1fW.js +0 -37
  292. package/lib/esm/index-CBrOT1fW.js.map +0 -1
  293. package/lib/esm/index-CEOsxgzJ.js.map +0 -1
  294. package/lib/esm/index-Cuk7cL-r.js +0 -33
  295. package/lib/esm/index-Cuk7cL-r.js.map +0 -1
  296. package/lib/esm/index-DOrkOhki.js.map +0 -1
  297. package/lib/esm/index-DcRgwPLd.js.map +0 -1
  298. package/lib/esm/index-H9uklzH0.js +0 -270
  299. package/lib/esm/index-H9uklzH0.js.map +0 -1
  300. package/lib/esm/index-x2oo_GmY.js.map +0 -1
  301. package/src/feature/block-edit/handle/component.ts +0 -54
  302. package/src/feature/block-edit/menu/component.ts +0 -241
  303. package/src/feature/latex/inline-tooltip/component.ts +0 -38
  304. package/src/feature/toolbar/component.ts +0 -236
@@ -1,272 +0,0 @@
1
- 'use strict';
2
-
3
- var tooltip = require('@milkdown/kit/plugin/tooltip');
4
- var state = require('@milkdown/kit/prose/state');
5
- var index$1 = require('./index-AlHHvSR_.js');
6
- var atomico = require('atomico');
7
- var core = require('@milkdown/kit/core');
8
- var commonmark = require('@milkdown/kit/preset/commonmark');
9
- var clsx = require('clsx');
10
- var linkTooltip = require('@milkdown/kit/component/link-tooltip');
11
- var gfm = require('@milkdown/kit/preset/gfm');
12
- var functions = require('./functions-Dk90yOUc.js');
13
- var inlineLatex = require('./inline-latex-D0G71cGk.js');
14
- var index = require('./index-CGies6Iv.js');
15
- require('@milkdown/kit/utils');
16
- require('katex');
17
- require('@milkdown/kit/plugin/history');
18
- require('@milkdown/kit/plugin/indent');
19
- require('@milkdown/kit/plugin/clipboard');
20
- require('@milkdown/kit/plugin/trailing');
21
- require('@milkdown/kit/ctx');
22
- require('@milkdown/kit/plugin/listener');
23
-
24
- const toolbarComponent = ({
25
- ctx,
26
- hide,
27
- show,
28
- config,
29
- selection
30
- }) => {
31
- var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l;
32
- const update = atomico.useUpdate();
33
- atomico.useEffect(() => {
34
- update();
35
- }, [show]);
36
- const onClick = (fn) => (e) => {
37
- e.preventDefault();
38
- ctx && fn(ctx);
39
- update();
40
- };
41
- const isActive = (mark) => {
42
- if (!ctx || !selection) return false;
43
- const view = ctx.get(core.editorViewCtx);
44
- const {
45
- state: { doc }
46
- } = view;
47
- return doc.rangeHasMark(selection.from, selection.to, mark);
48
- };
49
- const containsNode = (node) => {
50
- if (!ctx || !selection) return false;
51
- const view = ctx.get(core.editorViewCtx);
52
- const {
53
- state: { doc }
54
- } = view;
55
- if (selection instanceof state.NodeSelection) {
56
- return selection.node.type === node;
57
- }
58
- const { from, to } = selection;
59
- let hasNode = false;
60
- doc.nodesBetween(from, to, (n) => {
61
- if (n.type === node) {
62
- hasNode = true;
63
- return false;
64
- }
65
- return true;
66
- });
67
- return hasNode;
68
- };
69
- const flags = ctx == null ? void 0 : ctx.get(index.FeaturesCtx);
70
- const isLatexEnabled = flags == null ? void 0 : flags.includes(index.CrepeFeature.Latex);
71
- const toggleLatex = (ctx2) => {
72
- const hasLatex = containsNode(inlineLatex.mathInlineSchema.type(ctx2));
73
- const view = ctx2.get(core.editorViewCtx);
74
- const { selection: selection2, doc, tr } = view.state;
75
- if (!hasLatex) {
76
- const text = doc.textBetween(selection2.from, selection2.to);
77
- let _tr2 = tr.replaceSelectionWith(
78
- inlineLatex.mathInlineSchema.type(ctx2).create({
79
- value: text
80
- })
81
- );
82
- view.dispatch(
83
- _tr2.setSelection(state.NodeSelection.create(_tr2.doc, selection2.from))
84
- );
85
- return;
86
- }
87
- const { from, to } = selection2;
88
- let pos = -1;
89
- let node = null;
90
- doc.nodesBetween(from, to, (n, p) => {
91
- if (node) return false;
92
- if (n.type === inlineLatex.mathInlineSchema.type(ctx2)) {
93
- pos = p;
94
- node = n;
95
- return false;
96
- }
97
- return true;
98
- });
99
- if (!node || pos < 0) return;
100
- let _tr = tr.delete(pos, pos + 1);
101
- const content = node.attrs.value;
102
- _tr = _tr.insertText(content, pos);
103
- view.dispatch(
104
- _tr.setSelection(
105
- state.TextSelection.create(_tr.doc, from, to + content.length - 1)
106
- )
107
- );
108
- };
109
- return atomico.html`<host>
110
- <button
111
- type="button"
112
- class=${clsx(
113
- "toolbar-item",
114
- ctx && isActive(commonmark.strongSchema.type(ctx)) && "active"
115
- )}
116
- onmousedown=${onClick((ctx2) => {
117
- const commands = ctx2.get(core.commandsCtx);
118
- commands.call(commonmark.toggleStrongCommand.key);
119
- })}
120
- >
121
- ${(_b = (_a = config == null ? void 0 : config.boldIcon) == null ? void 0 : _a.call(config)) != null ? _b : functions.boldIcon}
122
- </button>
123
- <button
124
- type="button"
125
- class=${clsx(
126
- "toolbar-item",
127
- ctx && isActive(commonmark.emphasisSchema.type(ctx)) && "active"
128
- )}
129
- onmousedown=${onClick((ctx2) => {
130
- const commands = ctx2.get(core.commandsCtx);
131
- commands.call(commonmark.toggleEmphasisCommand.key);
132
- })}
133
- >
134
- ${(_d = (_c = config == null ? void 0 : config.italicIcon) == null ? void 0 : _c.call(config)) != null ? _d : functions.italicIcon}
135
- </button>
136
- <button
137
- type="button"
138
- class=${clsx(
139
- "toolbar-item",
140
- ctx && isActive(gfm.strikethroughSchema.type(ctx)) && "active"
141
- )}
142
- onmousedown=${onClick((ctx2) => {
143
- const commands = ctx2.get(core.commandsCtx);
144
- commands.call(gfm.toggleStrikethroughCommand.key);
145
- })}
146
- >
147
- ${(_f = (_e = config == null ? void 0 : config.strikethroughIcon) == null ? void 0 : _e.call(config)) != null ? _f : functions.strikethroughIcon}
148
- </button>
149
- <div class="divider"></div>
150
- <button
151
- type="button"
152
- class=${clsx(
153
- "toolbar-item",
154
- ctx && isActive(commonmark.inlineCodeSchema.type(ctx)) && "active"
155
- )}
156
- onmousedown=${onClick((ctx2) => {
157
- const commands = ctx2.get(core.commandsCtx);
158
- commands.call(commonmark.toggleInlineCodeCommand.key);
159
- })}
160
- >
161
- ${(_h = (_g = config == null ? void 0 : config.codeIcon) == null ? void 0 : _g.call(config)) != null ? _h : functions.codeIcon}
162
- </button>
163
- ${isLatexEnabled && atomico.html`<button
164
- type="button"
165
- class=${clsx(
166
- "toolbar-item",
167
- ctx && containsNode(inlineLatex.mathInlineSchema.type(ctx)) && "active"
168
- )}
169
- onmousedown=${onClick(toggleLatex)}
170
- >
171
- ${(_j = (_i = config == null ? void 0 : config.latexIcon) == null ? void 0 : _i.call(config)) != null ? _j : functions.functionsIcon}
172
- </button>`}
173
- <button
174
- type="button"
175
- class=${clsx(
176
- "toolbar-item",
177
- ctx && isActive(commonmark.linkSchema.type(ctx)) && "active"
178
- )}
179
- onmousedown=${onClick((ctx2) => {
180
- const view = ctx2.get(core.editorViewCtx);
181
- const { selection: selection2 } = view.state;
182
- if (isActive(commonmark.linkSchema.type(ctx2))) {
183
- ctx2.get(linkTooltip.linkTooltipAPI.key).removeLink(selection2.from, selection2.to);
184
- return;
185
- }
186
- ctx2.get(linkTooltip.linkTooltipAPI.key).addLink(selection2.from, selection2.to);
187
- hide == null ? void 0 : hide();
188
- })}
189
- >
190
- ${(_l = (_k = config == null ? void 0 : config.linkIcon) == null ? void 0 : _k.call(config)) != null ? _l : functions.linkIcon}
191
- </button>
192
- </host>`;
193
- };
194
- toolbarComponent.props = {
195
- ctx: Object,
196
- hide: Function,
197
- show: Boolean,
198
- config: Object,
199
- selection: Object
200
- };
201
- const ToolbarElement = atomico.c(toolbarComponent);
202
-
203
- var __typeError = (msg) => {
204
- throw TypeError(msg);
205
- };
206
- var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
207
- var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
208
- var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
209
- var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), member.set(obj, value), value);
210
- var _tooltipProvider, _content;
211
- const toolbar = tooltip.tooltipFactory("CREPE_TOOLBAR");
212
- class ToolbarView {
213
- constructor(ctx, view, config) {
214
- __privateAdd(this, _tooltipProvider);
215
- __privateAdd(this, _content);
216
- this.update = (view, prevState) => {
217
- __privateGet(this, _tooltipProvider).update(view, prevState);
218
- __privateGet(this, _content).selection = view.state.selection;
219
- };
220
- this.destroy = () => {
221
- __privateGet(this, _tooltipProvider).destroy();
222
- __privateGet(this, _content).remove();
223
- };
224
- this.hide = () => {
225
- __privateGet(this, _tooltipProvider).hide();
226
- };
227
- const content = new ToolbarElement();
228
- __privateSet(this, _content, content);
229
- __privateGet(this, _content).ctx = ctx;
230
- __privateGet(this, _content).hide = this.hide;
231
- __privateGet(this, _content).config = config;
232
- __privateGet(this, _content).selection = view.state.selection;
233
- __privateSet(this, _tooltipProvider, new tooltip.TooltipProvider({
234
- content: __privateGet(this, _content),
235
- debounce: 20,
236
- offset: 10,
237
- shouldShow(view2) {
238
- const { doc, selection } = view2.state;
239
- const { empty, from, to } = selection;
240
- const isEmptyTextBlock = !doc.textBetween(from, to).length && selection instanceof state.TextSelection;
241
- const isNotTextBlock = !(selection instanceof state.TextSelection);
242
- const activeElement = view2.dom.getRootNode().activeElement;
243
- const isTooltipChildren = content.contains(activeElement);
244
- const notHasFocus = !view2.hasFocus() && !isTooltipChildren;
245
- const isReadonly = !view2.editable;
246
- if (notHasFocus || isNotTextBlock || empty || isEmptyTextBlock || isReadonly)
247
- return false;
248
- return true;
249
- }
250
- }));
251
- __privateGet(this, _tooltipProvider).onShow = () => {
252
- __privateGet(this, _content).show = true;
253
- };
254
- __privateGet(this, _tooltipProvider).onHide = () => {
255
- __privateGet(this, _content).show = false;
256
- };
257
- this.update(view);
258
- }
259
- }
260
- _tooltipProvider = new WeakMap();
261
- _content = new WeakMap();
262
- index$1.defIfNotExists("milkdown-toolbar", ToolbarElement);
263
- const defineFeature = (editor, config) => {
264
- editor.config((ctx) => {
265
- ctx.set(toolbar.key, {
266
- view: (view) => new ToolbarView(ctx, view, config)
267
- });
268
- }).use(toolbar);
269
- };
270
-
271
- exports.defineFeature = defineFeature;
272
- //# sourceMappingURL=index-DKY_Kri2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DKY_Kri2.js","sources":["../../src/feature/toolbar/component.ts","../../src/feature/toolbar/index.ts"],"sourcesContent":["import type { Component } from 'atomico'\nimport { c, html, useEffect, useUpdate } from 'atomico'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport { commandsCtx, editorViewCtx } from '@milkdown/kit/core'\nimport {\n emphasisSchema,\n inlineCodeSchema,\n linkSchema,\n strongSchema,\n toggleEmphasisCommand,\n toggleInlineCodeCommand,\n toggleStrongCommand,\n} from '@milkdown/kit/preset/commonmark'\nimport type { MarkType, Node, NodeType } from '@milkdown/kit/prose/model'\nimport type { Selection } from '@milkdown/kit/prose/state'\nimport clsx from 'clsx'\nimport { linkTooltipAPI } from '@milkdown/kit/component/link-tooltip'\nimport {\n strikethroughSchema,\n toggleStrikethroughCommand,\n} from '@milkdown/kit/preset/gfm'\nimport {\n boldIcon,\n codeIcon,\n italicIcon,\n linkIcon,\n strikethroughIcon,\n functionsIcon,\n} from '../../icons'\nimport type { ToolbarFeatureConfig } from './index'\nimport { NodeSelection, TextSelection } from '@milkdown/kit/prose/state'\nimport { mathInlineSchema } from '../latex/inline-latex'\nimport { FeaturesCtx } from '../../core/slice'\nimport { CrepeFeature } from '../..'\n\nexport interface ToolbarProps {\n ctx: Ctx\n hide: () => void\n show: boolean\n selection: Selection\n config?: ToolbarFeatureConfig\n}\n\nexport const toolbarComponent: Component<ToolbarProps> = ({\n ctx,\n hide,\n show,\n config,\n selection,\n}) => {\n const update = useUpdate()\n useEffect(() => {\n update()\n }, [show])\n\n const onClick = (fn: (ctx: Ctx) => void) => (e: MouseEvent) => {\n e.preventDefault()\n ctx && fn(ctx)\n update()\n }\n\n const isActive = (mark: MarkType) => {\n if (!ctx || !selection) return false\n const view = ctx.get(editorViewCtx)\n const {\n state: { doc },\n } = view\n return doc.rangeHasMark(selection.from, selection.to, mark)\n }\n\n const containsNode = (node: NodeType) => {\n if (!ctx || !selection) return false\n const view = ctx.get(editorViewCtx)\n const {\n state: { doc },\n } = view\n if (selection instanceof NodeSelection) {\n return selection.node.type === node\n }\n\n const { from, to } = selection\n\n let hasNode = false\n doc.nodesBetween(from, to, (n) => {\n if (n.type === node) {\n hasNode = true\n return false\n }\n return true\n })\n\n return hasNode\n }\n\n const flags = ctx?.get(FeaturesCtx)\n const isLatexEnabled = flags?.includes(CrepeFeature.Latex)\n\n const toggleLatex = (ctx: Ctx) => {\n const hasLatex = containsNode(mathInlineSchema.type(ctx))\n const view = ctx.get(editorViewCtx)\n const { selection, doc, tr } = view.state\n if (!hasLatex) {\n const text = doc.textBetween(selection.from, selection.to)\n let _tr = tr.replaceSelectionWith(\n mathInlineSchema.type(ctx).create({\n value: text,\n })\n )\n view.dispatch(\n _tr.setSelection(NodeSelection.create(_tr.doc, selection.from))\n )\n return\n }\n\n const { from, to } = selection\n let pos = -1\n let node: Node | null = null\n doc.nodesBetween(from, to, (n, p) => {\n if (node) return false\n if (n.type === mathInlineSchema.type(ctx)) {\n pos = p\n node = n\n return false\n }\n return true\n })\n if (!node || pos < 0) return\n\n let _tr = tr.delete(pos, pos + 1)\n const content = (node as Node).attrs.value\n _tr = _tr.insertText(content, pos)\n view.dispatch(\n _tr.setSelection(\n TextSelection.create(_tr.doc, from, to + content.length - 1)\n )\n )\n }\n\n return html`<host>\n <button\n type=\"button\"\n class=${clsx(\n 'toolbar-item',\n ctx && isActive(strongSchema.type(ctx)) && 'active'\n )}\n onmousedown=${onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleStrongCommand.key)\n })}\n >\n ${config?.boldIcon?.() ?? boldIcon}\n </button>\n <button\n type=\"button\"\n class=${clsx(\n 'toolbar-item',\n ctx && isActive(emphasisSchema.type(ctx)) && 'active'\n )}\n onmousedown=${onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleEmphasisCommand.key)\n })}\n >\n ${config?.italicIcon?.() ?? italicIcon}\n </button>\n <button\n type=\"button\"\n class=${clsx(\n 'toolbar-item',\n ctx && isActive(strikethroughSchema.type(ctx)) && 'active'\n )}\n onmousedown=${onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleStrikethroughCommand.key)\n })}\n >\n ${config?.strikethroughIcon?.() ?? strikethroughIcon}\n </button>\n <div class=\"divider\"></div>\n <button\n type=\"button\"\n class=${clsx(\n 'toolbar-item',\n ctx && isActive(inlineCodeSchema.type(ctx)) && 'active'\n )}\n onmousedown=${onClick((ctx) => {\n const commands = ctx.get(commandsCtx)\n commands.call(toggleInlineCodeCommand.key)\n })}\n >\n ${config?.codeIcon?.() ?? codeIcon}\n </button>\n ${isLatexEnabled &&\n html`<button\n type=\"button\"\n class=${clsx(\n 'toolbar-item',\n ctx && containsNode(mathInlineSchema.type(ctx)) && 'active'\n )}\n onmousedown=${onClick(toggleLatex)}\n >\n ${config?.latexIcon?.() ?? functionsIcon}\n </button>`}\n <button\n type=\"button\"\n class=${clsx(\n 'toolbar-item',\n ctx && isActive(linkSchema.type(ctx)) && 'active'\n )}\n onmousedown=${onClick((ctx) => {\n const view = ctx.get(editorViewCtx)\n const { selection } = view.state\n\n if (isActive(linkSchema.type(ctx))) {\n ctx.get(linkTooltipAPI.key).removeLink(selection.from, selection.to)\n return\n }\n\n ctx.get(linkTooltipAPI.key).addLink(selection.from, selection.to)\n hide?.()\n })}\n >\n ${config?.linkIcon?.() ?? linkIcon}\n </button>\n </host>`\n}\n\ntoolbarComponent.props = {\n ctx: Object,\n hide: Function,\n show: Boolean,\n config: Object,\n selection: Object,\n}\n\nexport const ToolbarElement = c(toolbarComponent)\n","import { TooltipProvider, tooltipFactory } from '@milkdown/kit/plugin/tooltip'\nimport type { EditorState, PluginView } from '@milkdown/kit/prose/state'\nimport { TextSelection } from '@milkdown/kit/prose/state'\nimport type { Ctx } from '@milkdown/kit/ctx'\nimport type { EditorView } from '@milkdown/kit/prose/view'\nimport type { AtomicoThis } from 'atomico/types/dom'\nimport type { DefineFeature, Icon } from '../shared'\nimport { defIfNotExists } from '../../utils'\nimport type { ToolbarProps } from './component'\nimport { ToolbarElement } from './component'\n\ninterface ToolbarConfig {\n boldIcon: Icon\n codeIcon: Icon\n italicIcon: Icon\n linkIcon: Icon\n strikethroughIcon: Icon\n latexIcon: Icon\n}\n\nexport type ToolbarFeatureConfig = Partial<ToolbarConfig>\n\nconst toolbar = tooltipFactory('CREPE_TOOLBAR')\n\nclass ToolbarView implements PluginView {\n #tooltipProvider: TooltipProvider\n #content: AtomicoThis<ToolbarProps>\n constructor(ctx: Ctx, view: EditorView, config?: ToolbarFeatureConfig) {\n const content = new ToolbarElement()\n this.#content = content\n this.#content.ctx = ctx\n this.#content.hide = this.hide\n this.#content.config = config\n this.#content.selection = view.state.selection\n this.#tooltipProvider = new TooltipProvider({\n content: this.#content,\n debounce: 20,\n offset: 10,\n shouldShow(view: EditorView) {\n const { doc, selection } = view.state\n const { empty, from, to } = selection\n\n const isEmptyTextBlock =\n !doc.textBetween(from, to).length &&\n selection instanceof TextSelection\n\n const isNotTextBlock = !(selection instanceof TextSelection)\n\n const activeElement = (view.dom.getRootNode() as ShadowRoot | Document)\n .activeElement\n const isTooltipChildren = content.contains(activeElement)\n\n const notHasFocus = !view.hasFocus() && !isTooltipChildren\n\n const isReadonly = !view.editable\n\n if (\n notHasFocus ||\n isNotTextBlock ||\n empty ||\n isEmptyTextBlock ||\n isReadonly\n )\n return false\n\n return true\n },\n })\n this.#tooltipProvider.onShow = () => {\n this.#content.show = true\n }\n this.#tooltipProvider.onHide = () => {\n this.#content.show = false\n }\n this.update(view)\n }\n\n update = (view: EditorView, prevState?: EditorState) => {\n this.#tooltipProvider.update(view, prevState)\n this.#content.selection = view.state.selection\n }\n\n destroy = () => {\n this.#tooltipProvider.destroy()\n this.#content.remove()\n }\n\n hide = () => {\n this.#tooltipProvider.hide()\n }\n}\n\ndefIfNotExists('milkdown-toolbar', ToolbarElement)\nexport const defineFeature: DefineFeature<ToolbarFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => {\n ctx.set(toolbar.key, {\n view: (view) => new ToolbarView(ctx, view, config),\n })\n })\n .use(toolbar)\n}\n"],"names":["useUpdate","useEffect","editorViewCtx","NodeSelection","FeaturesCtx","CrepeFeature","ctx","mathInlineSchema","selection","_tr","TextSelection","html","strongSchema","commandsCtx","toggleStrongCommand","boldIcon","emphasisSchema","toggleEmphasisCommand","italicIcon","strikethroughSchema","toggleStrikethroughCommand","strikethroughIcon","inlineCodeSchema","toggleInlineCodeCommand","codeIcon","functionsIcon","linkSchema","linkTooltipAPI","linkIcon","c","tooltipFactory","TooltipProvider","view","defIfNotExists"],"mappings":"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"}
@@ -1,65 +0,0 @@
1
- 'use strict';
2
-
3
- var codeBlock = require('@milkdown/kit/component/code-block');
4
- var codemirror = require('codemirror');
5
- var view = require('@codemirror/view');
6
- var commands = require('@codemirror/commands');
7
- var atomico = require('atomico');
8
- var functions = require('./functions-Dk90yOUc.js');
9
-
10
- const visibilityOffIcon = atomico.html`
11
- <svg
12
- xmlns="http://www.w3.org/2000/svg"
13
- height="24px"
14
- viewBox="0 -960 960 960"
15
- width="24px"
16
- >
17
- <path
18
- d="m644-428-58-58q9-47-27-88t-93-32l-58-58q17-8 34.5-12t37.5-4q75 0 127.5 52.5T660-500q0 20-4 37.5T644-428Zm128 126-58-56q38-29 67.5-63.5T832-500q-50-101-143.5-160.5T480-720q-29 0-57 4t-55 12l-62-62q41-17 84-25.5t90-8.5q151 0 269 83.5T920-500q-23 59-60.5 109.5T772-302Zm20 246L624-222q-35 11-70.5 16.5T480-200q-151 0-269-83.5T40-500q21-53 53-98.5t73-81.5L56-792l56-56 736 736-56 56ZM222-624q-29 26-53 57t-41 67q50 101 143.5 160.5T480-280q20 0 39-2.5t39-5.5l-36-38q-11 3-21 4.5t-21 1.5q-75 0-127.5-52.5T300-500q0-11 1.5-21t4.5-21l-84-82Zm319 93Zm-151 75Z"
19
- />
20
- </svg>
21
- `;
22
-
23
- const defineFeature = (editor, config = {}) => {
24
- editor.config(async (ctx) => {
25
- let { languages, theme } = config;
26
- if (!languages) {
27
- const { languages: langList } = await import('@codemirror/language-data');
28
- languages = langList;
29
- }
30
- if (!theme) {
31
- const { oneDark } = await import('@codemirror/theme-one-dark');
32
- theme = oneDark;
33
- }
34
- ctx.update(codeBlock.codeBlockConfig.key, (defaultConfig) => {
35
- var _a;
36
- return {
37
- extensions: [
38
- view.keymap.of(commands.defaultKeymap.concat(commands.indentWithTab)),
39
- codemirror.basicSetup,
40
- theme,
41
- ...(_a = config == null ? void 0 : config.extensions) != null ? _a : []
42
- ],
43
- languages,
44
- expandIcon: config.expandIcon || (() => functions.chevronDownIcon),
45
- searchIcon: config.searchIcon || (() => functions.searchIcon),
46
- clearSearchIcon: config.clearSearchIcon || (() => functions.clearIcon),
47
- searchPlaceholder: config.searchPlaceholder || "Search language",
48
- noResultText: config.noResultText || "No result",
49
- renderLanguage: config.renderLanguage || defaultConfig.renderLanguage,
50
- renderPreview: config.renderPreview || defaultConfig.renderPreview,
51
- previewToggleButton: (previewOnlyMode) => {
52
- var _a2, _b;
53
- return atomico.html`
54
- ${((_a2 = config.previewToggleIcon) == null ? void 0 : _a2.call(config, previewOnlyMode)) || (previewOnlyMode ? functions.editIcon : visibilityOffIcon)}
55
- ${((_b = config.previewToggleText) == null ? void 0 : _b.call(config, previewOnlyMode)) || (previewOnlyMode ? "Edit" : "Hide")}
56
- `;
57
- },
58
- previewLabel: config.previewLabel || defaultConfig.previewLabel
59
- };
60
- });
61
- }).use(codeBlock.codeBlockComponent);
62
- };
63
-
64
- exports.defineFeature = defineFeature;
65
- //# sourceMappingURL=index-DQll67YS.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-DQll67YS.js","sources":["../../src/icons/visibility-off.ts","../../src/feature/code-mirror/index.ts"],"sourcesContent":["import { html } from 'atomico'\n\nexport const visibilityOffIcon = html`\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n height=\"24px\"\n viewBox=\"0 -960 960 960\"\n width=\"24px\"\n >\n <path\n d=\"m644-428-58-58q9-47-27-88t-93-32l-58-58q17-8 34.5-12t37.5-4q75 0 127.5 52.5T660-500q0 20-4 37.5T644-428Zm128 126-58-56q38-29 67.5-63.5T832-500q-50-101-143.5-160.5T480-720q-29 0-57 4t-55 12l-62-62q41-17 84-25.5t90-8.5q151 0 269 83.5T920-500q-23 59-60.5 109.5T772-302Zm20 246L624-222q-35 11-70.5 16.5T480-200q-151 0-269-83.5T40-500q21-53 53-98.5t73-81.5L56-792l56-56 736 736-56 56ZM222-624q-29 26-53 57t-41 67q50 101 143.5 160.5T480-280q20 0 39-2.5t39-5.5l-36-38q-11 3-21 4.5t-21 1.5q-75 0-127.5-52.5T300-500q0-11 1.5-21t4.5-21l-84-82Zm319 93Zm-151 75Z\"\n />\n </svg>\n`\n","import {\n codeBlockComponent,\n codeBlockConfig,\n} from '@milkdown/kit/component/code-block'\nimport type { LanguageDescription } from '@codemirror/language'\nimport type { Extension } from '@codemirror/state'\nimport { basicSetup } from 'codemirror'\nimport { keymap } from '@codemirror/view'\nimport { defaultKeymap, indentWithTab } from '@codemirror/commands'\nimport { html } from 'atomico'\nimport type { DefineFeature, Icon } from '../shared'\nimport { chevronDownIcon, clearIcon, editIcon, searchIcon } from '../../icons'\nimport { visibilityOffIcon } from '../../icons/visibility-off'\n\ninterface CodeMirrorConfig {\n extensions: Extension[]\n languages: LanguageDescription[]\n theme: Extension\n\n expandIcon: Icon\n searchIcon: Icon\n clearSearchIcon: Icon\n\n searchPlaceholder: string\n noResultText: string\n\n renderLanguage: (\n language: string,\n selected: boolean\n ) => ReturnType<typeof html> | string\n\n renderPreview: (\n language: string,\n content: string\n ) => string | HTMLElement | null\n\n previewToggleIcon: (previewOnlyMode: boolean) => ReturnType<Icon>\n previewToggleText: (previewOnlyMode: boolean) => ReturnType<typeof html>\n previewLabel: () => ReturnType<typeof html>\n}\nexport type CodeMirrorFeatureConfig = Partial<CodeMirrorConfig>\n\nexport const defineFeature: DefineFeature<CodeMirrorFeatureConfig> = (\n editor,\n config = {}\n) => {\n editor\n .config(async (ctx) => {\n let { languages, theme } = config\n if (!languages) {\n const { languages: langList } = await import(\n '@codemirror/language-data'\n )\n languages = langList\n }\n if (!theme) {\n const { oneDark } = await import('@codemirror/theme-one-dark')\n theme = oneDark\n }\n ctx.update(codeBlockConfig.key, (defaultConfig) => ({\n extensions: [\n keymap.of(defaultKeymap.concat(indentWithTab)),\n basicSetup,\n theme,\n ...(config?.extensions ?? []),\n ],\n languages,\n\n expandIcon: config.expandIcon || (() => chevronDownIcon),\n searchIcon: config.searchIcon || (() => searchIcon),\n clearSearchIcon: config.clearSearchIcon || (() => clearIcon),\n searchPlaceholder: config.searchPlaceholder || 'Search language',\n noResultText: config.noResultText || 'No result',\n renderLanguage: config.renderLanguage || defaultConfig.renderLanguage,\n renderPreview: config.renderPreview || defaultConfig.renderPreview,\n previewToggleButton: (previewOnlyMode) => {\n return html`\n ${config.previewToggleIcon?.(previewOnlyMode) ||\n (previewOnlyMode ? editIcon : visibilityOffIcon)}\n ${config.previewToggleText?.(previewOnlyMode) ||\n (previewOnlyMode ? 'Edit' : 'Hide')}\n `\n },\n previewLabel: config.previewLabel || defaultConfig.previewLabel,\n }))\n })\n .use(codeBlockComponent)\n}\n"],"names":["html","codeBlockConfig","keymap","defaultKeymap","indentWithTab","basicSetup","chevronDownIcon","searchIcon","clearIcon","_a","editIcon","codeBlockComponent"],"mappings":";;;;;;;;;AAEO,MAAM,iBAAoB,GAAAA,YAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;;ACwC1B,MAAM,aAAwD,GAAA,CACnE,MACA,EAAA,MAAA,GAAS,EACN,KAAA;AACH,EACG,MAAA,CAAA,MAAA,CAAO,OAAO,GAAQ,KAAA;AACrB,IAAI,IAAA,EAAE,SAAW,EAAA,KAAA,EAAU,GAAA,MAAA;AAC3B,IAAA,IAAI,CAAC,SAAW,EAAA;AACd,MAAA,MAAM,EAAE,SAAW,EAAA,QAAA,EAAa,GAAA,MAAM,OACpC,2BACF,CAAA;AACA,MAAY,SAAA,GAAA,QAAA;AAAA;AAEd,IAAA,IAAI,CAAC,KAAO,EAAA;AACV,MAAA,MAAM,EAAE,OAAA,EAAY,GAAA,MAAM,OAAO,4BAA4B,CAAA;AAC7D,MAAQ,KAAA,GAAA,OAAA;AAAA;AAEV,IAAA,GAAA,CAAI,MAAO,CAAAC,yBAAA,CAAgB,GAAK,EAAA,CAAC,aAAe,KAAA;AA3DtD,MAAA,IAAA,EAAA;AA2D0D,MAAA,OAAA;AAAA,QAClD,UAAY,EAAA;AAAA,UACVC,WAAO,CAAA,EAAA,CAAGC,sBAAc,CAAA,MAAA,CAAOC,sBAAa,CAAC,CAAA;AAAA,UAC7CC,qBAAA;AAAA,UACA,KAAA;AAAA,UACA,GAAI,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAsB;AAAC,SAC7B;AAAA,QACA,SAAA;AAAA,QAEA,UAAA,EAAY,MAAO,CAAA,UAAA,KAAe,MAAMC,yBAAA,CAAA;AAAA,QACxC,UAAA,EAAY,MAAO,CAAA,UAAA,KAAe,MAAMC,oBAAA,CAAA;AAAA,QACxC,eAAA,EAAiB,MAAO,CAAA,eAAA,KAAoB,MAAMC,mBAAA,CAAA;AAAA,QAClD,iBAAA,EAAmB,OAAO,iBAAqB,IAAA,iBAAA;AAAA,QAC/C,YAAA,EAAc,OAAO,YAAgB,IAAA,WAAA;AAAA,QACrC,cAAA,EAAgB,MAAO,CAAA,cAAA,IAAkB,aAAc,CAAA,cAAA;AAAA,QACvD,aAAA,EAAe,MAAO,CAAA,aAAA,IAAiB,aAAc,CAAA,aAAA;AAAA,QACrD,mBAAA,EAAqB,CAAC,eAAoB,KAAA;AA3ElD,UAAA,IAAAC,GAAA,EAAA,EAAA;AA4EU,UAAO,OAAAT,YAAA;AAAA,YACHS,EAAAA,CAAAA,CAAAA,GAAAA,GAAA,OAAO,iBAAP,KAAA,IAAA,GAAA,MAAA,GAAAA,IAAA,IAA2B,CAAA,MAAA,EAAA,eAAA,CAAA,MAC5B,eAAkB,GAAAC,kBAAA,GAAW,iBAAkB,CAAA;AAAA,YAAA,EAAA,CAAA,CAC9C,YAAO,iBAAP,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,EAA2B,eAC5B,CAAA,MAAA,eAAA,GAAkB,SAAS,MAAO,CAAA;AAAA,UAAA,CAAA;AAAA,SAEvC;AAAA,QACA,YAAA,EAAc,MAAO,CAAA,YAAA,IAAgB,aAAc,CAAA;AAAA,OACrD;AAAA,KAAE,CAAA;AAAA,GACH,CACA,CAAA,GAAA,CAAIC,4BAAkB,CAAA;AAC3B;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-Dub20F3z.js","sources":["../../src/feature/placeholder/index.ts"],"sourcesContent":["import { $ctx, $prose } from '@milkdown/kit/utils'\nimport type { EditorState } from '@milkdown/kit/prose/state'\nimport { Plugin, PluginKey } from '@milkdown/kit/prose/state'\nimport type { Node } from '@milkdown/kit/prose/model'\nimport { Decoration, DecorationSet } from '@milkdown/kit/prose/view'\nimport { findParent } from '@milkdown/kit/prose'\nimport type { DefineFeature } from '../shared'\nimport { isInCodeBlock, isInList } from '../../utils'\n\nfunction isDocEmpty(doc: Node) {\n return doc.childCount <= 1 && !doc.firstChild?.content.size\n}\n\nfunction createPlaceholderDecoration(\n state: EditorState,\n placeholderText: string\n): Decoration | null {\n const { selection } = state\n if (!selection.empty) return null\n\n const $pos = selection.$anchor\n const node = $pos.parent\n if (node.content.size > 0) return null\n\n const inTable = findParent((node) => node.type.name === 'table')($pos)\n if (inTable) return null\n\n const before = $pos.before()\n\n return Decoration.node(before, before + node.nodeSize, {\n class: 'crepe-placeholder',\n 'data-placeholder': placeholderText,\n })\n}\n\ninterface PlaceholderConfig {\n text: string\n mode: 'doc' | 'block'\n}\n\nexport type PlaceHolderFeatureConfig = Partial<PlaceholderConfig>\n\nexport const placeholderConfig = $ctx(\n {\n text: 'Please enter...',\n mode: 'block',\n } as PlaceholderConfig,\n 'placeholderConfigCtx'\n)\n\nexport const placeholderPlugin = $prose((ctx) => {\n return new Plugin({\n key: new PluginKey('CREPE_PLACEHOLDER'),\n props: {\n decorations: (state) => {\n const config = ctx.get(placeholderConfig.key)\n if (config.mode === 'doc' && !isDocEmpty(state.doc)) return null\n\n if (isInCodeBlock(state.selection) || isInList(state.selection))\n return null\n\n const placeholderText = config.text ?? 'Please enter...'\n const deco = createPlaceholderDecoration(state, placeholderText)\n if (!deco) return null\n\n return DecorationSet.create(state.doc, [deco])\n },\n },\n })\n})\n\nexport const defineFeature: DefineFeature<PlaceHolderFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => {\n if (config) {\n ctx.update(placeholderConfig.key, (prev) => {\n return {\n ...prev,\n ...config,\n }\n })\n }\n })\n .use(placeholderPlugin)\n .use(placeholderConfig)\n}\n"],"names":["findParent","node","Decoration","$ctx","$prose","Plugin","PluginKey","isInCodeBlock","isInList","DecorationSet"],"mappings":";;;;;;;;AASA,SAAS,WAAW,GAAW,EAAA;AAT/B,EAAA,IAAA,EAAA;AAUE,EAAA,OAAO,IAAI,UAAc,IAAA,CAAA,IAAK,GAAC,EAAI,GAAA,GAAA,CAAA,UAAA,KAAJ,mBAAgB,OAAQ,CAAA,IAAA,CAAA;AACzD;AAEA,SAAS,2BAAA,CACP,OACA,eACmB,EAAA;AACnB,EAAM,MAAA,EAAE,WAAc,GAAA,KAAA;AACtB,EAAI,IAAA,CAAC,SAAU,CAAA,KAAA,EAAc,OAAA,IAAA;AAE7B,EAAA,MAAM,OAAO,SAAU,CAAA,OAAA;AACvB,EAAA,MAAM,OAAO,IAAK,CAAA,MAAA;AAClB,EAAA,IAAI,IAAK,CAAA,OAAA,CAAQ,IAAO,GAAA,CAAA,EAAU,OAAA,IAAA;AAElC,EAAM,MAAA,OAAA,GAAUA,iBAAW,CAACC,KAAAA,KAASA,MAAK,IAAK,CAAA,IAAA,KAAS,OAAO,CAAA,CAAE,IAAI,CAAA;AACrE,EAAA,IAAI,SAAgB,OAAA,IAAA;AAEpB,EAAM,MAAA,MAAA,GAAS,KAAK,MAAO,EAAA;AAE3B,EAAA,OAAOC,eAAW,CAAA,IAAA,CAAK,MAAQ,EAAA,MAAA,GAAS,KAAK,QAAU,EAAA;AAAA,IACrD,KAAO,EAAA,mBAAA;AAAA,IACP,kBAAoB,EAAA;AAAA,GACrB,CAAA;AACH;AASO,MAAM,iBAAoB,GAAAC,UAAA;AAAA,EAC/B;AAAA,IACE,IAAM,EAAA,iBAAA;AAAA,IACN,IAAM,EAAA;AAAA,GACR;AAAA,EACA;AACF;AAEa,MAAA,iBAAA,GAAoBC,YAAO,CAAA,CAAC,GAAQ,KAAA;AAC/C,EAAA,OAAO,IAAIC,YAAO,CAAA;AAAA,IAChB,GAAA,EAAK,IAAIC,eAAA,CAAU,mBAAmB,CAAA;AAAA,IACtC,KAAO,EAAA;AAAA,MACL,WAAA,EAAa,CAAC,KAAU,KAAA;AAtD9B,QAAA,IAAA,EAAA;AAuDQ,QAAA,MAAM,MAAS,GAAA,GAAA,CAAI,GAAI,CAAA,iBAAA,CAAkB,GAAG,CAAA;AAC5C,QAAI,IAAA,MAAA,CAAO,SAAS,KAAS,IAAA,CAAC,WAAW,KAAM,CAAA,GAAG,GAAU,OAAA,IAAA;AAE5D,QAAA,IAAIC,oBAAc,KAAM,CAAA,SAAS,CAAK,IAAAC,cAAA,CAAS,MAAM,SAAS,CAAA;AAC5D,UAAO,OAAA,IAAA;AAET,QAAM,MAAA,eAAA,GAAA,CAAkB,EAAO,GAAA,MAAA,CAAA,IAAA,KAAP,IAAe,GAAA,EAAA,GAAA,iBAAA;AACvC,QAAM,MAAA,IAAA,GAAO,2BAA4B,CAAA,KAAA,EAAO,eAAe,CAAA;AAC/D,QAAI,IAAA,CAAC,MAAa,OAAA,IAAA;AAElB,QAAA,OAAOC,mBAAc,MAAO,CAAA,KAAA,CAAM,GAAK,EAAA,CAAC,IAAI,CAAC,CAAA;AAAA;AAC/C;AACF,GACD,CAAA;AACH,CAAC;AAEY,MAAA,aAAA,GAAyD,CACpE,MAAA,EACA,MACG,KAAA;AACH,EACG,MAAA,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA;AACf,IAAA,IAAI,MAAQ,EAAA;AACV,MAAA,GAAA,CAAI,MAAO,CAAA,iBAAA,CAAkB,GAAK,EAAA,CAAC,IAAS,KAAA;AAC1C,QAAO,OAAA;AAAA,UACL,GAAG,IAAA;AAAA,UACH,GAAG;AAAA,SACL;AAAA,OACD,CAAA;AAAA;AACH,GACD,CACA,CAAA,GAAA,CAAI,iBAAiB,CAAA,CACrB,IAAI,iBAAiB,CAAA;AAC1B;;;;;;"}
@@ -1,35 +0,0 @@
1
- 'use strict';
2
-
3
- var listItemBlock = require('@milkdown/kit/component/list-item-block');
4
- var atomico = require('atomico');
5
- var clsx = require('clsx');
6
- var functions = require('./functions-Dk90yOUc.js');
7
-
8
- function configureListItem(ctx, config) {
9
- ctx.set(listItemBlock.listItemBlockConfig.key, {
10
- renderLabel: ({ label, listType, checked, readonly }) => {
11
- var _a, _b, _c, _d, _e, _f;
12
- if (checked == null) {
13
- if (listType === "bullet")
14
- return atomico.html`<span class="label"
15
- >${(_b = (_a = config == null ? void 0 : config.bulletIcon) == null ? void 0 : _a.call(config)) != null ? _b : functions.bulletIcon}</span
16
- >`;
17
- return atomico.html`<span class="label">${label}</span>`;
18
- }
19
- if (checked)
20
- return atomico.html`<span
21
- class=${clsx("label checkbox", readonly && "readonly")}
22
- >${(_d = (_c = config == null ? void 0 : config.checkBoxCheckedIcon) == null ? void 0 : _c.call(config)) != null ? _d : functions.checkBoxCheckedIcon}</span
23
- >`;
24
- return atomico.html`<span class=${clsx("label checkbox", readonly && "readonly")}
25
- >${(_f = (_e = config == null ? void 0 : config.checkBoxUncheckedIcon) == null ? void 0 : _e.call(config)) != null ? _f : functions.checkBoxUncheckedIcon}</span
26
- >`;
27
- }
28
- });
29
- }
30
- const defineFeature = (editor, config) => {
31
- editor.config((ctx) => configureListItem(ctx, config)).use(listItemBlock.listItemBlockComponent);
32
- };
33
-
34
- exports.defineFeature = defineFeature;
35
- //# sourceMappingURL=index-hPk2gbSt.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-hPk2gbSt.js","sources":["../../src/feature/list-item/index.ts"],"sourcesContent":["import type { Ctx } from '@milkdown/kit/ctx'\nimport {\n listItemBlockComponent,\n listItemBlockConfig,\n} from '@milkdown/kit/component/list-item-block'\nimport { html } from 'atomico'\nimport clsx from 'clsx'\nimport type { DefineFeature, Icon } from '../shared'\nimport {\n bulletIcon,\n checkBoxCheckedIcon,\n checkBoxUncheckedIcon,\n} from '../../icons'\n\nexport interface ListItemConfig {\n bulletIcon: Icon\n checkBoxCheckedIcon: Icon\n checkBoxUncheckedIcon: Icon\n}\n\nexport type ListItemFeatureConfig = Partial<ListItemConfig>\n\nfunction configureListItem(ctx: Ctx, config?: ListItemFeatureConfig) {\n ctx.set(listItemBlockConfig.key, {\n renderLabel: ({ label, listType, checked, readonly }) => {\n if (checked == null) {\n if (listType === 'bullet')\n return html`<span class=\"label\"\n >${config?.bulletIcon?.() ?? bulletIcon}</span\n >`\n\n return html`<span class=\"label\">${label}</span>`\n }\n\n if (checked)\n return html`<span\n class=${clsx('label checkbox', readonly && 'readonly')}\n >${config?.checkBoxCheckedIcon?.() ?? checkBoxCheckedIcon}</span\n >`\n\n return html`<span class=${clsx('label checkbox', readonly && 'readonly')}\n >${config?.checkBoxUncheckedIcon?.() ?? checkBoxUncheckedIcon}</span\n >`\n },\n })\n}\n\nexport const defineFeature: DefineFeature<ListItemFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config((ctx) => configureListItem(ctx, config))\n .use(listItemBlockComponent)\n}\n"],"names":["listItemBlockConfig","html","bulletIcon","checkBoxCheckedIcon","checkBoxUncheckedIcon","listItemBlockComponent"],"mappings":";;;;;;;AAsBA,SAAS,iBAAA,CAAkB,KAAU,MAAgC,EAAA;AACnE,EAAI,GAAA,CAAA,GAAA,CAAIA,kCAAoB,GAAK,EAAA;AAAA,IAC/B,aAAa,CAAC,EAAE,OAAO,QAAU,EAAA,OAAA,EAAS,UAAe,KAAA;AAxB7D,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AAyBM,MAAA,IAAI,WAAW,IAAM,EAAA;AACnB,QAAA,IAAI,QAAa,KAAA,QAAA;AACf,UAAO,OAAAC,YAAA,CAAA;AAAA,aACF,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAA0BC,oBAAU,CAAA;AAAA,WAAA,CAAA;AAG3C,QAAA,OAAOD,mCAA2B,KAAK,CAAA,OAAA,CAAA;AAAA;AAGzC,MAAI,IAAA,OAAA;AACF,QAAO,OAAAA,YAAA,CAAA;AAAA,gBAAA,EACG,IAAK,CAAA,gBAAA,EAAkB,QAAY,IAAA,UAAU,CAAC;AAAA,WACnD,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,mBAAR,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAmCE,6BAAmB,CAAA;AAAA,SAAA,CAAA;AAG7D,MAAA,OAAOF,YAAmB,CAAA,YAAA,EAAA,IAAA,CAAK,gBAAkB,EAAA,QAAA,IAAY,UAAU,CAAC;AAAA,SACnE,EAAA,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,qBAAR,KAAA,IAAA,GAAA,MAAA,GAAA,EAAA,CAAA,IAAA,CAAA,MAAA,CAAA,KAAA,IAAA,GAAA,EAAA,GAAqCG,+BAAqB,CAAA;AAAA,OAAA,CAAA;AAAA;AAEjE,GACD,CAAA;AACH;AAEa,MAAA,aAAA,GAAsD,CACjE,MAAA,EACA,MACG,KAAA;AACH,EACG,MAAA,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA,iBAAA,CAAkB,KAAK,MAAM,CAAC,CAC9C,CAAA,GAAA,CAAIC,oCAAsB,CAAA;AAC/B;;;;"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-nrFkJeLW.js","sources":["../../src/feature/link-tooltip/index.ts"],"sourcesContent":["import {\n configureLinkTooltip,\n linkTooltipConfig,\n linkTooltipPlugin,\n} from '@milkdown/kit/component/link-tooltip'\nimport type { DefineFeature, Icon } from '../shared'\nimport { confirmIcon, copyIcon, editIcon, removeIcon } from '../../icons'\n\ninterface LinkTooltipConfig {\n linkIcon: Icon\n editButton: Icon\n removeButton: Icon\n confirmButton: Icon\n inputPlaceholder: string\n onCopyLink: (link: string) => void\n}\n\nexport type LinkTooltipFeatureConfig = Partial<LinkTooltipConfig>\n\nexport const defineFeature: DefineFeature<LinkTooltipFeatureConfig> = (\n editor,\n config\n) => {\n editor\n .config(configureLinkTooltip)\n .config((ctx) => {\n ctx.update(linkTooltipConfig.key, (prev) => ({\n ...prev,\n linkIcon: config?.linkIcon ?? (() => copyIcon),\n editButton: config?.editButton ?? (() => editIcon),\n removeButton: config?.removeButton ?? (() => removeIcon),\n confirmButton: config?.confirmButton ?? (() => confirmIcon),\n inputPlaceholder: config?.inputPlaceholder ?? 'Paste link...',\n onCopyLink: config?.onCopyLink ?? (() => {}),\n }))\n })\n .use(linkTooltipPlugin)\n}\n"],"names":["configureLinkTooltip","linkTooltipConfig","copyIcon","editIcon","removeIcon","confirmIcon","linkTooltipPlugin"],"mappings":";;;;;;AAmBa,MAAA,aAAA,GAAyD,CACpE,MAAA,EACA,MACG,KAAA;AACH,EAAA,MAAA,CACG,MAAO,CAAAA,gCAAoB,CAC3B,CAAA,MAAA,CAAO,CAAC,GAAQ,KAAA;AACf,IAAA,GAAA,CAAI,MAAO,CAAAC,6BAAA,CAAkB,GAAK,EAAA,CAAC,IAAM,KAAA;AA1B/C,MAAA,IAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA,EAAA;AA0BmD,MAAA,OAAA;AAAA,QAC3C,GAAG,IAAA;AAAA,QACH,QAAU,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,QAAR,KAAA,IAAA,GAAA,EAAA,GAAqB,MAAMC,kBAAA;AAAA,QACrC,UAAY,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAuB,MAAMC,kBAAA;AAAA,QACzC,YAAc,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,YAAR,KAAA,IAAA,GAAA,EAAA,GAAyB,MAAMC,oBAAA;AAAA,QAC7C,aAAe,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,aAAR,KAAA,IAAA,GAAA,EAAA,GAA0B,MAAMC,qBAAA;AAAA,QAC/C,gBAAA,EAAA,CAAkB,EAAQ,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAA,gBAAA,KAAR,IAA4B,GAAA,EAAA,GAAA,eAAA;AAAA,QAC9C,UAAY,EAAA,CAAA,EAAA,GAAA,MAAA,IAAA,IAAA,GAAA,MAAA,GAAA,MAAA,CAAQ,UAAR,KAAA,IAAA,GAAA,EAAA,GAAuB,MAAM;AAAA;AAAC,OAC5C;AAAA,KAAE,CAAA;AAAA,GACH,CACA,CAAA,GAAA,CAAIC,6BAAiB,CAAA;AAC1B;;;;"}