@gravity-ui/markdown-editor 15.1.0 → 15.2.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 (221) hide show
  1. package/build/cjs/bundle/Editor.d.ts +3 -0
  2. package/build/cjs/bundle/Editor.js +21 -2
  3. package/build/cjs/bundle/Editor.js.map +1 -1
  4. package/build/cjs/bundle/MarkdownEditorView.js +2 -1
  5. package/build/cjs/bundle/MarkdownEditorView.js.map +1 -1
  6. package/build/cjs/bundle/MarkupEditorView.js +6 -1
  7. package/build/cjs/bundle/MarkupEditorView.js.map +1 -1
  8. package/build/cjs/bundle/MarkupManager.d.ts +3 -6
  9. package/build/cjs/bundle/MarkupManager.js +5 -5
  10. package/build/cjs/bundle/MarkupManager.js.map +1 -1
  11. package/build/cjs/bundle/WysiwygEditorView.js +6 -1
  12. package/build/cjs/bundle/WysiwygEditorView.js.map +1 -1
  13. package/build/cjs/bundle/types.d.ts +2 -0
  14. package/build/cjs/bundle/types.js.map +1 -1
  15. package/build/cjs/bundle/useMarkdownEditor.js +4 -2
  16. package/build/cjs/bundle/useMarkdownEditor.js.map +1 -1
  17. package/build/cjs/core/Editor.d.ts +3 -1
  18. package/build/cjs/core/Editor.js +6 -3
  19. package/build/cjs/core/Editor.js.map +1 -1
  20. package/build/cjs/core/ExtensionBuilder.d.ts +3 -1
  21. package/build/cjs/core/ExtensionBuilder.js +6 -1
  22. package/build/cjs/core/ExtensionBuilder.js.map +1 -1
  23. package/build/cjs/core/ExtensionsManager.d.ts +4 -2
  24. package/build/cjs/core/ExtensionsManager.js +6 -5
  25. package/build/cjs/core/ExtensionsManager.js.map +1 -1
  26. package/build/cjs/core/ParserTokensRegistry.d.ts +6 -0
  27. package/build/cjs/core/ParserTokensRegistry.js +9 -1
  28. package/build/cjs/core/ParserTokensRegistry.js.map +1 -1
  29. package/build/cjs/core/index.d.ts +1 -0
  30. package/build/cjs/core/index.js +3 -1
  31. package/build/cjs/core/index.js.map +1 -1
  32. package/build/cjs/core/markdown/MarkdownParser.d.ts +9 -1
  33. package/build/cjs/core/markdown/MarkdownParser.js +7 -3
  34. package/build/cjs/core/markdown/MarkdownParser.js.map +1 -1
  35. package/build/cjs/core/utils/logger.d.ts +3 -0
  36. package/build/cjs/core/utils/logger.js +12 -0
  37. package/build/cjs/core/utils/logger.js.map +1 -0
  38. package/build/cjs/core/utils/metrics.d.ts +2 -1
  39. package/build/cjs/core/utils/metrics.js +8 -2
  40. package/build/cjs/core/utils/metrics.js.map +1 -1
  41. package/build/cjs/extensions/behavior/Autocomplete/handler.d.ts +3 -1
  42. package/build/cjs/extensions/behavior/Autocomplete/handler.js +16 -10
  43. package/build/cjs/extensions/behavior/Autocomplete/handler.js.map +1 -1
  44. package/build/cjs/extensions/behavior/Autocomplete/index.js +1 -1
  45. package/build/cjs/extensions/behavior/Autocomplete/index.js.map +1 -1
  46. package/build/cjs/extensions/behavior/Clipboard/clipboard.d.ts +3 -1
  47. package/build/cjs/extensions/behavior/Clipboard/clipboard.js +31 -3
  48. package/build/cjs/extensions/behavior/Clipboard/clipboard.js.map +1 -1
  49. package/build/cjs/extensions/behavior/Clipboard/index.js +4 -0
  50. package/build/cjs/extensions/behavior/Clipboard/index.js.map +1 -1
  51. package/build/cjs/extensions/behavior/CommandMenu/handler.d.ts +3 -1
  52. package/build/cjs/extensions/behavior/CommandMenu/handler.js +6 -3
  53. package/build/cjs/extensions/behavior/CommandMenu/handler.js.map +1 -1
  54. package/build/cjs/extensions/behavior/CommandMenu/index.js +5 -3
  55. package/build/cjs/extensions/behavior/CommandMenu/index.js.map +1 -1
  56. package/build/cjs/extensions/behavior/EditorModeKeymap/index.js +13 -2
  57. package/build/cjs/extensions/behavior/EditorModeKeymap/index.js.map +1 -1
  58. package/build/cjs/extensions/behavior/FilePaste/index.d.ts +1 -1
  59. package/build/cjs/extensions/behavior/FilePaste/index.js +12 -0
  60. package/build/cjs/extensions/behavior/FilePaste/index.js.map +1 -1
  61. package/build/cjs/extensions/behavior/SelectionContext/index.js +3 -3
  62. package/build/cjs/extensions/behavior/SelectionContext/index.js.map +1 -1
  63. package/build/cjs/extensions/behavior/SelectionContext/tooltip.d.ts +3 -1
  64. package/build/cjs/extensions/behavior/SelectionContext/tooltip.js +7 -2
  65. package/build/cjs/extensions/behavior/SelectionContext/tooltip.js.map +1 -1
  66. package/build/cjs/extensions/behavior/utils/upload.d.ts +2 -0
  67. package/build/cjs/extensions/behavior/utils/upload.js +3 -0
  68. package/build/cjs/extensions/behavior/utils/upload.js.map +1 -1
  69. package/build/cjs/extensions/markdown/Breaks/index.js +2 -1
  70. package/build/cjs/extensions/markdown/Breaks/index.js.map +1 -1
  71. package/build/cjs/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js +2 -1
  72. package/build/cjs/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js.map +1 -1
  73. package/build/cjs/extensions/markdown/Html/index.js +2 -1
  74. package/build/cjs/extensions/markdown/Html/index.js.map +1 -1
  75. package/build/cjs/extensions/markdown/Link/paste-plugin.d.ts +1 -1
  76. package/build/cjs/extensions/markdown/Link/paste-plugin.js +11 -0
  77. package/build/cjs/extensions/markdown/Link/paste-plugin.js.map +1 -1
  78. package/build/cjs/extensions/yfm/ImgSize/ImagePaste/index.d.ts +1 -1
  79. package/build/cjs/extensions/yfm/ImgSize/ImagePaste/index.js +14 -0
  80. package/build/cjs/extensions/yfm/ImgSize/ImagePaste/index.js.map +1 -1
  81. package/build/cjs/extensions/yfm/ImgSize/ImagePaste/upload.js +6 -5
  82. package/build/cjs/extensions/yfm/ImgSize/ImagePaste/upload.js.map +1 -1
  83. package/build/cjs/extensions/yfm/ImgSize/utils.d.ts +2 -1
  84. package/build/cjs/extensions/yfm/ImgSize/utils.js +3 -2
  85. package/build/cjs/extensions/yfm/ImgSize/utils.js.map +1 -1
  86. package/build/cjs/extensions/yfm/YfmFile/YfmFilePaste/index.d.ts +1 -1
  87. package/build/cjs/extensions/yfm/YfmFile/YfmFilePaste/index.js +15 -1
  88. package/build/cjs/extensions/yfm/YfmFile/YfmFilePaste/index.js.map +1 -1
  89. package/build/cjs/i18n/yfm-note/index.d.ts +1 -1
  90. package/build/cjs/logger.d.ts +75 -0
  91. package/build/cjs/logger.js +89 -1
  92. package/build/cjs/logger.js.map +1 -1
  93. package/build/cjs/markup/codemirror/create.d.ts +2 -0
  94. package/build/cjs/markup/codemirror/create.js +15 -4
  95. package/build/cjs/markup/codemirror/create.js.map +1 -1
  96. package/build/cjs/markup/codemirror/files-upload-plugin/plugin.js +13 -0
  97. package/build/cjs/markup/codemirror/files-upload-plugin/plugin.js.map +1 -1
  98. package/build/cjs/markup/codemirror/logger-facet.d.ts +3 -0
  99. package/build/cjs/markup/codemirror/logger-facet.js +9 -0
  100. package/build/cjs/markup/codemirror/logger-facet.js.map +1 -0
  101. package/build/cjs/utils/event-emitter.d.ts +1 -0
  102. package/build/cjs/utils/event-emitter.js +3 -0
  103. package/build/cjs/utils/event-emitter.js.map +1 -1
  104. package/build/cjs/utils/facet.d.ts +1 -0
  105. package/build/cjs/utils/facet.js +33 -0
  106. package/build/cjs/utils/facet.js.map +1 -0
  107. package/build/cjs/utils/keymap.js +7 -2
  108. package/build/cjs/utils/keymap.js.map +1 -1
  109. package/build/cjs/version.js +1 -1
  110. package/build/cjs/version.js.map +1 -1
  111. package/build/esm/bundle/Editor.d.ts +3 -0
  112. package/build/esm/bundle/Editor.js +22 -3
  113. package/build/esm/bundle/Editor.js.map +1 -1
  114. package/build/esm/bundle/MarkdownEditorView.js +3 -2
  115. package/build/esm/bundle/MarkdownEditorView.js.map +1 -1
  116. package/build/esm/bundle/MarkupEditorView.js +7 -2
  117. package/build/esm/bundle/MarkupEditorView.js.map +1 -1
  118. package/build/esm/bundle/MarkupManager.d.ts +3 -6
  119. package/build/esm/bundle/MarkupManager.js +5 -5
  120. package/build/esm/bundle/MarkupManager.js.map +1 -1
  121. package/build/esm/bundle/WysiwygEditorView.js +7 -2
  122. package/build/esm/bundle/WysiwygEditorView.js.map +1 -1
  123. package/build/esm/bundle/types.d.ts +2 -0
  124. package/build/esm/bundle/types.js.map +1 -1
  125. package/build/esm/bundle/useMarkdownEditor.js +5 -3
  126. package/build/esm/bundle/useMarkdownEditor.js.map +1 -1
  127. package/build/esm/core/Editor.d.ts +3 -1
  128. package/build/esm/core/Editor.js +6 -3
  129. package/build/esm/core/Editor.js.map +1 -1
  130. package/build/esm/core/ExtensionBuilder.d.ts +3 -1
  131. package/build/esm/core/ExtensionBuilder.js +6 -1
  132. package/build/esm/core/ExtensionBuilder.js.map +1 -1
  133. package/build/esm/core/ExtensionsManager.d.ts +4 -2
  134. package/build/esm/core/ExtensionsManager.js +6 -5
  135. package/build/esm/core/ExtensionsManager.js.map +1 -1
  136. package/build/esm/core/ParserTokensRegistry.d.ts +6 -0
  137. package/build/esm/core/ParserTokensRegistry.js +9 -1
  138. package/build/esm/core/ParserTokensRegistry.js.map +1 -1
  139. package/build/esm/core/index.d.ts +1 -0
  140. package/build/esm/core/index.js +1 -0
  141. package/build/esm/core/index.js.map +1 -1
  142. package/build/esm/core/markdown/MarkdownParser.d.ts +9 -1
  143. package/build/esm/core/markdown/MarkdownParser.js +7 -3
  144. package/build/esm/core/markdown/MarkdownParser.js.map +1 -1
  145. package/build/esm/core/utils/logger.d.ts +3 -0
  146. package/build/esm/core/utils/logger.js +8 -0
  147. package/build/esm/core/utils/logger.js.map +1 -0
  148. package/build/esm/core/utils/metrics.d.ts +2 -1
  149. package/build/esm/core/utils/metrics.js +8 -2
  150. package/build/esm/core/utils/metrics.js.map +1 -1
  151. package/build/esm/extensions/behavior/Autocomplete/handler.d.ts +3 -1
  152. package/build/esm/extensions/behavior/Autocomplete/handler.js +15 -9
  153. package/build/esm/extensions/behavior/Autocomplete/handler.js.map +1 -1
  154. package/build/esm/extensions/behavior/Autocomplete/index.js +1 -1
  155. package/build/esm/extensions/behavior/Autocomplete/index.js.map +1 -1
  156. package/build/esm/extensions/behavior/Clipboard/clipboard.d.ts +3 -1
  157. package/build/esm/extensions/behavior/Clipboard/clipboard.js +32 -4
  158. package/build/esm/extensions/behavior/Clipboard/clipboard.js.map +1 -1
  159. package/build/esm/extensions/behavior/Clipboard/index.js +4 -0
  160. package/build/esm/extensions/behavior/Clipboard/index.js.map +1 -1
  161. package/build/esm/extensions/behavior/CommandMenu/handler.d.ts +3 -1
  162. package/build/esm/extensions/behavior/CommandMenu/handler.js +7 -4
  163. package/build/esm/extensions/behavior/CommandMenu/handler.js.map +1 -1
  164. package/build/esm/extensions/behavior/CommandMenu/index.js +6 -4
  165. package/build/esm/extensions/behavior/CommandMenu/index.js.map +1 -1
  166. package/build/esm/extensions/behavior/EditorModeKeymap/index.js +13 -2
  167. package/build/esm/extensions/behavior/EditorModeKeymap/index.js.map +1 -1
  168. package/build/esm/extensions/behavior/FilePaste/index.d.ts +1 -1
  169. package/build/esm/extensions/behavior/FilePaste/index.js +12 -0
  170. package/build/esm/extensions/behavior/FilePaste/index.js.map +1 -1
  171. package/build/esm/extensions/behavior/SelectionContext/index.js +3 -3
  172. package/build/esm/extensions/behavior/SelectionContext/index.js.map +1 -1
  173. package/build/esm/extensions/behavior/SelectionContext/tooltip.d.ts +3 -1
  174. package/build/esm/extensions/behavior/SelectionContext/tooltip.js +8 -3
  175. package/build/esm/extensions/behavior/SelectionContext/tooltip.js.map +1 -1
  176. package/build/esm/extensions/behavior/utils/upload.d.ts +2 -0
  177. package/build/esm/extensions/behavior/utils/upload.js +3 -0
  178. package/build/esm/extensions/behavior/utils/upload.js.map +1 -1
  179. package/build/esm/extensions/markdown/Breaks/index.js +3 -2
  180. package/build/esm/extensions/markdown/Breaks/index.js.map +1 -1
  181. package/build/esm/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js +3 -2
  182. package/build/esm/extensions/markdown/CodeBlock/CodeBlockHighlight/CodeBlockHighlight.js.map +1 -1
  183. package/build/esm/extensions/markdown/Html/index.js +3 -2
  184. package/build/esm/extensions/markdown/Html/index.js.map +1 -1
  185. package/build/esm/extensions/markdown/Link/paste-plugin.d.ts +1 -1
  186. package/build/esm/extensions/markdown/Link/paste-plugin.js +11 -0
  187. package/build/esm/extensions/markdown/Link/paste-plugin.js.map +1 -1
  188. package/build/esm/extensions/yfm/ImgSize/ImagePaste/index.d.ts +1 -1
  189. package/build/esm/extensions/yfm/ImgSize/ImagePaste/index.js +14 -0
  190. package/build/esm/extensions/yfm/ImgSize/ImagePaste/index.js.map +1 -1
  191. package/build/esm/extensions/yfm/ImgSize/ImagePaste/upload.js +7 -6
  192. package/build/esm/extensions/yfm/ImgSize/ImagePaste/upload.js.map +1 -1
  193. package/build/esm/extensions/yfm/ImgSize/utils.d.ts +2 -1
  194. package/build/esm/extensions/yfm/ImgSize/utils.js +4 -3
  195. package/build/esm/extensions/yfm/ImgSize/utils.js.map +1 -1
  196. package/build/esm/extensions/yfm/YfmFile/YfmFilePaste/index.d.ts +1 -1
  197. package/build/esm/extensions/yfm/YfmFile/YfmFilePaste/index.js +15 -1
  198. package/build/esm/extensions/yfm/YfmFile/YfmFilePaste/index.js.map +1 -1
  199. package/build/esm/i18n/yfm-note/index.d.ts +1 -1
  200. package/build/esm/logger.d.ts +75 -0
  201. package/build/esm/logger.js +87 -0
  202. package/build/esm/logger.js.map +1 -1
  203. package/build/esm/markup/codemirror/create.d.ts +2 -0
  204. package/build/esm/markup/codemirror/create.js +16 -5
  205. package/build/esm/markup/codemirror/create.js.map +1 -1
  206. package/build/esm/markup/codemirror/files-upload-plugin/plugin.js +13 -0
  207. package/build/esm/markup/codemirror/files-upload-plugin/plugin.js.map +1 -1
  208. package/build/esm/markup/codemirror/logger-facet.d.ts +3 -0
  209. package/build/esm/markup/codemirror/logger-facet.js +6 -0
  210. package/build/esm/markup/codemirror/logger-facet.js.map +1 -0
  211. package/build/esm/utils/event-emitter.d.ts +1 -0
  212. package/build/esm/utils/event-emitter.js +3 -0
  213. package/build/esm/utils/event-emitter.js.map +1 -1
  214. package/build/esm/utils/facet.d.ts +1 -0
  215. package/build/esm/utils/facet.js +29 -0
  216. package/build/esm/utils/facet.js.map +1 -0
  217. package/build/esm/utils/keymap.js +7 -2
  218. package/build/esm/utils/keymap.js.map +1 -1
  219. package/build/esm/version.js +1 -1
  220. package/build/esm/version.js.map +1 -1
  221. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"plugin.js","sourceRoot":"../../../../../src","sources":["markup/codemirror/files-upload-plugin/plugin.ts"],"names":[],"mappings":"AACA,OAAO,EACH,UAAU,EAIV,UAAU,EAEV,UAAU,GACb,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAgD,mBAAmB,EAAC,gCAAuB;AAClG,OAAO,EAAC,sBAAsB,EAAC,iCAA8B;AAC7D,OAAO,EAAC,kBAAkB,EAAC,0BAAuB;AAElD,OAAO,EAAC,cAAc,EAAE,6BAA6B,EAAC,mBAAgB;AACtE,OAAO,EAAC,qBAAqB,EAAE,wBAAwB,EAAC,qBAAkB;AAC1E,OAAO,EAAC,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAC,mBAAgB;AACpF,OAAO,EAAC,YAAY,EAAC,oBAAiB;AAEtC,MAAM,gBAAiB,SAAQ,UAAU;IAC5B,MAAM,CAAS;IAEhB,SAAS,CAAuB;IAEhC,QAAQ,GAAwB,IAAI,CAAC;IACrC,KAAK,GAAW,EAAE,CAAC;IAE3B,YAAY,EAAU;QAClB,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,IAAgB;QAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,SAAS,GAAG,uBAAuB,CAAC;QACxC,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,cAAc,CAAC;QACnC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACxB,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC;IACf,CAAC;IAED,SAAS,CAAC,GAAgB,EAAE,IAAgB;QACxC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACxB,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,GAAgB;QACpB,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,YAAY,CAAC,SAA8B;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,KAAa;QAChB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC;IAC9B,CAAC;IAEO,gBAAgB,CAAC,GAAgB,EAAE,IAAgB;QACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK;aACrB,KAAK,CAAC,kBAAkB,CAAC;aACzB,UAAU,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,EAAC,GAAI,IAAI,CAAC,KAAa,EAAC,CAAC,CAAC,CAAC;IAChG,CAAC;CACJ;AAED,MAAM,mBAAmB;IACZ,MAAM,CAAmB;IAEjB,IAAI,CAAO;IACX,IAAI,CAAa;IACjB,QAAQ,CAAoB;IAC5B,uBAAuB,CAAU;IACjC,6BAA6B,CAAU;IAEhD,KAAK,GAA+D,SAAS,CAAC;IAEtF,YAAY,MAOX;QACG,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;QAC9D,IAAI,CAAC,6BAA6B,GAAG,MAAM,CAAC,6BAA6B,CAAC;QAC1E,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,GAAG,EAAE,CAAC;IACf,CAAC;IAED,MAAM;QACF,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;IAC5B,CAAC;IAEO,GAAG;QACP,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACf,MAAM,EAAE,WAAW;YACnB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACxB,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;SACtD,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;IAC5E,CAAC;IAEO,eAAe,GAAG,CAAC,GAAqB,EAAE,EAAE;QAChD,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU;YAAE,OAAO;QACtC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACf,MAAM,EAAE,SAAS;YACjB,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACxB,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;SACtD,CAAC,CAAC;QACH,UAAU,CAAC,KAAK,IAAI,EAAE;YAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;YAChD,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU;gBAAE,OAAO;YAEtC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACf,OAAO,EAAE,wBAAwB,CAAC,EAAE,CAAC;oBACjC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;oBACtB,MAAM;iBACT,CAAC;aACL,CAAC,CAAC;QACP,CAAC,EAAE,6BAA6B,CAAC,CAAC;IACtC,CAAC,CAAC;IAEM,aAAa,GAAG,CAAC,GAAY,EAAE,EAAE;QACrC,IAAI,IAAI,CAAC,KAAK,KAAK,UAAU;YAAE,OAAO;QACtC,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YACf,MAAM,EAAE,OAAO;YACf,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACxB,QAAQ,EAAE,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM;YACnD,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC;YACtB,eAAe,EAAE,GAAG,EAAE;gBAClB,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO;oBAAE,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3C,CAAC;SACJ,CAAC,CAAC;IACP,CAAC,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,GAAqB;QAChD,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;QAElD,IAAI,MAAM,GAAG,KAAK,QAAQ,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;QAEzC,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACD,MAAM,QAAQ,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAErD,IAAI,IAAI,CAAC,6BAA6B,EAAE,CAAC;wBACrC,MAAM,EAAC,KAAK,EAAE,MAAM,EAAC,GAAG,mBAAmB,CAAC;4BACxC,KAAK,EAAE,QAAQ,CAAC,KAAK;4BACrB,MAAM,EAAE,QAAQ,CAAC,MAAM;4BACvB,YAAY,EAAE,cAAc;yBAC/B,CAAC,CAAC;wBAEH,MAAM,IAAI,KAAK,KAAK,IAAI,MAAM,EAAE,CAAC;oBACrC,CAAC;yBAAM,CAAC;wBACJ,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;wBACzD,MAAM,IAAI,MAAM,MAAM,EAAE,CAAC;oBAC7B,CAAC;gBACL,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACX,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvB,CAAC;YACL,CAAC;YAED,MAAM,IAAI,GAAG,CAAC;QAClB,CAAC;aAAM,CAAC;YACJ,MAAM,GAAG,gBAAgB,GAAG,CAAC,GAAG,WAAW,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC;QAC/E,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CACjD;IACI,KAAK,GAAkB,UAAU,CAAC,IAAI,CAAC;IAC9B,IAAI,CAAa;IAE1B,YAAY,IAAgB;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,MAAkB;QACrB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAElE,MAAM,OAAO,GAAiB,EAAE,CAAC;QAEjC,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACnC,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;gBAC3B,IAAI,GAAG,CAAC,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC;oBAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;wBAC3B,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;4BACjD,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,mBAAmB,CAAC;gCACrC,IAAI;gCACJ,IAAI,EAAE,IAAI,CAAC,IAAI;gCACf,QAAQ,EAAE,WAAW,CAAC,EAAE;gCACxB,uBAAuB,EAAE,OAAO,CAC5B,WAAW,CAAC,mBAAmB,CAClC;gCACD,6BAA6B,EAAE,OAAO,CAClC,WAAW,CAAC,6BAA6B,CAC5C;gCACD,MAAM,EAAE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;6BAC7D,CAAC,CAAC;4BACH,OAAO,UAAU,CAAC,MAAM,CAAC;gCACrB,MAAM;gCACN,IAAI,EAAE,CAAC;gCACP,gBAAgB,EAAE,MAAM,CAAC,MAAM;6BAClC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC;wBACpC,CAAC,CAAC;qBACL,CAAC,CAAC;gBACP,CAAC;gBACD,IAAI,GAAG,CAAC,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC;oBACnC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;wBAC3B,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;4BACvB,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE;gCAAE,OAAO,IAAI,CAAC;4BAC7D,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;gCACnB,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAC,CAAC,CAAC;4BACvD,CAAC;4BACD,OAAO,KAAK,CAAC;wBACjB,CAAC;qBACJ,CAAC,CAAC;gBACP,CAAC;YACL,CAAC;QACL,CAAC;QAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACP,CAAC;IACL,CAAC;CACJ,EACD;IACI,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK;IAC3B,aAAa,EAAE;QACX,KAAK,CAAC,KAAK,EAAE,IAAI;YACb,IAAI,CAAC,KAAK,CAAC,aAAa;gBAAE,OAAO,KAAK,CAAC;YAEvC,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACpD,IAAI,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YAEzB,MAAM,EAAC,IAAI,EAAE,EAAE,EAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC;YAE7C,IAAI,CAAC,QAAQ,CAAC;gBACV,SAAS,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC;gBACzB,OAAO,EAAE,qBAAqB,CAAC,EAAE,CAAC,EAAC,KAAK,EAAE,GAAG,EAAE,IAAI,EAAC,CAAC;gBACrD,OAAO,EAAE,EAAC,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAC;aACxD,CAAC,CAAC;YACH,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QAChB,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,IAAI;YACZ,IAAI,CAAC,KAAK,CAAC,YAAY;gBAAE,OAAO,KAAK,CAAC;YAEtC,MAAM,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC;YAEzB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChD,IAAI,CAAC,QAAQ,CAAC;gBACV,SAAS,EAAE,EAAC,MAAM,EAAE,GAAG,EAAC;gBACxB,OAAO,EAAE,qBAAqB,CAAC,EAAE,CAAC,EAAC,KAAK,EAAE,GAAG,EAAC,CAAC;gBAC/C,OAAO,EAAE,EAAC,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAC;aACzD,CAAC,CAAC;YACH,KAAK,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC;QAChB,CAAC;KACJ;CACJ,CACJ,CAAC","sourcesContent":["import type {ChangeSpec} from '@codemirror/state';\nimport {\n Decoration,\n type DecorationSet,\n type EditorView,\n type PluginValue,\n ViewPlugin,\n type ViewUpdate,\n WidgetType,\n} from '@codemirror/view';\n\nimport type {RendererItem} from '../../../extensions';\nimport {type FileUploadHandler, type FileUploadResult, getProportionalSize} from '../../../utils';\nimport {FileUploadHandlerFacet} from '../files-upload-facet';\nimport {ReactRendererFacet} from '../react-facet';\n\nimport {IMG_MAX_HEIGHT, SUCCESS_UPLOAD_REMOVE_TIMEOUT} from './const';\nimport {AddUploadWidgetEffect, RemoveUploadWidgetEffect} from './effects';\nimport {getImageDimensions, getTransferFiles, isImageFile, uniqueId} from './utils';\nimport {renderWidget} from './widget';\n\nclass FileUploadWidget extends WidgetType {\n readonly selfId: string;\n\n private presenter?: FileUploadPresenter;\n\n private renderer: RendererItem | null = null;\n private props: object = {};\n\n constructor(id: string) {\n super();\n this.selfId = id;\n }\n\n toDOM(view: EditorView): HTMLElement {\n const dom = document.createElement('div');\n dom.className = 'cm-file-upload-widget';\n dom.style.display = 'inline-block';\n this.renderer?.remove();\n this.createRenderItem(dom, view);\n return dom;\n }\n\n updateDOM(dom: HTMLElement, view: EditorView): boolean {\n this.renderer?.remove();\n this.createRenderItem(dom, view);\n return true;\n }\n\n destroy(dom: HTMLElement): void {\n super.destroy(dom);\n this.renderer?.remove();\n this.presenter?.cancel();\n this.presenter = undefined;\n }\n\n setPresenter(presenter: FileUploadPresenter) {\n this.presenter = presenter;\n }\n\n render(props: object) {\n Object.assign(this.props, props);\n this.renderer?.rerender();\n }\n\n private createRenderItem(dom: HTMLElement, view: EditorView) {\n this.renderer = view.state\n .facet(ReactRendererFacet)\n .createItem('cm-file-upload-widget', () => renderWidget(dom, {...(this.props as any)}));\n }\n}\n\nclass FileUploadPresenter {\n readonly widget: FileUploadWidget;\n\n private readonly file: File;\n private readonly view: EditorView;\n private readonly uploader: FileUploadHandler;\n private readonly needDimensionsForImages: boolean;\n private readonly enableNewImageSizeCalculation: boolean;\n\n private state: 'initial' | 'uploading' | 'success' | 'error' | 'canceled' = 'initial';\n\n constructor(params: {\n file: File;\n widget: FileUploadWidget;\n uploader: FileUploadHandler;\n view: EditorView;\n needDimensionsForImages: boolean;\n enableNewImageSizeCalculation: boolean;\n }) {\n this.file = params.file;\n this.view = params.view;\n this.widget = params.widget;\n this.uploader = params.uploader;\n this.needDimensionsForImages = params.needDimensionsForImages;\n this.enableNewImageSizeCalculation = params.enableNewImageSizeCalculation;\n this.widget.setPresenter(this);\n this.run();\n }\n\n cancel() {\n this.state = 'canceled';\n }\n\n private run() {\n this.state = 'uploading';\n this.widget.render({\n status: 'uploading',\n fileName: this.file.name,\n fileType: isImageFile(this.file) ? 'image' : 'file',\n });\n this.uploader(this.file).then(this.onUploadSuccess, this.onUploadError);\n }\n\n private onUploadSuccess = (res: FileUploadResult) => {\n if (this.state === 'canceled') return;\n this.state = 'success';\n this.widget.render({\n status: 'success',\n fileName: this.file.name,\n fileType: isImageFile(this.file) ? 'image' : 'file',\n });\n setTimeout(async () => {\n const markup = await this.formatFileMarkup(res);\n if (this.state === 'canceled') return;\n\n this.view.dispatch({\n effects: RemoveUploadWidgetEffect.of({\n id: this.widget.selfId,\n markup,\n }),\n });\n }, SUCCESS_UPLOAD_REMOVE_TIMEOUT);\n };\n\n private onUploadError = (err: unknown) => {\n if (this.state === 'canceled') return;\n this.state = 'error';\n this.widget.render({\n status: 'error',\n fileName: this.file.name,\n fileType: isImageFile(this.file) ? 'image' : 'file',\n errorText: String(err),\n onReUploadClick: () => {\n if (this.state === 'error') this.run();\n },\n });\n };\n\n private async formatFileMarkup(res: FileUploadResult) {\n const fileName = res.name ?? this.file.name ?? '';\n\n let markup = `![${fileName}](${res.url}`;\n\n if (isImageFile(this.file)) {\n if (this.needDimensionsForImages) {\n try {\n const fileSize = await getImageDimensions(this.file);\n\n if (this.enableNewImageSizeCalculation) {\n const {width, height} = getProportionalSize({\n width: fileSize.width,\n height: fileSize.height,\n imgMaxHeight: IMG_MAX_HEIGHT,\n });\n\n markup += ` =${width}x${height}`;\n } else {\n const height = Math.min(fileSize.height, IMG_MAX_HEIGHT);\n markup += ` =x${height}`;\n }\n } catch (err) {\n console.error(err);\n }\n }\n\n markup += `)`;\n } else {\n markup = `{% file src=\"${res.url}\" name=\"${fileName.replace('\"', '')}\" %}`;\n }\n\n return markup;\n }\n}\n\nexport const FilesUploadPlugin = ViewPlugin.fromClass(\n class implements PluginValue {\n decos: DecorationSet = Decoration.none;\n readonly view: EditorView;\n\n constructor(view: EditorView) {\n this.view = view;\n }\n\n update(update: ViewUpdate): void {\n this.decos = this.decos.map(update.changes);\n const uploadFacet = this.view.state.facet(FileUploadHandlerFacet);\n\n const changes: ChangeSpec[] = [];\n\n for (const tr of update.transactions) {\n for (const eff of tr.effects) {\n if (eff.is(AddUploadWidgetEffect)) {\n this.decos = this.decos.update({\n add: Array.from(eff.value.files).map((file, index) => {\n const {widget} = new FileUploadPresenter({\n file,\n view: this.view,\n uploader: uploadFacet.fn,\n needDimensionsForImages: Boolean(\n uploadFacet.imageWithDimensions,\n ),\n enableNewImageSizeCalculation: Boolean(\n uploadFacet.enableNewImageSizeCalculation,\n ),\n widget: new FileUploadWidget(uniqueId('__file_widget_id')),\n });\n return Decoration.widget({\n widget,\n side: 1,\n __file_widget_id: widget.selfId,\n }).range(eff.value.pos + index);\n }),\n });\n }\n if (eff.is(RemoveUploadWidgetEffect)) {\n this.decos = this.decos.update({\n filter: (from, to, deco) => {\n if (deco.spec.__file_widget_id !== eff.value.id) return true;\n if (eff.value.markup) {\n changes.push({from, to, insert: eff.value.markup});\n }\n return false;\n },\n });\n }\n }\n }\n\n if (changes.length) {\n setTimeout(() => {\n this.view.dispatch({changes});\n });\n }\n }\n },\n {\n decorations: (v) => v.decos,\n eventHandlers: {\n paste(event, view) {\n if (!event.clipboardData) return false;\n\n const files = getTransferFiles(event.clipboardData);\n if (!files) return false;\n\n const {from, to} = view.state.selection.main;\n\n view.dispatch({\n selection: {anchor: from},\n effects: AddUploadWidgetEffect.of({files, pos: from}),\n changes: {from, to, insert: ' '.repeat(files.length)},\n });\n event.preventDefault();\n return true;\n },\n drop(event, view) {\n if (!event.dataTransfer) return false;\n\n const files = getTransferFiles(event.dataTransfer);\n if (!files) return false;\n\n const pos = this.view.posAtCoords(event, false);\n view.dispatch({\n selection: {anchor: pos},\n effects: AddUploadWidgetEffect.of({files, pos}),\n changes: {from: pos, insert: ' '.repeat(files.length)},\n });\n event.preventDefault();\n return true;\n },\n },\n },\n);\n"]}
1
+ {"version":3,"file":"plugin.js","sourceRoot":"../../../../../src","sources":["markup/codemirror/files-upload-plugin/plugin.ts"],"names":[],"mappings":"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","sourcesContent":["import type {ChangeSpec} from '@codemirror/state';\nimport {\n Decoration,\n type DecorationSet,\n type EditorView,\n type PluginValue,\n ViewPlugin,\n type ViewUpdate,\n WidgetType,\n} from '@codemirror/view';\n\nimport type {RendererItem} from '../../../extensions';\nimport {type FileUploadHandler, type FileUploadResult, getProportionalSize} from '../../../utils';\nimport {FileUploadHandlerFacet} from '../files-upload-facet';\nimport {LoggerFacet} from '../logger-facet';\nimport {ReactRendererFacet} from '../react-facet';\n\nimport {IMG_MAX_HEIGHT, SUCCESS_UPLOAD_REMOVE_TIMEOUT} from './const';\nimport {AddUploadWidgetEffect, RemoveUploadWidgetEffect} from './effects';\nimport {getImageDimensions, getTransferFiles, isImageFile, uniqueId} from './utils';\nimport {renderWidget} from './widget';\n\nclass FileUploadWidget extends WidgetType {\n readonly selfId: string;\n\n private presenter?: FileUploadPresenter;\n\n private renderer: RendererItem | null = null;\n private props: object = {};\n\n constructor(id: string) {\n super();\n this.selfId = id;\n }\n\n toDOM(view: EditorView): HTMLElement {\n const dom = document.createElement('div');\n dom.className = 'cm-file-upload-widget';\n dom.style.display = 'inline-block';\n this.renderer?.remove();\n this.createRenderItem(dom, view);\n return dom;\n }\n\n updateDOM(dom: HTMLElement, view: EditorView): boolean {\n this.renderer?.remove();\n this.createRenderItem(dom, view);\n return true;\n }\n\n destroy(dom: HTMLElement): void {\n super.destroy(dom);\n this.renderer?.remove();\n this.presenter?.cancel();\n this.presenter = undefined;\n }\n\n setPresenter(presenter: FileUploadPresenter) {\n this.presenter = presenter;\n }\n\n render(props: object) {\n Object.assign(this.props, props);\n this.renderer?.rerender();\n }\n\n private createRenderItem(dom: HTMLElement, view: EditorView) {\n this.renderer = view.state\n .facet(ReactRendererFacet)\n .createItem('cm-file-upload-widget', () => renderWidget(dom, {...(this.props as any)}));\n }\n}\n\nclass FileUploadPresenter {\n readonly widget: FileUploadWidget;\n\n private readonly file: File;\n private readonly view: EditorView;\n private readonly uploader: FileUploadHandler;\n private readonly needDimensionsForImages: boolean;\n private readonly enableNewImageSizeCalculation: boolean;\n\n private state: 'initial' | 'uploading' | 'success' | 'error' | 'canceled' = 'initial';\n\n constructor(params: {\n file: File;\n widget: FileUploadWidget;\n uploader: FileUploadHandler;\n view: EditorView;\n needDimensionsForImages: boolean;\n enableNewImageSizeCalculation: boolean;\n }) {\n this.file = params.file;\n this.view = params.view;\n this.widget = params.widget;\n this.uploader = params.uploader;\n this.needDimensionsForImages = params.needDimensionsForImages;\n this.enableNewImageSizeCalculation = params.enableNewImageSizeCalculation;\n this.widget.setPresenter(this);\n this.run();\n }\n\n cancel() {\n this.state = 'canceled';\n }\n\n private run() {\n this.state = 'uploading';\n this.widget.render({\n status: 'uploading',\n fileName: this.file.name,\n fileType: isImageFile(this.file) ? 'image' : 'file',\n });\n this.uploader(this.file).then(this.onUploadSuccess, this.onUploadError);\n }\n\n private onUploadSuccess = (res: FileUploadResult) => {\n if (this.state === 'canceled') return;\n this.state = 'success';\n this.widget.render({\n status: 'success',\n fileName: this.file.name,\n fileType: isImageFile(this.file) ? 'image' : 'file',\n });\n setTimeout(async () => {\n const markup = await this.formatFileMarkup(res);\n if (this.state === 'canceled') return;\n\n this.view.dispatch({\n effects: RemoveUploadWidgetEffect.of({\n id: this.widget.selfId,\n markup,\n }),\n });\n }, SUCCESS_UPLOAD_REMOVE_TIMEOUT);\n };\n\n private onUploadError = (err: unknown) => {\n if (this.state === 'canceled') return;\n this.state = 'error';\n this.widget.render({\n status: 'error',\n fileName: this.file.name,\n fileType: isImageFile(this.file) ? 'image' : 'file',\n errorText: String(err),\n onReUploadClick: () => {\n if (this.state === 'error') this.run();\n },\n });\n };\n\n private async formatFileMarkup(res: FileUploadResult) {\n const fileName = res.name ?? this.file.name ?? '';\n\n let markup = `![${fileName}](${res.url}`;\n\n if (isImageFile(this.file)) {\n if (this.needDimensionsForImages) {\n try {\n const fileSize = await getImageDimensions(this.file);\n\n if (this.enableNewImageSizeCalculation) {\n const {width, height} = getProportionalSize({\n width: fileSize.width,\n height: fileSize.height,\n imgMaxHeight: IMG_MAX_HEIGHT,\n });\n\n markup += ` =${width}x${height}`;\n } else {\n const height = Math.min(fileSize.height, IMG_MAX_HEIGHT);\n markup += ` =x${height}`;\n }\n } catch (err) {\n console.error(err);\n }\n }\n\n markup += `)`;\n } else {\n markup = `{% file src=\"${res.url}\" name=\"${fileName.replace('\"', '')}\" %}`;\n }\n\n return markup;\n }\n}\n\nexport const FilesUploadPlugin = ViewPlugin.fromClass(\n class implements PluginValue {\n decos: DecorationSet = Decoration.none;\n readonly view: EditorView;\n\n constructor(view: EditorView) {\n this.view = view;\n }\n\n update(update: ViewUpdate): void {\n this.decos = this.decos.map(update.changes);\n const uploadFacet = this.view.state.facet(FileUploadHandlerFacet);\n\n const changes: ChangeSpec[] = [];\n\n for (const tr of update.transactions) {\n for (const eff of tr.effects) {\n if (eff.is(AddUploadWidgetEffect)) {\n this.decos = this.decos.update({\n add: Array.from(eff.value.files).map((file, index) => {\n const {widget} = new FileUploadPresenter({\n file,\n view: this.view,\n uploader: uploadFacet.fn,\n needDimensionsForImages: Boolean(\n uploadFacet.imageWithDimensions,\n ),\n enableNewImageSizeCalculation: Boolean(\n uploadFacet.enableNewImageSizeCalculation,\n ),\n widget: new FileUploadWidget(uniqueId('__file_widget_id')),\n });\n return Decoration.widget({\n widget,\n side: 1,\n __file_widget_id: widget.selfId,\n }).range(eff.value.pos + index);\n }),\n });\n }\n if (eff.is(RemoveUploadWidgetEffect)) {\n this.decos = this.decos.update({\n filter: (from, to, deco) => {\n if (deco.spec.__file_widget_id !== eff.value.id) return true;\n if (eff.value.markup) {\n changes.push({from, to, insert: eff.value.markup});\n }\n return false;\n },\n });\n }\n }\n }\n\n if (changes.length) {\n setTimeout(() => {\n this.view.dispatch({changes});\n });\n }\n }\n },\n {\n decorations: (v) => v.decos,\n eventHandlers: {\n paste(event, view) {\n if (!event.clipboardData) return false;\n\n const files = getTransferFiles(event.clipboardData);\n if (!files) return false;\n\n const {from, to} = view.state.selection.main;\n\n view.state.facet(LoggerFacet).event({\n domEvent: 'paste',\n event: 'paste-files',\n plugin: 'files-upload',\n dataTypes: event.clipboardData.types,\n });\n\n view.dispatch({\n selection: {anchor: from},\n effects: AddUploadWidgetEffect.of({files, pos: from}),\n changes: {from, to, insert: ' '.repeat(files.length)},\n });\n event.preventDefault();\n return true;\n },\n drop(event, view) {\n if (!event.dataTransfer) return false;\n\n const files = getTransferFiles(event.dataTransfer);\n if (!files) return false;\n\n view.state.facet(LoggerFacet).event({\n domEvent: 'drop',\n event: 'drop-files',\n plugin: 'files-upload',\n dataTypes: event.dataTransfer.types,\n });\n\n const pos = this.view.posAtCoords(event, false);\n view.dispatch({\n selection: {anchor: pos},\n effects: AddUploadWidgetEffect.of({files, pos}),\n changes: {from: pos, insert: ' '.repeat(files.length)},\n });\n event.preventDefault();\n return true;\n },\n },\n },\n);\n"]}
@@ -0,0 +1,3 @@
1
+ import { Facet } from '@codemirror/state';
2
+ import type { Logger2 } from "../../logger.js";
3
+ export declare const LoggerFacet: Facet<Logger2.ILogger, Logger2.ILogger>;
@@ -0,0 +1,6 @@
1
+ import { Facet } from '@codemirror/state';
2
+ export const LoggerFacet = Facet.define({
3
+ combine: (value) => value[0],
4
+ static: true,
5
+ });
6
+ //# sourceMappingURL=logger-facet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-facet.js","sourceRoot":"../../../../src","sources":["markup/codemirror/logger-facet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,mBAAmB,CAAC;AAIxC,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAmC;IACtE,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5B,MAAM,EAAE,IAAI;CACf,CAAC,CAAC","sourcesContent":["import {Facet} from '@codemirror/state';\n\nimport type {Logger2} from '../../logger';\n\nexport const LoggerFacet = Facet.define<Logger2.ILogger, Logger2.ILogger>({\n combine: (value) => value[0],\n static: true,\n});\n"]}
@@ -14,6 +14,7 @@ export declare class EventEmitter<T extends object = UnkObj> implements Emitter<
14
14
  on<K extends keyof T>(type: K, listener: Listener<T[K]>): void;
15
15
  off<K extends keyof T>(type: K, listener: Listener<T[K]>): void;
16
16
  emit<K extends keyof T>(type: K, value: T[K]): void;
17
+ countOf<K extends keyof T>(type: K): number;
17
18
  }
18
19
  export declare class SafeEventEmitter<T extends object = UnkObj> extends EventEmitter<T> {
19
20
  private onError;
@@ -14,6 +14,9 @@ export class EventEmitter {
14
14
  emit(type, value) {
15
15
  this._listeners.get(type)?.forEach((listener) => listener(value));
16
16
  }
17
+ countOf(type) {
18
+ return this._listeners.get(type)?.length || 0;
19
+ }
17
20
  }
18
21
  export class SafeEventEmitter extends EventEmitter {
19
22
  onError;
@@ -1 +1 @@
1
- {"version":3,"file":"event-emitter.js","sourceRoot":"../../../src","sources":["utils/event-emitter.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,YAAY;IACX,UAAU,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE3D,EAAE,CAAoB,IAAO,EAAE,QAAwB;QACnD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,GAAG,CAAoB,IAAO,EAAE,QAAwB;QACpD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CACf,IAAI,EACJ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAC/D,CAAC;QACN,CAAC;IACL,CAAC;IAED,IAAI,CAAoB,IAAO,EAAE,KAAW;QACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;CACJ;AAED,MAAM,OAAO,gBAA4C,SAAQ,YAAe;IACpE,OAAO,CAA2B;IAE1C,YAAY,OAA8C;QACtD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;IACrD,CAAC;IAED,IAAI,CAAoB,IAAO,EAAE,KAAW;QACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IAEO,QAAQ,CAAC,EAAc;QAC3B,IAAI,CAAC;YACD,EAAE,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;CACJ","sourcesContent":["type UnkObj = {[key: string]: unknown};\n\nexport type Listener<T> = (value: T) => void;\n\nexport interface Emitter<T extends object = UnkObj> {\n emit<K extends keyof T>(type: K, data: T[K]): void;\n}\n\nexport interface Receiver<T extends object = UnkObj> {\n on<K extends keyof T>(type: K, listener: Listener<T[K]>): void;\n off<K extends keyof T>(type: K, listener: Listener<T[K]>): void;\n}\n\nexport class EventEmitter<T extends object = UnkObj> implements Emitter<T>, Receiver<T> {\n protected _listeners = new Map<keyof T, Listener<any>[]>();\n\n on<K extends keyof T>(type: K, listener: Listener<T[K]>): void {\n if (!this._listeners.has(type)) {\n this._listeners.set(type, []);\n }\n this._listeners.get(type)!.push(listener);\n }\n\n off<K extends keyof T>(type: K, listener: Listener<T[K]>): void {\n if (this._listeners.has(type)) {\n this._listeners.set(\n type,\n this._listeners.get(type)!.filter((val) => val !== listener),\n );\n }\n }\n\n emit<K extends keyof T>(type: K, value: T[K]): void {\n this._listeners.get(type)?.forEach((listener) => listener(value));\n }\n}\n\nexport class SafeEventEmitter<T extends object = UnkObj> extends EventEmitter<T> {\n private onError: (error: unknown) => void;\n\n constructor(options?: {onError?: (error: unknown) => void}) {\n super();\n this.onError = options?.onError ?? console.error;\n }\n\n emit<K extends keyof T>(type: K, value: T[K]): void {\n this._listeners.get(type)?.forEach((listener) => this.safeExec(() => listener(value)));\n }\n\n private safeExec(fn: () => void): void {\n try {\n fn();\n } catch (e) {\n this.onError(e);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"event-emitter.js","sourceRoot":"../../../src","sources":["utils/event-emitter.ts"],"names":[],"mappings":"AAaA,MAAM,OAAO,YAAY;IACX,UAAU,GAAG,IAAI,GAAG,EAA4B,CAAC;IAE3D,EAAE,CAAoB,IAAO,EAAE,QAAwB;QACnD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,GAAG,CAAoB,IAAO,EAAE,QAAwB;QACpD,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,UAAU,CAAC,GAAG,CACf,IAAI,EACJ,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,QAAQ,CAAC,CAC/D,CAAC;QACN,CAAC;IACL,CAAC;IAED,IAAI,CAAoB,IAAO,EAAE,KAAW;QACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,CAAoB,IAAO;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC;IAClD,CAAC;CACJ;AAED,MAAM,OAAO,gBAA4C,SAAQ,YAAe;IACpE,OAAO,CAA2B;IAE1C,YAAY,OAA8C;QACtD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;IACrD,CAAC;IAED,IAAI,CAAoB,IAAO,EAAE,KAAW;QACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3F,CAAC;IAEO,QAAQ,CAAC,EAAc;QAC3B,IAAI,CAAC;YACD,EAAE,EAAE,CAAC;QACT,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACpB,CAAC;IACL,CAAC;CACJ","sourcesContent":["type UnkObj = {[key: string]: unknown};\n\nexport type Listener<T> = (value: T) => void;\n\nexport interface Emitter<T extends object = UnkObj> {\n emit<K extends keyof T>(type: K, data: T[K]): void;\n}\n\nexport interface Receiver<T extends object = UnkObj> {\n on<K extends keyof T>(type: K, listener: Listener<T[K]>): void;\n off<K extends keyof T>(type: K, listener: Listener<T[K]>): void;\n}\n\nexport class EventEmitter<T extends object = UnkObj> implements Emitter<T>, Receiver<T> {\n protected _listeners = new Map<keyof T, Listener<any>[]>();\n\n on<K extends keyof T>(type: K, listener: Listener<T[K]>): void {\n if (!this._listeners.has(type)) {\n this._listeners.set(type, []);\n }\n this._listeners.get(type)!.push(listener);\n }\n\n off<K extends keyof T>(type: K, listener: Listener<T[K]>): void {\n if (this._listeners.has(type)) {\n this._listeners.set(\n type,\n this._listeners.get(type)!.filter((val) => val !== listener),\n );\n }\n }\n\n emit<K extends keyof T>(type: K, value: T[K]): void {\n this._listeners.get(type)?.forEach((listener) => listener(value));\n }\n\n countOf<K extends keyof T>(type: K): number {\n return this._listeners.get(type)?.length || 0;\n }\n}\n\nexport class SafeEventEmitter<T extends object = UnkObj> extends EventEmitter<T> {\n private onError: (error: unknown) => void;\n\n constructor(options?: {onError?: (error: unknown) => void}) {\n super();\n this.onError = options?.onError ?? console.error;\n }\n\n emit<K extends keyof T>(type: K, value: T[K]): void {\n this._listeners.get(type)?.forEach((listener) => this.safeExec(() => listener(value)));\n }\n\n private safeExec(fn: () => void): void {\n try {\n fn();\n } catch (e) {\n this.onError(e);\n }\n }\n}\n"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,29 @@
1
+ // Partial realization of Facet from CodeMirror, but for ProseMirror
2
+ import { Plugin, PluginKey } from 'prosemirror-state';
3
+ import { uniqueId } from "../lodash.js";
4
+ /** @internal @unstable */
5
+ export class Facet {
6
+ static define(config) {
7
+ return new this(config);
8
+ }
9
+ _combine;
10
+ _key;
11
+ constructor(config) {
12
+ this._combine = config.combine;
13
+ this._key = new PluginKey(`Facet${config.static ? '_static' : ''}:${config.name || ''}:${uniqueId()}`);
14
+ }
15
+ of(value) {
16
+ const output = this._combine([value]);
17
+ return new Plugin({
18
+ key: this._key,
19
+ state: {
20
+ init: () => output,
21
+ apply: () => output,
22
+ },
23
+ });
24
+ }
25
+ getState(state) {
26
+ return this._key.getState(state);
27
+ }
28
+ }
29
+ //# sourceMappingURL=facet.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"facet.js","sourceRoot":"../../../src","sources":["utils/facet.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,OAAO,EAAmB,MAAM,EAAE,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EAAC,QAAQ,EAAC,qBAAkB;AASnC,0BAA0B;AAC1B,MAAM,OAAO,KAAK;IACd,MAAM,CAAC,MAAM,CACT,MAAkC;QAElC,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAEgB,QAAQ,CAAC;IACT,IAAI,CAAoB;IAEzC,YAAoB,MAAkC;QAClD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CACrB,QAAQ,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,IAAI,QAAQ,EAAE,EAAE,CAC9E,CAAC;IACN,CAAC;IAED,EAAE,CAAC,KAAY;QACX,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACtC,OAAO,IAAI,MAAM,CAAS;YACtB,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,KAAK,EAAE;gBACH,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM;gBAClB,KAAK,EAAE,GAAG,EAAE,CAAC,MAAM;aACtB;SACJ,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,KAAkB;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;CACJ","sourcesContent":["// Partial realization of Facet from CodeMirror, but for ProseMirror\n\nimport {type EditorState, Plugin, PluginKey} from 'prosemirror-state';\n\nimport {uniqueId} from '../lodash';\n\n/** @internal @unstable */\nexport type FacetConfig<Input, Output> = {\n combine: (value: readonly Input[]) => Output;\n static: true;\n name?: string;\n};\n\n/** @internal @unstable */\nexport class Facet<Input, Output = readonly Input[]> {\n static define<Input, Output = readonly Input[]>(\n config: FacetConfig<Input, Output>,\n ): Facet<Input, Output> {\n return new this(config);\n }\n\n private readonly _combine;\n private readonly _key: PluginKey<Output>;\n\n private constructor(config: FacetConfig<Input, Output>) {\n this._combine = config.combine;\n this._key = new PluginKey(\n `Facet${config.static ? '_static' : ''}:${config.name || ''}:${uniqueId()}`,\n );\n }\n\n of(value: Input): Plugin<Output> {\n const output = this._combine([value]);\n return new Plugin<Output>({\n key: this._key,\n state: {\n init: () => output,\n apply: () => output,\n },\n });\n }\n\n getState(state: EditorState): Output | undefined {\n return this._key.getState(state);\n }\n}\n"]}
@@ -1,9 +1,14 @@
1
- import { logger } from "../logger.js";
1
+ import { getLoggerFromState } from "../core/index.js";
2
+ import { globalLogger } from "../logger.js";
2
3
  export function withLogAction(action, command) {
3
4
  return (...args) => {
4
5
  const res = command(...args);
5
- if (res)
6
+ if (res) {
7
+ const [state] = args;
8
+ const logger = getLoggerFromState(state);
6
9
  logger.action({ action, source: 'keymap' });
10
+ globalLogger.action({ action, source: 'keymap', mode: 'wysiwyg' });
11
+ }
7
12
  return res;
8
13
  };
9
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"keymap.js","sourceRoot":"../../../src","sources":["utils/keymap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,qBAAkB;AAEjC,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,OAAgB;IAC1D,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE;QACf,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7B,IAAI,GAAG;YAAE,MAAM,CAAC,MAAM,CAAC,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC;IACf,CAAC,CAAC;AACN,CAAC","sourcesContent":["import type {Command} from 'prosemirror-state';\n\nimport {logger} from '../logger';\n\nexport function withLogAction(action: string, command: Command): Command {\n return (...args) => {\n const res = command(...args);\n if (res) logger.action({action, source: 'keymap'});\n return res;\n };\n}\n"]}
1
+ {"version":3,"file":"keymap.js","sourceRoot":"../../../src","sources":["utils/keymap.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,kBAAkB,EAAC,yBAAgB;AAC3C,OAAO,EAAC,YAAY,EAAC,qBAAkB;AAEvC,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,OAAgB;IAC1D,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE;QACf,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7B,IAAI,GAAG,EAAE,CAAC;YACN,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;YACrB,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,CAAC,MAAM,CAAC,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAC,CAAC,CAAC;YAC1C,YAAY,CAAC,MAAM,CAAC,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC,CAAC;AACN,CAAC","sourcesContent":["import type {Command} from 'prosemirror-state';\n\nimport {getLoggerFromState} from '../core';\nimport {globalLogger} from '../logger';\n\nexport function withLogAction(action: string, command: Command): Command {\n return (...args) => {\n const res = command(...args);\n if (res) {\n const [state] = args;\n const logger = getLoggerFromState(state);\n logger.action({action, source: 'keymap'});\n globalLogger.action({action, source: 'keymap', mode: 'wysiwyg'});\n }\n return res;\n };\n}\n"]}
@@ -1,3 +1,3 @@
1
1
  /** During build process, the current version will be injected here */
2
- export const VERSION = typeof '15.1.0' !== 'undefined' ? '15.1.0' : 'unknown';
2
+ export const VERSION = typeof '15.2.0' !== 'undefined' ? '15.2.0' : 'unknown';
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"../../src","sources":["version.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC","sourcesContent":["/** During build process, the current version will be injected here */\nexport const VERSION = typeof '15.1.0' !== 'undefined' ? '15.1.0' : 'unknown';\n"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"../../src","sources":["version.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC","sourcesContent":["/** During build process, the current version will be injected here */\nexport const VERSION = typeof '15.2.0' !== 'undefined' ? '15.2.0' : 'unknown';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gravity-ui/markdown-editor",
3
- "version": "15.1.0",
3
+ "version": "15.2.0",
4
4
  "description": "Markdown wysiwyg and markup editor",
5
5
  "license": "MIT",
6
6
  "repository": {