react-native-enriched-html 1.0.0 → 1.0.1

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 (272) hide show
  1. package/android/src/main/java/com/swmansion/enriched/common/EnrichedSpanFlags.kt +39 -0
  2. package/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java +43 -20
  3. package/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedSpanFactory.kt +1 -0
  4. package/android/src/main/java/com/swmansion/enriched/text/EnrichedTextSpanFactory.kt +1 -0
  5. package/android/src/main/java/com/swmansion/enriched/text/EnrichedTextView.kt +2 -1
  6. package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputSpannableFactory.kt +2 -1
  7. package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt +8 -5
  8. package/android/src/main/java/com/swmansion/enriched/textinput/events/MentionHandler.kt +12 -2
  9. package/android/src/main/java/com/swmansion/enriched/textinput/events/OnMentionEvent.kt +6 -0
  10. package/android/src/main/java/com/swmansion/enriched/textinput/styles/AlignmentStyles.kt +6 -7
  11. package/android/src/main/java/com/swmansion/enriched/textinput/styles/InlineStyles.kt +13 -1
  12. package/android/src/main/java/com/swmansion/enriched/textinput/styles/ListStyles.kt +4 -3
  13. package/android/src/main/java/com/swmansion/enriched/textinput/styles/ParagraphStyles.kt +4 -3
  14. package/android/src/main/java/com/swmansion/enriched/textinput/styles/ParametrizedStyles.kt +38 -11
  15. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSelection.kt +2 -0
  16. package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannable.kt +2 -1
  17. package/android/src/main/java/com/swmansion/enriched/textinput/utils/Utils.kt +2 -1
  18. package/cpp/parser/GumboNormalizer.c +61 -3
  19. package/cpp/tests/GumboParserTest.cpp +54 -0
  20. package/ios/EnrichedTextInputView.mm +37 -25
  21. package/ios/extensions/LayoutManagerExtension.mm +73 -62
  22. package/ios/extensions/StringExtension.mm +75 -0
  23. package/ios/htmlParser/HtmlParser.h +4 -1
  24. package/ios/htmlParser/HtmlParser.mm +23 -5
  25. package/ios/inputHtmlParser/InputHtmlParser.mm +6 -3
  26. package/ios/interfaces/StyleHeaders.h +4 -0
  27. package/ios/styles/LinkStyle.mm +20 -34
  28. package/ios/styles/MentionStyle.mm +55 -4
  29. package/ios/textHtmlParser/TextHtmlParser.mm +2 -1
  30. package/ios/utils/ParagraphAttributesUtils.mm +7 -0
  31. package/lib/module/index.js +1 -0
  32. package/lib/module/index.js.map +1 -1
  33. package/lib/module/utils/expandMentionStylesForIndicators.js +2 -3
  34. package/lib/module/utils/expandMentionStylesForIndicators.js.map +1 -1
  35. package/lib/module/utils/normalizeHtmlStyle.js +1 -1
  36. package/lib/module/utils/normalizeHtmlStyle.js.map +1 -1
  37. package/lib/module/web/EnrichedText.css +343 -0
  38. package/lib/module/web/EnrichedText.js +55 -0
  39. package/lib/module/web/EnrichedText.js.map +1 -0
  40. package/lib/module/web/EnrichedTextInput.js +54 -52
  41. package/lib/module/web/EnrichedTextInput.js.map +1 -1
  42. package/lib/module/web/constants/brokenImageGlyph.js +9 -0
  43. package/lib/module/web/constants/brokenImageGlyph.js.map +1 -0
  44. package/lib/module/web/constants/classNames.js +5 -0
  45. package/lib/module/web/constants/classNames.js.map +1 -0
  46. package/lib/module/web/emitLinkDetected.js +12 -0
  47. package/lib/module/web/emitLinkDetected.js.map +1 -0
  48. package/lib/module/web/formats/EnrichedBlockquote.js +1 -1
  49. package/lib/module/web/formats/EnrichedBlockquote.js.map +1 -1
  50. package/lib/module/web/formats/EnrichedCheckboxList.js +2 -2
  51. package/lib/module/web/formats/EnrichedCheckboxList.js.map +1 -1
  52. package/lib/module/web/formats/EnrichedCodeBlock.js +1 -1
  53. package/lib/module/web/formats/EnrichedCodeBlock.js.map +1 -1
  54. package/lib/module/web/formats/EnrichedHeading.js +1 -1
  55. package/lib/module/web/formats/EnrichedHeading.js.map +1 -1
  56. package/lib/module/web/formats/EnrichedImageNodeView.js +1 -1
  57. package/lib/module/web/formats/EnrichedImageNodeView.js.map +1 -1
  58. package/lib/module/web/formats/EnrichedLink.js +43 -3
  59. package/lib/module/web/formats/EnrichedLink.js.map +1 -1
  60. package/lib/module/web/formats/EnrichedOrderedList.js +2 -2
  61. package/lib/module/web/formats/EnrichedOrderedList.js.map +1 -1
  62. package/lib/module/web/formats/EnrichedTextAlign.js +82 -0
  63. package/lib/module/web/formats/EnrichedTextAlign.js.map +1 -0
  64. package/lib/module/web/formats/EnrichedUnorderedList.js +2 -2
  65. package/lib/module/web/formats/EnrichedUnorderedList.js.map +1 -1
  66. package/lib/module/web/formats/applyWrappingListToSelection.js +3 -2
  67. package/lib/module/web/formats/applyWrappingListToSelection.js.map +1 -1
  68. package/lib/module/web/formats/formatRules.js +39 -3
  69. package/lib/module/web/formats/formatRules.js.map +1 -1
  70. package/lib/module/web/formats/listKeyboard.js +4 -1
  71. package/lib/module/web/formats/listKeyboard.js.map +1 -1
  72. package/lib/module/web/normalization/checkboxHtmlNormalizer.js.map +1 -0
  73. package/lib/module/web/normalization/htmlNormalizer.js +514 -0
  74. package/lib/module/web/normalization/htmlNormalizer.js.map +1 -0
  75. package/lib/module/web/normalization/prepareHtmlForWeb.js +78 -0
  76. package/lib/module/web/normalization/prepareHtmlForWeb.js.map +1 -0
  77. package/lib/module/web/{tiptapHtmlNormalizer.js → normalization/tiptapHtmlNormalizer.js} +6 -2
  78. package/lib/module/web/normalization/tiptapHtmlNormalizer.js.map +1 -0
  79. package/lib/module/web/pmPlugins/AutolinkPlugin/autolinkRegex.js +27 -0
  80. package/lib/module/web/pmPlugins/AutolinkPlugin/autolinkRegex.js.map +1 -0
  81. package/lib/module/web/pmPlugins/AutolinkPlugin/index.js +178 -0
  82. package/lib/module/web/pmPlugins/AutolinkPlugin/index.js.map +1 -0
  83. package/lib/module/web/pmPlugins/MentionPlugin/index.js +1 -1
  84. package/lib/module/web/pmPlugins/MentionPlugin/index.js.map +1 -1
  85. package/lib/module/web/pmPlugins/MentionPlugin/makeMentionPluginState.js +23 -4
  86. package/lib/module/web/pmPlugins/MentionPlugin/makeMentionPluginState.js.map +1 -1
  87. package/lib/module/web/pmPlugins/MentionPlugin/setMention.js +17 -18
  88. package/lib/module/web/pmPlugins/MentionPlugin/setMention.js.map +1 -1
  89. package/lib/module/web/pmPlugins/MentionPlugin/useMentionEvents.js +105 -0
  90. package/lib/module/web/pmPlugins/MentionPlugin/useMentionEvents.js.map +1 -0
  91. package/lib/module/web/pmPlugins/ShortcutPlugin.js +11 -0
  92. package/lib/module/web/pmPlugins/ShortcutPlugin.js.map +1 -1
  93. package/lib/module/web/pmPlugins/StrictMarksPlugin.js +2 -0
  94. package/lib/module/web/pmPlugins/StrictMarksPlugin.js.map +1 -1
  95. package/lib/module/web/pmPlugins/StripBoldInStyledHeadingsPlugin.js.map +1 -1
  96. package/lib/module/web/sanitization/htmlSanitizer.js +10 -0
  97. package/lib/module/web/sanitization/htmlSanitizer.js.map +1 -0
  98. package/lib/module/web/styleConversion/buildMentionRulesCSS.js +12 -6
  99. package/lib/module/web/styleConversion/buildMentionRulesCSS.js.map +1 -1
  100. package/lib/module/web/styleConversion/enrichedBaseStyleToCSSProperties.js +159 -0
  101. package/lib/module/web/styleConversion/enrichedBaseStyleToCSSProperties.js.map +1 -0
  102. package/lib/module/web/styleConversion/enrichedInputStyleToCSSProperties.js +3 -155
  103. package/lib/module/web/styleConversion/enrichedInputStyleToCSSProperties.js.map +1 -1
  104. package/lib/module/web/styleConversion/enrichedTextStyleToCSSProperties.js +44 -0
  105. package/lib/module/web/styleConversion/enrichedTextStyleToCSSProperties.js.map +1 -0
  106. package/lib/module/web/styleConversion/{enrichedInputThemingToCSSProperties.js → enrichedThemingToCSSProperties.js} +3 -3
  107. package/lib/module/web/styleConversion/enrichedThemingToCSSProperties.js.map +1 -0
  108. package/lib/module/web/styleConversion/htmlStyleToCSSVariables.js +87 -64
  109. package/lib/module/web/styleConversion/htmlStyleToCSSVariables.js.map +1 -1
  110. package/lib/module/web/styleConversion/inlineImageCSSVariables.js +7 -0
  111. package/lib/module/web/styleConversion/inlineImageCSSVariables.js.map +1 -0
  112. package/lib/module/web/useImageErrorFallback.js +33 -0
  113. package/lib/module/web/useImageErrorFallback.js.map +1 -0
  114. package/lib/module/web/useOnChangeHtml.js +1 -1
  115. package/lib/module/web/useOnChangeHtml.js.map +1 -1
  116. package/lib/module/web/useOnChangeState.js +6 -3
  117. package/lib/module/web/useOnChangeState.js.map +1 -1
  118. package/lib/module/web/useOnLinkDetected.js +32 -45
  119. package/lib/module/web/useOnLinkDetected.js.map +1 -1
  120. package/lib/module/web/usePressInteractions.js +19 -0
  121. package/lib/module/web/usePressInteractions.js.map +1 -0
  122. package/lib/module/web/useStableRef.js +13 -0
  123. package/lib/module/web/useStableRef.js.map +1 -0
  124. package/lib/typescript/src/index.d.ts +1 -0
  125. package/lib/typescript/src/index.d.ts.map +1 -1
  126. package/lib/typescript/src/native/EnrichedText.d.ts +1 -1
  127. package/lib/typescript/src/native/EnrichedText.d.ts.map +1 -1
  128. package/lib/typescript/src/native/EnrichedTextInput.d.ts +1 -1
  129. package/lib/typescript/src/native/EnrichedTextInput.d.ts.map +1 -1
  130. package/lib/typescript/src/types.d.ts +1 -1
  131. package/lib/typescript/src/types.d.ts.map +1 -1
  132. package/lib/typescript/src/utils/expandMentionStylesForIndicators.d.ts +1 -1
  133. package/lib/typescript/src/utils/expandMentionStylesForIndicators.d.ts.map +1 -1
  134. package/lib/typescript/src/utils/normalizeHtmlStyle.d.ts.map +1 -1
  135. package/lib/typescript/src/web/EnrichedText.d.ts +4 -0
  136. package/lib/typescript/src/web/EnrichedText.d.ts.map +1 -0
  137. package/lib/typescript/src/web/EnrichedTextInput.d.ts +2 -2
  138. package/lib/typescript/src/web/EnrichedTextInput.d.ts.map +1 -1
  139. package/lib/typescript/src/web/constants/brokenImageGlyph.d.ts +3 -0
  140. package/lib/typescript/src/web/constants/brokenImageGlyph.d.ts.map +1 -0
  141. package/lib/typescript/src/web/constants/classNames.d.ts +3 -0
  142. package/lib/typescript/src/web/constants/classNames.d.ts.map +1 -0
  143. package/lib/typescript/src/web/emitLinkDetected.d.ts +10 -0
  144. package/lib/typescript/src/web/emitLinkDetected.d.ts.map +1 -0
  145. package/lib/typescript/src/web/formats/EnrichedBlockquote.d.ts.map +1 -1
  146. package/lib/typescript/src/web/formats/EnrichedCheckboxList.d.ts.map +1 -1
  147. package/lib/typescript/src/web/formats/EnrichedCodeBlock.d.ts.map +1 -1
  148. package/lib/typescript/src/web/formats/EnrichedHeading.d.ts.map +1 -1
  149. package/lib/typescript/src/web/formats/EnrichedImageNodeView.d.ts +1 -1
  150. package/lib/typescript/src/web/formats/EnrichedImageNodeView.d.ts.map +1 -1
  151. package/lib/typescript/src/web/formats/EnrichedLink.d.ts +4 -1
  152. package/lib/typescript/src/web/formats/EnrichedLink.d.ts.map +1 -1
  153. package/lib/typescript/src/web/formats/EnrichedOrderedList.d.ts.map +1 -1
  154. package/lib/typescript/src/web/formats/EnrichedTextAlign.d.ts +2 -0
  155. package/lib/typescript/src/web/formats/EnrichedTextAlign.d.ts.map +1 -0
  156. package/lib/typescript/src/web/formats/EnrichedUnorderedList.d.ts.map +1 -1
  157. package/lib/typescript/src/web/formats/applyWrappingListToSelection.d.ts.map +1 -1
  158. package/lib/typescript/src/web/formats/formatRules.d.ts +3 -1
  159. package/lib/typescript/src/web/formats/formatRules.d.ts.map +1 -1
  160. package/lib/typescript/src/web/formats/listKeyboard.d.ts.map +1 -1
  161. package/lib/typescript/src/web/normalization/checkboxHtmlNormalizer.d.ts.map +1 -0
  162. package/lib/typescript/src/web/normalization/htmlNormalizer.d.ts +2 -0
  163. package/lib/typescript/src/web/normalization/htmlNormalizer.d.ts.map +1 -0
  164. package/lib/typescript/src/web/normalization/prepareHtmlForWeb.d.ts +2 -0
  165. package/lib/typescript/src/web/normalization/prepareHtmlForWeb.d.ts.map +1 -0
  166. package/lib/typescript/src/web/normalization/tiptapHtmlNormalizer.d.ts +3 -0
  167. package/lib/typescript/src/web/normalization/tiptapHtmlNormalizer.d.ts.map +1 -0
  168. package/lib/typescript/src/web/pmPlugins/AutolinkPlugin/autolinkRegex.d.ts +7 -0
  169. package/lib/typescript/src/web/pmPlugins/AutolinkPlugin/autolinkRegex.d.ts.map +1 -0
  170. package/lib/typescript/src/web/pmPlugins/AutolinkPlugin/index.d.ts +8 -0
  171. package/lib/typescript/src/web/pmPlugins/AutolinkPlugin/index.d.ts.map +1 -0
  172. package/lib/typescript/src/web/pmPlugins/MentionPlugin/index.d.ts +1 -1
  173. package/lib/typescript/src/web/pmPlugins/MentionPlugin/index.d.ts.map +1 -1
  174. package/lib/typescript/src/web/pmPlugins/MentionPlugin/makeMentionPluginState.d.ts.map +1 -1
  175. package/lib/typescript/src/web/pmPlugins/MentionPlugin/setMention.d.ts.map +1 -1
  176. package/lib/typescript/src/web/pmPlugins/MentionPlugin/useMentionEvents.d.ts +4 -0
  177. package/lib/typescript/src/web/pmPlugins/MentionPlugin/useMentionEvents.d.ts.map +1 -0
  178. package/lib/typescript/src/web/pmPlugins/ShortcutPlugin.d.ts.map +1 -1
  179. package/lib/typescript/src/web/pmPlugins/StrictMarksPlugin.d.ts.map +1 -1
  180. package/lib/typescript/src/web/pmPlugins/StripBoldInStyledHeadingsPlugin.d.ts +6 -1
  181. package/lib/typescript/src/web/pmPlugins/StripBoldInStyledHeadingsPlugin.d.ts.map +1 -1
  182. package/lib/typescript/src/web/sanitization/htmlSanitizer.d.ts +2 -0
  183. package/lib/typescript/src/web/sanitization/htmlSanitizer.d.ts.map +1 -0
  184. package/lib/typescript/src/web/styleConversion/buildMentionRulesCSS.d.ts +2 -2
  185. package/lib/typescript/src/web/styleConversion/buildMentionRulesCSS.d.ts.map +1 -1
  186. package/lib/typescript/src/web/styleConversion/enrichedBaseStyleToCSSProperties.d.ts +8 -0
  187. package/lib/typescript/src/web/styleConversion/enrichedBaseStyleToCSSProperties.d.ts.map +1 -0
  188. package/lib/typescript/src/web/styleConversion/enrichedInputStyleToCSSProperties.d.ts +2 -5
  189. package/lib/typescript/src/web/styleConversion/enrichedInputStyleToCSSProperties.d.ts.map +1 -1
  190. package/lib/typescript/src/web/styleConversion/enrichedTextStyleToCSSProperties.d.ts +4 -0
  191. package/lib/typescript/src/web/styleConversion/enrichedTextStyleToCSSProperties.d.ts.map +1 -0
  192. package/lib/typescript/src/web/styleConversion/{enrichedInputThemingToCSSProperties.d.ts → enrichedThemingToCSSProperties.d.ts} +1 -1
  193. package/lib/typescript/src/web/styleConversion/enrichedThemingToCSSProperties.d.ts.map +1 -0
  194. package/lib/typescript/src/web/styleConversion/htmlStyleToCSSVariables.d.ts +5 -4
  195. package/lib/typescript/src/web/styleConversion/htmlStyleToCSSVariables.d.ts.map +1 -1
  196. package/lib/typescript/src/web/styleConversion/inlineImageCSSVariables.d.ts +3 -0
  197. package/lib/typescript/src/web/styleConversion/inlineImageCSSVariables.d.ts.map +1 -0
  198. package/lib/typescript/src/web/useImageErrorFallback.d.ts +3 -0
  199. package/lib/typescript/src/web/useImageErrorFallback.d.ts.map +1 -0
  200. package/lib/typescript/src/web/useOnChangeState.d.ts.map +1 -1
  201. package/lib/typescript/src/web/useOnLinkDetected.d.ts +2 -2
  202. package/lib/typescript/src/web/useOnLinkDetected.d.ts.map +1 -1
  203. package/lib/typescript/src/web/usePressInteractions.d.ts +2 -0
  204. package/lib/typescript/src/web/usePressInteractions.d.ts.map +1 -0
  205. package/lib/typescript/src/web/useStableRef.d.ts +3 -0
  206. package/lib/typescript/src/web/useStableRef.d.ts.map +1 -0
  207. package/package.json +54 -28
  208. package/src/index.tsx +1 -0
  209. package/src/types.ts +5 -3
  210. package/src/utils/expandMentionStylesForIndicators.ts +3 -3
  211. package/src/utils/normalizeHtmlStyle.ts +2 -1
  212. package/src/web/EnrichedText.css +343 -0
  213. package/src/web/EnrichedText.tsx +82 -0
  214. package/src/web/EnrichedTextInput.tsx +69 -55
  215. package/src/web/constants/brokenImageGlyph.ts +7 -0
  216. package/src/web/constants/classNames.ts +2 -0
  217. package/src/web/emitLinkDetected.ts +29 -0
  218. package/src/web/formats/EnrichedBlockquote.ts +2 -1
  219. package/src/web/formats/EnrichedCheckboxList.ts +5 -2
  220. package/src/web/formats/EnrichedCodeBlock.ts +2 -1
  221. package/src/web/formats/EnrichedHeading.ts +2 -1
  222. package/src/web/formats/EnrichedImageNodeView.tsx +1 -3
  223. package/src/web/formats/EnrichedLink.ts +59 -4
  224. package/src/web/formats/EnrichedOrderedList.ts +5 -2
  225. package/src/web/formats/EnrichedTextAlign.ts +88 -0
  226. package/src/web/formats/EnrichedUnorderedList.ts +5 -2
  227. package/src/web/formats/applyWrappingListToSelection.ts +4 -4
  228. package/src/web/formats/formatRules.ts +48 -4
  229. package/src/web/formats/listKeyboard.ts +6 -1
  230. package/src/web/normalization/htmlNormalizer.ts +656 -0
  231. package/src/web/normalization/prepareHtmlForWeb.ts +93 -0
  232. package/src/web/{tiptapHtmlNormalizer.ts → normalization/tiptapHtmlNormalizer.ts} +12 -2
  233. package/src/web/pmPlugins/AutolinkPlugin/autolinkRegex.ts +43 -0
  234. package/src/web/pmPlugins/AutolinkPlugin/index.ts +274 -0
  235. package/src/web/pmPlugins/MentionPlugin/index.ts +1 -1
  236. package/src/web/pmPlugins/MentionPlugin/makeMentionPluginState.ts +32 -5
  237. package/src/web/pmPlugins/MentionPlugin/setMention.ts +19 -29
  238. package/src/web/pmPlugins/MentionPlugin/useMentionEvents.ts +114 -0
  239. package/src/web/pmPlugins/ShortcutPlugin.ts +7 -0
  240. package/src/web/pmPlugins/StrictMarksPlugin.ts +3 -0
  241. package/src/web/pmPlugins/StripBoldInStyledHeadingsPlugin.ts +41 -36
  242. package/src/web/sanitization/htmlSanitizer.ts +8 -0
  243. package/src/web/styleConversion/buildMentionRulesCSS.ts +30 -11
  244. package/src/web/styleConversion/enrichedBaseStyleToCSSProperties.ts +228 -0
  245. package/src/web/styleConversion/enrichedInputStyleToCSSProperties.ts +6 -217
  246. package/src/web/styleConversion/enrichedTextStyleToCSSProperties.ts +53 -0
  247. package/src/web/styleConversion/{enrichedInputThemingToCSSProperties.ts → enrichedThemingToCSSProperties.ts} +4 -4
  248. package/src/web/styleConversion/htmlStyleToCSSVariables.ts +121 -70
  249. package/src/web/styleConversion/inlineImageCSSVariables.ts +6 -0
  250. package/src/web/useImageErrorFallback.ts +37 -0
  251. package/src/web/useOnChangeHtml.ts +1 -1
  252. package/src/web/useOnChangeState.ts +7 -5
  253. package/src/web/useOnLinkDetected.ts +38 -50
  254. package/src/web/usePressInteractions.tsx +22 -0
  255. package/src/web/useStableRef.ts +12 -0
  256. package/lib/module/web/EnrichedTextInput.css +0 -201
  257. package/lib/module/web/checkboxHtmlNormalizer.js.map +0 -1
  258. package/lib/module/web/pmPlugins/MentionPlugin/subscribeMentionEvents.js +0 -100
  259. package/lib/module/web/pmPlugins/MentionPlugin/subscribeMentionEvents.js.map +0 -1
  260. package/lib/module/web/styleConversion/enrichedInputThemingToCSSProperties.js.map +0 -1
  261. package/lib/module/web/tiptapHtmlNormalizer.js.map +0 -1
  262. package/lib/typescript/src/web/checkboxHtmlNormalizer.d.ts.map +0 -1
  263. package/lib/typescript/src/web/pmPlugins/MentionPlugin/subscribeMentionEvents.d.ts +0 -4
  264. package/lib/typescript/src/web/pmPlugins/MentionPlugin/subscribeMentionEvents.d.ts.map +0 -1
  265. package/lib/typescript/src/web/styleConversion/enrichedInputThemingToCSSProperties.d.ts.map +0 -1
  266. package/lib/typescript/src/web/tiptapHtmlNormalizer.d.ts +0 -3
  267. package/lib/typescript/src/web/tiptapHtmlNormalizer.d.ts.map +0 -1
  268. package/src/web/EnrichedTextInput.css +0 -201
  269. package/src/web/pmPlugins/MentionPlugin/subscribeMentionEvents.ts +0 -105
  270. /package/lib/module/web/{checkboxHtmlNormalizer.js → normalization/checkboxHtmlNormalizer.js} +0 -0
  271. /package/lib/typescript/src/web/{checkboxHtmlNormalizer.d.ts → normalization/checkboxHtmlNormalizer.d.ts} +0 -0
  272. /package/src/web/{checkboxHtmlNormalizer.ts → normalization/checkboxHtmlNormalizer.ts} +0 -0
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+
3
+ const FULL_URL_REGEX = /https?:\/\/(?:www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)/;
4
+ const WWW_REGEX = /www\.[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)/;
5
+ const BARE_REGEX = /[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)/;
6
+ const DEFAULT_AUTOLINK_SUBSTRING_PATTERN = `(?:${FULL_URL_REGEX.source})|(?:${WWW_REGEX.source})|(?:${BARE_REGEX.source})`;
7
+ function asGlobalRegex(re) {
8
+ return re.global ? re : new RegExp(re.source, `${re.flags.replace(/g/g, '')}g`);
9
+ }
10
+
11
+ // URL-like substrings inside a single whitespace-delimited token (`\S+`),
12
+ export function findAutolinkRangesInWord(word, linkRegex) {
13
+ const re = linkRegex ? asGlobalRegex(linkRegex) : new RegExp(DEFAULT_AUTOLINK_SUBSTRING_PATTERN, 'gi');
14
+ const out = [];
15
+ for (const m of word.matchAll(re)) {
16
+ const text = m[0] ?? '';
17
+ if (text.length === 0 || m.index === undefined) continue;
18
+ const start = m.index;
19
+ out.push({
20
+ start,
21
+ endExclusive: start + text.length,
22
+ text
23
+ });
24
+ }
25
+ return out;
26
+ }
27
+ //# sourceMappingURL=autolinkRegex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["FULL_URL_REGEX","WWW_REGEX","BARE_REGEX","DEFAULT_AUTOLINK_SUBSTRING_PATTERN","source","asGlobalRegex","re","global","RegExp","flags","replace","findAutolinkRangesInWord","word","linkRegex","out","m","matchAll","text","length","index","undefined","start","push","endExclusive"],"sourceRoot":"../../../../../src","sources":["web/pmPlugins/AutolinkPlugin/autolinkRegex.ts"],"mappings":";;AAAA,MAAMA,cAAc,GAClB,6FAA6F;AAC/F,MAAMC,SAAS,GACb,6EAA6E;AAC/E,MAAMC,UAAU,GACd,wEAAwE;AAE1E,MAAMC,kCAAkC,GAAG,MAAMH,cAAc,CAACI,MAAM,QAAQH,SAAS,CAACG,MAAM,QAAQF,UAAU,CAACE,MAAM,GAAG;AAQ1H,SAASC,aAAaA,CAACC,EAAU,EAAU;EACzC,OAAOA,EAAE,CAACC,MAAM,GACZD,EAAE,GACF,IAAIE,MAAM,CAACF,EAAE,CAACF,MAAM,EAAE,GAAGE,EAAE,CAACG,KAAK,CAACC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,CAAC;AAC7D;;AAEA;AACA,OAAO,SAASC,wBAAwBA,CACtCC,IAAY,EACZC,SAA6B,EACG;EAChC,MAAMP,EAAE,GAAGO,SAAS,GAChBR,aAAa,CAACQ,SAAS,CAAC,GACxB,IAAIL,MAAM,CAACL,kCAAkC,EAAE,IAAI,CAAC;EAExD,MAAMW,GAA0B,GAAG,EAAE;EACrC,KAAK,MAAMC,CAAC,IAAIH,IAAI,CAACI,QAAQ,CAACV,EAAE,CAAC,EAAE;IACjC,MAAMW,IAAI,GAAGF,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;IACvB,IAAIE,IAAI,CAACC,MAAM,KAAK,CAAC,IAAIH,CAAC,CAACI,KAAK,KAAKC,SAAS,EAAE;IAChD,MAAMC,KAAK,GAAGN,CAAC,CAACI,KAAK;IACrBL,GAAG,CAACQ,IAAI,CAAC;MACPD,KAAK;MACLE,YAAY,EAAEF,KAAK,GAAGJ,IAAI,CAACC,MAAM;MACjCD;IACF,CAAC,CAAC;EACJ;EACA,OAAOH,GAAG;AACZ","ignoreList":[]}
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+
3
+ import { Extension } from '@tiptap/core';
4
+ import { Plugin, PluginKey } from '@tiptap/pm/state';
5
+ import { Mapping } from '@tiptap/pm/transform';
6
+ import { emitLinkDetected } from "../../emitLinkDetected.js";
7
+ import { tiptapPosToNativePos } from "../../positionMapping.js";
8
+ import { findAutolinkRangesInWord } from "./autolinkRegex.js";
9
+ const WHITESPACE_RE = /\S+/g;
10
+ function removeAutoLinksInRange(doc, tr, linkType, from, to) {
11
+ if (from >= to) return;
12
+ doc.nodesBetween(from, to, (node, pos) => {
13
+ if (!node.isText) return true;
14
+ const link = linkType.isInSet(node.marks);
15
+ if (link?.attrs.auto === true) {
16
+ tr.removeMark(Math.max(from, pos), Math.min(to, pos + node.nodeSize), linkType);
17
+ }
18
+ return false;
19
+ });
20
+ }
21
+ function rangeHasManualLink(doc, linkType, from, to) {
22
+ let found = false;
23
+ doc.nodesBetween(from, to, node => {
24
+ if (found) return false;
25
+ if (!node.isText) return true;
26
+ const link = linkType.isInSet(node.marks);
27
+ if (link && link.attrs.auto !== true) found = true;
28
+ return false;
29
+ });
30
+ return found;
31
+ }
32
+ function rangeHasExactAutoLink(doc, linkType, from, to, href) {
33
+ let hasExact = true;
34
+ let hasText = false;
35
+ doc.nodesBetween(from, to, node => {
36
+ if (!hasExact) return false;
37
+ if (!node.isText) return true;
38
+ hasText = true;
39
+ const link = linkType.isInSet(node.marks);
40
+ if (!link || link.attrs.auto !== true || link.attrs.href !== href) {
41
+ hasExact = false;
42
+ }
43
+ return false;
44
+ });
45
+ return hasText && hasExact;
46
+ }
47
+ function extractRuns(block, blockStartPos, schema) {
48
+ const runs = [];
49
+ let current = null;
50
+ block.forEach((child, offset) => {
51
+ const eligibleText = child.isText && child.text && !schema.marks.code?.isInSet(child.marks) && !schema.marks.mention?.isInSet(child.marks);
52
+ if (eligibleText) {
53
+ if (!current) {
54
+ current = {
55
+ text: '',
56
+ startPos: blockStartPos + 1 + offset
57
+ };
58
+ }
59
+ current.text += child.text;
60
+ return;
61
+ }
62
+ if (current) {
63
+ runs.push(current);
64
+ current = null;
65
+ }
66
+ });
67
+ if (current) runs.push(current);
68
+ return runs;
69
+ }
70
+ function getDirtyBlocks(doc, transactions) {
71
+ const mapping = new Mapping();
72
+ for (const tr of transactions) mapping.appendMapping(tr.mapping);
73
+ const blocks = new Map();
74
+ const docSize = doc.content.size;
75
+ mapping.maps.forEach((stepMap, i) => {
76
+ const rest = mapping.slice(i + 1);
77
+ stepMap.forEach((_oldStart, _oldEnd, newStart, newEnd) => {
78
+ const from = Math.max(0, rest.map(newStart, -1) - 1);
79
+ const to = Math.min(docSize, rest.map(newEnd, 1) + 1);
80
+ doc.nodesBetween(from, to, (node, pos) => {
81
+ if (node.type.name === 'codeBlock') return false;
82
+ if (node.inlineContent && !blocks.has(pos)) {
83
+ blocks.set(pos, node);
84
+ return false;
85
+ }
86
+ return true;
87
+ });
88
+ });
89
+ });
90
+ return Array.from(blocks, ([pos, node]) => ({
91
+ pos,
92
+ node
93
+ }));
94
+ }
95
+ export const AutolinkPlugin = Extension.create({
96
+ name: 'autolinkDetector',
97
+ addOptions() {
98
+ return {
99
+ getLinkEmitter: () => {
100
+ throw new Error('AutolinkPlugin.configure({ getLinkEmitter }) is required');
101
+ }
102
+ };
103
+ },
104
+ addProseMirrorPlugins() {
105
+ return [new Plugin({
106
+ key: new PluginKey('autolinkDetector'),
107
+ appendTransaction: (transactions, _oldState, newState) => {
108
+ if (!transactions.some(tr => tr.docChanged)) return null;
109
+ const state = this.options.getLinkEmitter();
110
+ if (!state || state.linkRegex === null) return null;
111
+ const {
112
+ schema,
113
+ doc,
114
+ tr
115
+ } = newState;
116
+ const linkType = schema.marks.link;
117
+ if (!linkType) return null;
118
+ const dirtyBlocks = getDirtyBlocks(doc, transactions);
119
+ if (dirtyBlocks.length === 0) return null;
120
+ const detected = [];
121
+ for (const {
122
+ node,
123
+ pos
124
+ } of dirtyBlocks) {
125
+ const blockFrom = pos + 1;
126
+ const blockTo = pos + node.nodeSize - 1;
127
+
128
+ // find all valid links that should exist in this block
129
+ const desiredLinks = [];
130
+ for (const run of extractRuns(node, pos, schema)) {
131
+ for (const match of run.text.matchAll(WHITESPACE_RE)) {
132
+ const word = match[0];
133
+ const wordStart = run.startPos + match.index;
134
+ const wordEnd = wordStart + word.length;
135
+ const ranges = findAutolinkRangesInWord(word, state.linkRegex);
136
+ const fullMatch = ranges.some(r => r.start === 0 && r.endExclusive === word.length);
137
+ if (!fullMatch) continue;
138
+ if (rangeHasManualLink(doc, linkType, wordStart, wordEnd)) continue;
139
+ desiredLinks.push({
140
+ start: wordStart,
141
+ end: wordEnd,
142
+ href: word
143
+ });
144
+ }
145
+ }
146
+ let lastPos = blockFrom;
147
+ for (const link of desiredLinks) {
148
+ // strip auto links in the "gap" before this desired link
149
+ removeAutoLinksInRange(doc, tr, linkType, lastPos, link.start);
150
+ tr.addMark(link.start, link.end, linkType.create({
151
+ href: link.href,
152
+ auto: true
153
+ }));
154
+ const alreadyExisted = rangeHasExactAutoLink(doc, linkType, link.start, link.end, link.href);
155
+
156
+ // don't emit if the link was not changed
157
+ if (!alreadyExisted) {
158
+ detected.push({
159
+ text: link.href,
160
+ url: link.href,
161
+ start: tiptapPosToNativePos(doc, link.start),
162
+ end: tiptapPosToNativePos(doc, link.end)
163
+ });
164
+ }
165
+ lastPos = link.end;
166
+ }
167
+
168
+ // strip rest of the auto links that are now not desired
169
+ removeAutoLinksInRange(doc, tr, linkType, lastPos, blockTo);
170
+ }
171
+ if (tr.steps.length === 0) return null;
172
+ for (const event of detected) emitLinkDetected(state, event);
173
+ return tr;
174
+ }
175
+ })];
176
+ }
177
+ });
178
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Extension","Plugin","PluginKey","Mapping","emitLinkDetected","tiptapPosToNativePos","findAutolinkRangesInWord","WHITESPACE_RE","removeAutoLinksInRange","doc","tr","linkType","from","to","nodesBetween","node","pos","isText","link","isInSet","marks","attrs","auto","removeMark","Math","max","min","nodeSize","rangeHasManualLink","found","rangeHasExactAutoLink","href","hasExact","hasText","extractRuns","block","blockStartPos","schema","runs","current","forEach","child","offset","eligibleText","text","code","mention","startPos","push","getDirtyBlocks","transactions","mapping","appendMapping","blocks","Map","docSize","content","size","maps","stepMap","i","rest","slice","_oldStart","_oldEnd","newStart","newEnd","map","type","name","inlineContent","has","set","Array","AutolinkPlugin","create","addOptions","getLinkEmitter","Error","addProseMirrorPlugins","key","appendTransaction","_oldState","newState","some","docChanged","state","options","linkRegex","dirtyBlocks","length","detected","blockFrom","blockTo","desiredLinks","run","match","matchAll","word","wordStart","index","wordEnd","ranges","fullMatch","r","start","endExclusive","end","lastPos","addMark","alreadyExisted","url","steps","event"],"sourceRoot":"../../../../../src","sources":["web/pmPlugins/AutolinkPlugin/index.ts"],"mappings":"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","ignoreList":[]}
@@ -10,7 +10,7 @@ import { stripPartialMentionMarks } from "./stripPartialMentionMarks.js";
10
10
  export { mentionPluginKey } from "./mentionPluginKey.js";
11
11
  export { setMention } from "./setMention.js";
12
12
  export { startMention } from "./startMention.js";
13
- export { subscribeMentionEvents } from "./subscribeMentionEvents.js";
13
+ export { useMentionEvents } from "./useMentionEvents.js";
14
14
  export const MentionPlugin = Extension.create({
15
15
  name: 'mentionTrigger',
16
16
  addOptions() {
@@ -1 +1 @@
1
- {"version":3,"names":["Extension","Slice","Plugin","makeMentionPluginState","mentionPluginKey","removeMentionMarksIfSpansResized","stripPartialMentionMarks","setMention","startMention","subscribeMentionEvents","MentionPlugin","create","name","addOptions","getIndicators","Error","addProseMirrorPlugins","key","props","transformPasted","slice","content","openStart","openEnd","state","options","appendTransaction"],"sourceRoot":"../../../../../src","sources":["web/pmPlugins/MentionPlugin/index.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,cAAc;AACxC,SAASC,KAAK,QAAQ,kBAAkB;AACxC,SAASC,MAAM,QAAQ,kBAAkB;AACzC,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,gCAAgC,QAAQ,uCAAoC;AACrF,SAASC,wBAAwB,QAAQ,+BAA4B;AAIrE,SAASF,gBAAgB,QAAQ,uBAAoB;AACrD,SAASG,UAAU,QAAQ,iBAAc;AACzC,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,sBAAsB,QAAQ,6BAA0B;AAEjE,OAAO,MAAMC,aAAa,GAAGV,SAAS,CAACW,MAAM,CAAuB;EAClEC,IAAI,EAAE,gBAAgB;EACtBC,UAAUA,CAAA,EAAG;IACX,OAAO;MACLC,aAAa,EAAEA,CAAA,KAAM;QACnB,MAAM,IAAIC,KAAK,CACb,wDACF,CAAC;MACH;IACF,CAAC;EACH,CAAC;EACDC,qBAAqBA,CAAA,EAAG;IACtB,OAAO,CACL,IAAId,MAAM,CAAe;MACvBe,GAAG,EAAEb,gBAAgB;MACrBc,KAAK,EAAE;QACLC,eAAeA,CAACC,KAAY,EAAS;UACnC,OAAO,IAAInB,KAAK,CACdK,wBAAwB,CAACc,KAAK,CAACC,OAAO,CAAC,EACvCD,KAAK,CAACE,SAAS,EACfF,KAAK,CAACG,OACR,CAAC;QACH;MACF,CAAC;MACDC,KAAK,EAAErB,sBAAsB,CAAC,IAAI,CAACsB,OAAO,CAACX,aAAa,CAAC;MACzDY,iBAAiB,EAAErB;IACrB,CAAC,CAAC,CACH;EACH;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Extension","Slice","Plugin","makeMentionPluginState","mentionPluginKey","removeMentionMarksIfSpansResized","stripPartialMentionMarks","setMention","startMention","useMentionEvents","MentionPlugin","create","name","addOptions","getIndicators","Error","addProseMirrorPlugins","key","props","transformPasted","slice","content","openStart","openEnd","state","options","appendTransaction"],"sourceRoot":"../../../../../src","sources":["web/pmPlugins/MentionPlugin/index.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,cAAc;AACxC,SAASC,KAAK,QAAQ,kBAAkB;AACxC,SAASC,MAAM,QAAQ,kBAAkB;AACzC,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,gBAAgB,QAAQ,uBAAoB;AACrD,SAASC,gCAAgC,QAAQ,uCAAoC;AACrF,SAASC,wBAAwB,QAAQ,+BAA4B;AAIrE,SAASF,gBAAgB,QAAQ,uBAAoB;AACrD,SAASG,UAAU,QAAQ,iBAAc;AACzC,SAASC,YAAY,QAAQ,mBAAgB;AAC7C,SAASC,gBAAgB,QAAQ,uBAAoB;AAErD,OAAO,MAAMC,aAAa,GAAGV,SAAS,CAACW,MAAM,CAAuB;EAClEC,IAAI,EAAE,gBAAgB;EACtBC,UAAUA,CAAA,EAAG;IACX,OAAO;MACLC,aAAa,EAAEA,CAAA,KAAM;QACnB,MAAM,IAAIC,KAAK,CACb,wDACF,CAAC;MACH;IACF,CAAC;EACH,CAAC;EACDC,qBAAqBA,CAAA,EAAG;IACtB,OAAO,CACL,IAAId,MAAM,CAAe;MACvBe,GAAG,EAAEb,gBAAgB;MACrBc,KAAK,EAAE;QACLC,eAAeA,CAACC,KAAY,EAAS;UACnC,OAAO,IAAInB,KAAK,CACdK,wBAAwB,CAACc,KAAK,CAACC,OAAO,CAAC,EACvCD,KAAK,CAACE,SAAS,EACfF,KAAK,CAACG,OACR,CAAC;QACH;MACF,CAAC;MACDC,KAAK,EAAErB,sBAAsB,CAAC,IAAI,CAACsB,OAAO,CAACX,aAAa,CAAC;MACzDY,iBAAiB,EAAErB;IACrB,CAAC,CAAC,CACH;EACH;AACF,CAAC,CAAC","ignoreList":[]}
@@ -20,7 +20,8 @@ export function makeMentionPluginState(getIndicators) {
20
20
  active: false
21
21
  };
22
22
  const blockStart = $from.start();
23
- const text = newEditorState.doc.textBetween(blockStart, $from.pos, '\n', '\n');
23
+ const wordEndPos = getCurrentWordEndPosition(newEditorState, $from);
24
+ const text = newEditorState.doc.textBetween(blockStart, wordEndPos, '\n', '\n');
24
25
  const mentionType = newEditorState.schema.marks.mention;
25
26
  const indicators = getIndicators();
26
27
  const found = findLastValidMentionIndicator(text, indicators, idx => {
@@ -41,7 +42,7 @@ export function makeMentionPluginState(getIndicators) {
41
42
  active: true,
42
43
  indicator: found.indicator,
43
44
  from: blockStart + found.indexInText,
44
- to: $from.pos,
45
+ to: wordEndPos,
45
46
  query
46
47
  };
47
48
  }
@@ -55,8 +56,8 @@ function findLastValidMentionIndicator(text, indicators, isIndicatorInsideFinali
55
56
  const isAfterSpace = idx > 0 && text[idx - 1] === ' ';
56
57
  if (!isAtStart && !isAfterSpace) continue;
57
58
 
58
- // Skip indicators inside a finalized mention
59
- if (isIndicatorInsideFinalizedMention(idx)) continue;
59
+ // Stops inside a finalized mention
60
+ if (isIndicatorInsideFinalizedMention(idx)) return null;
60
61
  return {
61
62
  indexInText: idx,
62
63
  indicator: ch
@@ -64,4 +65,22 @@ function findLastValidMentionIndicator(text, indicators, isIndicatorInsideFinali
64
65
  }
65
66
  return null;
66
67
  }
68
+ function getCurrentWordEndPosition(state, $from) {
69
+ const blockEnd = $from.end();
70
+ let wordEndPos = $from.pos;
71
+ while (wordEndPos < blockEnd) {
72
+ const char = state.doc.textBetween(wordEndPos, wordEndPos + 1);
73
+ if (/\s/.test(char)) {
74
+ break;
75
+ }
76
+
77
+ // Break if advancing enters a blocked context
78
+ const $nextPos = state.doc.resolve(wordEndPos + 1);
79
+ if (isCaretInBlockedContext($nextPos, state.schema)) {
80
+ break;
81
+ }
82
+ wordEndPos++;
83
+ }
84
+ return wordEndPos;
85
+ }
67
86
  //# sourceMappingURL=makeMentionPluginState.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["isCaretInBlockedContext","makeMentionPluginState","getIndicators","init","active","apply","_tr","_prev","_old","newEditorState","selection","empty","$from","schema","blockStart","start","text","doc","textBetween","pos","mentionType","marks","mention","indicators","found","findLastValidMentionIndicator","idx","$at","resolve","Boolean","isInSet","query","slice","indexInText","match","length","indicator","from","to","isIndicatorInsideFinalizedMention","ch","includes","isAtStart","isAfterSpace"],"sourceRoot":"../../../../../src","sources":["web/pmPlugins/MentionPlugin/makeMentionPluginState.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["isCaretInBlockedContext","makeMentionPluginState","getIndicators","init","active","apply","_tr","_prev","_old","newEditorState","selection","empty","$from","schema","blockStart","start","wordEndPos","getCurrentWordEndPosition","text","doc","textBetween","mentionType","marks","mention","indicators","found","findLastValidMentionIndicator","idx","$at","resolve","Boolean","isInSet","query","slice","indexInText","match","length","indicator","from","to","isIndicatorInsideFinalizedMention","ch","includes","isAtStart","isAfterSpace","state","blockEnd","end","pos","char","test","$nextPos"],"sourceRoot":"../../../../../src","sources":["web/pmPlugins/MentionPlugin/makeMentionPluginState.ts"],"mappings":"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","ignoreList":[]}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { Fragment } from '@tiptap/pm/model';
4
+ import { TextSelection } from '@tiptap/pm/state';
4
5
  import { isCaretInBlockedContext } from "./isCaretInBlockedContext.js";
5
6
  import { mentionPluginKey } from "./mentionPluginKey.js";
6
7
 
@@ -25,34 +26,32 @@ export function setMention(editor, indicator, text, attributes) {
25
26
  from,
26
27
  to
27
28
  } = triggerState;
28
- const extendedTo = Math.max(to, exclusiveEndThroughMatchingMentionTail(state, from, text));
29
+
30
+ // avoid inserting a space if there already is one
31
+ const parentEnd = state.doc.resolve(to).end();
32
+ let hasSpaceAfter = false;
33
+ if (to < parentEnd) {
34
+ const charAfter = state.doc.textBetween(to, to + 1, '');
35
+ hasSpaceAfter = /\s/.test(charAfter);
36
+ }
29
37
  const mentionMark = mentionType.create({
30
38
  indicator,
31
39
  text,
32
40
  attributes: attributes ?? {}
33
41
  });
34
42
  const baseMarks = state.doc.resolve(from).marks().filter(m => m.type.name !== 'mention');
35
- const fragment = Fragment.fromArray([state.schema.text(text, mentionMark.addToSet(baseMarks)), state.schema.text(' ', baseMarks)]);
43
+ const nodes = [state.schema.text(text, mentionMark.addToSet(baseMarks))];
44
+ if (!hasSpaceAfter) {
45
+ nodes.push(state.schema.text(' ', baseMarks));
46
+ }
47
+ const fragment = Fragment.fromArray(nodes);
36
48
  editor.chain().focus().command(({
37
49
  tr
38
50
  }) => {
39
- tr.replaceWith(from, extendedTo, fragment);
51
+ tr.replaceWith(from, to, fragment);
52
+ const targetPos = from + fragment.size + (hasSpaceAfter ? 1 : 0);
53
+ tr.setSelection(TextSelection.create(tr.doc, targetPos));
40
54
  return true;
41
55
  }).run();
42
56
  }
43
-
44
- // If the user moved the caret back into a partial match, extend `to` over the
45
- // matching tail to avoid leftover characters after the inserted mention.
46
- function exclusiveEndThroughMatchingMentionTail(state, from, text) {
47
- const parentEnd = state.doc.resolve(from).end();
48
- let scanPos = from;
49
- for (const ch of text) {
50
- const end = scanPos + ch.length;
51
- if (end > parentEnd || state.doc.textBetween(scanPos, end, '') !== ch) {
52
- break;
53
- }
54
- scanPos = end;
55
- }
56
- return scanPos;
57
- }
58
57
  //# sourceMappingURL=setMention.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Fragment","isCaretInBlockedContext","mentionPluginKey","setMention","editor","indicator","text","attributes","state","triggerState","getState","active","console","warn","mentionType","schema","marks","mention","$from","selection","from","to","extendedTo","Math","max","exclusiveEndThroughMatchingMentionTail","mentionMark","create","baseMarks","doc","resolve","filter","m","type","name","fragment","fromArray","addToSet","chain","focus","command","tr","replaceWith","run","parentEnd","end","scanPos","ch","length","textBetween"],"sourceRoot":"../../../../../src","sources":["web/pmPlugins/MentionPlugin/setMention.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,kBAAkB;AAG3C,SAASC,uBAAuB,QAAQ,8BAA2B;AACnE,SAASC,gBAAgB,QAAQ,uBAAoB;;AAErD;AACA,OAAO,SAASC,UAAUA,CACxBC,MAAc,EACdC,SAAiB,EACjBC,IAAY,EACZC,UAAmC,EAC7B;EACN,MAAM;IAAEC;EAAM,CAAC,GAAGJ,MAAM;EACxB,MAAMK,YAAY,GAAGP,gBAAgB,CAACQ,QAAQ,CAACF,KAAK,CAAC;EAErD,IAAI,CAACC,YAAY,EAAEE,MAAM,EAAE;IACzBC,OAAO,CAACC,IAAI,CACV,4EACF,CAAC;IACD;EACF;EAEA,MAAMC,WAAW,GAAGN,KAAK,CAACO,MAAM,CAACC,KAAK,CAACC,OAAO;EAC9C,IAAI,CAACH,WAAW,EAAE;EAElB,MAAMI,KAAK,GAAGV,KAAK,CAACW,SAAS,CAACD,KAAK;EACnC,IAAIjB,uBAAuB,CAACiB,KAAK,EAAEV,KAAK,CAACO,MAAM,CAAC,EAAE;IAChDH,OAAO,CAACC,IAAI,CACV,2EACF,CAAC;IACD;EACF;EAEA,MAAM;IAAEO,IAAI;IAAEC;EAAG,CAAC,GAAGZ,YAAY;EAEjC,MAAMa,UAAU,GAAGC,IAAI,CAACC,GAAG,CACzBH,EAAE,EACFI,sCAAsC,CAACjB,KAAK,EAAEY,IAAI,EAAEd,IAAI,CAC1D,CAAC;EAED,MAAMoB,WAAW,GAAGZ,WAAW,CAACa,MAAM,CAAC;IACrCtB,SAAS;IACTC,IAAI;IACJC,UAAU,EAAEA,UAAU,IAAI,CAAC;EAC7B,CAAC,CAAC;EACF,MAAMqB,SAAS,GAAGpB,KAAK,CAACqB,GAAG,CACxBC,OAAO,CAACV,IAAI,CAAC,CACbJ,KAAK,CAAC,CAAC,CACPe,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,CAACC,IAAI,KAAK,SAAS,CAAC;EAC3C,MAAMC,QAAQ,GAAGnC,QAAQ,CAACoC,SAAS,CAAC,CAClC5B,KAAK,CAACO,MAAM,CAACT,IAAI,CAACA,IAAI,EAAEoB,WAAW,CAACW,QAAQ,CAACT,SAAS,CAAC,CAAC,EACxDpB,KAAK,CAACO,MAAM,CAACT,IAAI,CAAC,GAAG,EAAEsB,SAAS,CAAC,CAClC,CAAC;EAEFxB,MAAM,CACHkC,KAAK,CAAC,CAAC,CACPC,KAAK,CAAC,CAAC,CACPC,OAAO,CAAC,CAAC;IAAEC;EAAG,CAAC,KAAK;IACnBA,EAAE,CAACC,WAAW,CAACtB,IAAI,EAAEE,UAAU,EAAEa,QAAQ,CAAC;IAC1C,OAAO,IAAI;EACb,CAAC,CAAC,CACDQ,GAAG,CAAC,CAAC;AACV;;AAEA;AACA;AACA,SAASlB,sCAAsCA,CAC7CjB,KAAkB,EAClBY,IAAY,EACZd,IAAY,EACJ;EACR,MAAMsC,SAAS,GAAGpC,KAAK,CAACqB,GAAG,CAACC,OAAO,CAACV,IAAI,CAAC,CAACyB,GAAG,CAAC,CAAC;EAC/C,IAAIC,OAAO,GAAG1B,IAAI;EAClB,KAAK,MAAM2B,EAAE,IAAIzC,IAAI,EAAE;IACrB,MAAMuC,GAAG,GAAGC,OAAO,GAAGC,EAAE,CAACC,MAAM;IAC/B,IAAIH,GAAG,GAAGD,SAAS,IAAIpC,KAAK,CAACqB,GAAG,CAACoB,WAAW,CAACH,OAAO,EAAED,GAAG,EAAE,EAAE,CAAC,KAAKE,EAAE,EAAE;MACrE;IACF;IACAD,OAAO,GAAGD,GAAG;EACf;EACA,OAAOC,OAAO;AAChB","ignoreList":[]}
1
+ {"version":3,"names":["Fragment","TextSelection","isCaretInBlockedContext","mentionPluginKey","setMention","editor","indicator","text","attributes","state","triggerState","getState","active","console","warn","mentionType","schema","marks","mention","$from","selection","from","to","parentEnd","doc","resolve","end","hasSpaceAfter","charAfter","textBetween","test","mentionMark","create","baseMarks","filter","m","type","name","nodes","addToSet","push","fragment","fromArray","chain","focus","command","tr","replaceWith","targetPos","size","setSelection","run"],"sourceRoot":"../../../../../src","sources":["web/pmPlugins/MentionPlugin/setMention.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,kBAAkB;AAC3C,SAASC,aAAa,QAAQ,kBAAkB;AAEhD,SAASC,uBAAuB,QAAQ,8BAA2B;AACnE,SAASC,gBAAgB,QAAQ,uBAAoB;;AAErD;AACA,OAAO,SAASC,UAAUA,CACxBC,MAAc,EACdC,SAAiB,EACjBC,IAAY,EACZC,UAAmC,EAC7B;EACN,MAAM;IAAEC;EAAM,CAAC,GAAGJ,MAAM;EACxB,MAAMK,YAAY,GAAGP,gBAAgB,CAACQ,QAAQ,CAACF,KAAK,CAAC;EAErD,IAAI,CAACC,YAAY,EAAEE,MAAM,EAAE;IACzBC,OAAO,CAACC,IAAI,CACV,4EACF,CAAC;IACD;EACF;EAEA,MAAMC,WAAW,GAAGN,KAAK,CAACO,MAAM,CAACC,KAAK,CAACC,OAAO;EAC9C,IAAI,CAACH,WAAW,EAAE;EAElB,MAAMI,KAAK,GAAGV,KAAK,CAACW,SAAS,CAACD,KAAK;EACnC,IAAIjB,uBAAuB,CAACiB,KAAK,EAAEV,KAAK,CAACO,MAAM,CAAC,EAAE;IAChDH,OAAO,CAACC,IAAI,CACV,2EACF,CAAC;IACD;EACF;EAEA,MAAM;IAAEO,IAAI;IAAEC;EAAG,CAAC,GAAGZ,YAAY;;EAEjC;EACA,MAAMa,SAAS,GAAGd,KAAK,CAACe,GAAG,CAACC,OAAO,CAACH,EAAE,CAAC,CAACI,GAAG,CAAC,CAAC;EAC7C,IAAIC,aAAa,GAAG,KAAK;EACzB,IAAIL,EAAE,GAAGC,SAAS,EAAE;IAClB,MAAMK,SAAS,GAAGnB,KAAK,CAACe,GAAG,CAACK,WAAW,CAACP,EAAE,EAAEA,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;IACvDK,aAAa,GAAG,IAAI,CAACG,IAAI,CAACF,SAAS,CAAC;EACtC;EAEA,MAAMG,WAAW,GAAGhB,WAAW,CAACiB,MAAM,CAAC;IACrC1B,SAAS;IACTC,IAAI;IACJC,UAAU,EAAEA,UAAU,IAAI,CAAC;EAC7B,CAAC,CAAC;EACF,MAAMyB,SAAS,GAAGxB,KAAK,CAACe,GAAG,CACxBC,OAAO,CAACJ,IAAI,CAAC,CACbJ,KAAK,CAAC,CAAC,CACPiB,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,CAACC,IAAI,KAAK,SAAS,CAAC;EAE3C,MAAMC,KAAK,GAAG,CAAC7B,KAAK,CAACO,MAAM,CAACT,IAAI,CAACA,IAAI,EAAEwB,WAAW,CAACQ,QAAQ,CAACN,SAAS,CAAC,CAAC,CAAC;EACxE,IAAI,CAACN,aAAa,EAAE;IAClBW,KAAK,CAACE,IAAI,CAAC/B,KAAK,CAACO,MAAM,CAACT,IAAI,CAAC,GAAG,EAAE0B,SAAS,CAAC,CAAC;EAC/C;EACA,MAAMQ,QAAQ,GAAGzC,QAAQ,CAAC0C,SAAS,CAACJ,KAAK,CAAC;EAE1CjC,MAAM,CACHsC,KAAK,CAAC,CAAC,CACPC,KAAK,CAAC,CAAC,CACPC,OAAO,CAAC,CAAC;IAAEC;EAAG,CAAC,KAAK;IACnBA,EAAE,CAACC,WAAW,CAAC1B,IAAI,EAAEC,EAAE,EAAEmB,QAAQ,CAAC;IAElC,MAAMO,SAAS,GAAG3B,IAAI,GAAGoB,QAAQ,CAACQ,IAAI,IAAItB,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;IAChEmB,EAAE,CAACI,YAAY,CAACjD,aAAa,CAAC+B,MAAM,CAACc,EAAE,CAACtB,GAAG,EAAEwB,SAAS,CAAC,CAAC;IAExD,OAAO,IAAI;EACb,CAAC,CAAC,CACDG,GAAG,CAAC,CAAC;AACV","ignoreList":[]}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+
3
+ import { getMarkRange } from '@tiptap/core';
4
+ import { mentionPluginKey } from "./mentionPluginKey.js";
5
+ import { useEffect } from 'react';
6
+ export function useMentionEvents(editor, getCallbacks) {
7
+ useEffect(() => {
8
+ let prevTriggerState = {
9
+ active: false
10
+ };
11
+ let prevMentionKey = null;
12
+ let wasInMention = false;
13
+ const handleUpdate = () => {
14
+ const cb = getCallbacks();
15
+ const curr = mentionPluginKey.getState(editor.state);
16
+ if (!curr) return;
17
+ if (!prevTriggerState.active && curr.active) {
18
+ cb.onStartMention?.(curr.indicator);
19
+ if (curr.query !== '') cb.onChangeMention?.({
20
+ indicator: curr.indicator,
21
+ text: curr.query
22
+ });
23
+ } else if (prevTriggerState.active && curr.active && prevTriggerState.indicator !== curr.indicator) {
24
+ cb.onEndMention?.(prevTriggerState.indicator);
25
+ cb.onStartMention?.(curr.indicator);
26
+ if (curr.query !== '') cb.onChangeMention?.({
27
+ indicator: curr.indicator,
28
+ text: curr.query
29
+ });
30
+ } else if (prevTriggerState.active && curr.active && curr.query !== prevTriggerState.query) {
31
+ cb.onChangeMention?.({
32
+ indicator: curr.indicator,
33
+ text: curr.query
34
+ });
35
+ } else if (prevTriggerState.active && !curr.active) {
36
+ cb.onEndMention?.(prevTriggerState.indicator);
37
+ }
38
+ prevTriggerState = curr;
39
+ if (!cb.onMentionDetected) return;
40
+ const mention = getMentionInCurrentSelection(editor.state);
41
+ if (!mention) {
42
+ if (wasInMention) {
43
+ cb.onMentionDetected({
44
+ text: '',
45
+ indicator: '',
46
+ attributes: {}
47
+ });
48
+ wasInMention = false;
49
+ prevMentionKey = null;
50
+ }
51
+ } else {
52
+ wasInMention = true;
53
+ if (mention.key === prevMentionKey) return;
54
+ prevMentionKey = mention.key;
55
+ cb.onMentionDetected({
56
+ text: mention.text,
57
+ indicator: mention.indicator,
58
+ attributes: mention.attributes
59
+ });
60
+ }
61
+ };
62
+ const handleBlur = () => {
63
+ const cb = getCallbacks();
64
+ if (prevTriggerState.active) {
65
+ cb.onEndMention?.(prevTriggerState.indicator);
66
+ prevTriggerState = {
67
+ active: false
68
+ };
69
+ }
70
+ prevMentionKey = null;
71
+ };
72
+ editor.on('transaction', handleUpdate);
73
+ editor.on('blur', handleBlur);
74
+ return () => {
75
+ editor.off('transaction', handleUpdate);
76
+ editor.off('blur', handleBlur);
77
+ };
78
+ }, [editor, getCallbacks]);
79
+ }
80
+ function getMentionInCurrentSelection(state) {
81
+ const mentionType = state.schema.marks.mention;
82
+ if (!mentionType) return null;
83
+ const {
84
+ from: selFrom,
85
+ to: selTo
86
+ } = state.selection;
87
+ const $from = state.doc.resolve(selFrom);
88
+ const mark = mentionType.isInSet($from.marks());
89
+ if (!mark) return null;
90
+ const range = getMarkRange($from, mentionType);
91
+ if (!range) return null;
92
+ if (selFrom < range.from || selTo > range.to) return null;
93
+ const {
94
+ text,
95
+ indicator,
96
+ attributes
97
+ } = mark.attrs;
98
+ return {
99
+ key: `${range.from}:${range.to}:${text}:${indicator}`,
100
+ text: text,
101
+ indicator: indicator,
102
+ attributes: attributes ?? {}
103
+ };
104
+ }
105
+ //# sourceMappingURL=useMentionEvents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["getMarkRange","mentionPluginKey","useEffect","useMentionEvents","editor","getCallbacks","prevTriggerState","active","prevMentionKey","wasInMention","handleUpdate","cb","curr","getState","state","onStartMention","indicator","query","onChangeMention","text","onEndMention","onMentionDetected","mention","getMentionInCurrentSelection","attributes","key","handleBlur","on","off","mentionType","schema","marks","from","selFrom","to","selTo","selection","$from","doc","resolve","mark","isInSet","range","attrs"],"sourceRoot":"../../../../../src","sources":["web/pmPlugins/MentionPlugin/useMentionEvents.ts"],"mappings":"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","ignoreList":[]}
@@ -27,6 +27,17 @@ export const ShortcutPlugin = Extension.create({
27
27
  return run(editor);
28
28
  };
29
29
  return {
30
+ 'Mod-a': ({
31
+ editor
32
+ }) => {
33
+ const {
34
+ doc
35
+ } = editor.state;
36
+ return editor.commands.setTextSelection({
37
+ from: 0,
38
+ to: doc.content.size
39
+ });
40
+ },
30
41
  'Mod-Shift-v': ({
31
42
  editor
32
43
  }) => {
@@ -1 +1 @@
1
- {"version":3,"names":["Extension","isFormatBlocked","insertPlainTextFromClipboard","editor","navigator","clipboard","readText","then","text","isDestroyed","chain","focus","deleteSelection","insertContent","run","ShortcutPlugin","create","name","addOptions","getHtmlStyle","Error","addKeyboardShortcuts","htmlStyle","options","mark","isEditable","Mod-Shift-v","catch","Mod-Alt-Shift-c","commands","toggleCodeBlock","toggleCode","toggleStrike","toggleBold","toggleItalic","toggleUnderline","Mod-Shift-7","toggleOrderedList","Mod-Shift-8","toggleUnorderedList","Mod-Shift-9","toggleCheckboxList","Mod-Alt-0","setParagraph","Mod-Alt-1","toggleHeading","level","Mod-Alt-2","Mod-Alt-3","Mod-Alt-4","Mod-Alt-5","Mod-Alt-6"],"sourceRoot":"../../../../src","sources":["web/pmPlugins/ShortcutPlugin.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Extension","isFormatBlocked","insertPlainTextFromClipboard","editor","navigator","clipboard","readText","then","text","isDestroyed","chain","focus","deleteSelection","insertContent","run","ShortcutPlugin","create","name","addOptions","getHtmlStyle","Error","addKeyboardShortcuts","htmlStyle","options","mark","isEditable","Mod-a","doc","state","commands","setTextSelection","from","to","content","size","Mod-Shift-v","catch","Mod-Alt-Shift-c","toggleCodeBlock","toggleCode","toggleStrike","toggleBold","toggleItalic","toggleUnderline","Mod-Shift-7","toggleOrderedList","Mod-Shift-8","toggleUnorderedList","Mod-Shift-9","toggleCheckboxList","Mod-Alt-0","setParagraph","Mod-Alt-1","toggleHeading","level","Mod-Alt-2","Mod-Alt-3","Mod-Alt-4","Mod-Alt-5","Mod-Alt-6"],"sourceRoot":"../../../../src","sources":["web/pmPlugins/ShortcutPlugin.ts"],"mappings":"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","ignoreList":[]}
@@ -81,6 +81,8 @@ export const StrictMarksPlugin = Extension.create({
81
81
  } = newState;
82
82
  if (!selection.empty) return null;
83
83
  const docChanged = !oldState.doc.eq(newState.doc);
84
+ const selChanged = !oldState.selection.eq(newState.selection);
85
+ if (!docChanged && !selChanged) return null;
84
86
  const isExplicitToggle = !docChanged && transactions.some(tr => tr.storedMarks !== null);
85
87
  if (isExplicitToggle) return null;
86
88
  const {
@@ -1 +1 @@
1
- {"version":3,"names":["Extension","Mark","Plugin","PluginKey","NONINCLUSIVE_MARKS","stripNonInclusiveMarksFromSet","schema","marks","out","slice","name","markType","isInSet","filter","m","type","stripNonInclusiveMarksIfAfterIsOut","$from","nodeBefore","afterHasMark","nodeAfter","resolveStrictMarks","oldState","newState","docChanged","textLengthChanged","doc","textContent","length","storedMarks","old$","selection","oldBefore","oldAfter","sameSet","prevEndPos","before","resolve","StrictMarksPlugin","create","addProseMirrorPlugins","key","appendTransaction","transactions","empty","eq","isExplicitToggle","some","tr","strictMarks","activeMarks","setStoredMarks"],"sourceRoot":"../../../../src","sources":["web/pmPlugins/StrictMarksPlugin.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,cAAc;AACxC,SAASC,IAAI,QAAuC,kBAAkB;AACtE,SAASC,MAAM,EAAEC,SAAS,QAA0B,kBAAkB;AAEtE,MAAMC,kBAAkB,GAAG,CAAC,MAAM,EAAE,SAAS,CAAU;AAEvD,SAASC,6BAA6BA,CACpCC,MAAc,EACdC,KAAsB,EACL;EACjB,IAAIC,GAAG,GAAGD,KAAK,CAACE,KAAK,CAAC,CAAC;EACvB,KAAK,MAAMC,IAAI,IAAIN,kBAAkB,EAAE;IACrC,MAAMO,QAAQ,GAAGL,MAAM,CAACC,KAAK,CAACG,IAAI,CAAC;IACnC,IAAI,CAACC,QAAQ,EAAEC,OAAO,CAACJ,GAAG,CAAC,EAAE;IAC7BA,GAAG,GAAGA,GAAG,CAACK,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,KAAKJ,QAAQ,CAAC;EAC9C;EACA,OAAOH,GAAG;AACZ;AAEA,SAASQ,kCAAkCA,CACzCV,MAAc,EACdW,KAAkB,EACD;EACjB,MAAMC,UAAU,GAAGD,KAAK,CAACC,UAAU;EACnC,IAAI,CAACA,UAAU,EAAE;IACf,OAAO,EAAE;EACX;EACA,IAAIV,GAAG,GAAGU,UAAU,CAACX,KAAK;EAC1B,KAAK,MAAMG,IAAI,IAAIN,kBAAkB,EAAE;IACrC,MAAMO,QAAQ,GAAGL,MAAM,CAACC,KAAK,CAACG,IAAI,CAAC;IACnC,IAAI,CAACC,QAAQ,EAAEC,OAAO,CAACJ,GAAG,CAAC,EAAE;IAC7B,MAAMW,YAAY,GAChBF,KAAK,CAACG,SAAS,IAAI,IAAI,IAAIT,QAAQ,CAACC,OAAO,CAACK,KAAK,CAACG,SAAS,CAACb,KAAK,CAAC;IACpE,IAAI,CAACY,YAAY,EAAE;MACjBX,GAAG,GAAGA,GAAG,CAACK,MAAM,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,KAAKJ,QAAQ,CAAC;IAC9C;EACF;EACA,OAAOH,GAAG;AACZ;AAEA,SAASa,kBAAkBA,CACzBJ,KAAkB,EAClBK,QAAqB,EACrBC,QAAqB,EACrBC,UAAmB,EACnBC,iBAA0B,EACT;EACjB;EACA,IAAIF,QAAQ,CAACG,GAAG,CAACC,WAAW,CAACC,MAAM,KAAK,CAAC,EAAE;IACzC,OAAOH,iBAAiB,GACpB,EAAE,GACDH,QAAQ,CAACO,WAAW,IAAIN,QAAQ,CAACM,WAAW,IAAI,EAAG;EAC1D;;EAEA;EACA,IAAIZ,KAAK,CAACC,UAAU,EAAE;IACpB;IACA;IACA,OAAOF,kCAAkC,CAACO,QAAQ,CAACjB,MAAM,EAAEW,KAAK,CAAC;EACnE;;EAEA;EACA,IAAIA,KAAK,CAACG,SAAS,EAAE;IACnB,IAAI,CAACI,UAAU,EAAE;MACf,OAAO,EAAE,CAAC,CAAC;IACb;IACA,MAAMM,IAAI,GAAGR,QAAQ,CAACS,SAAS,CAACd,KAAK;IACrC,MAAM;MAAEC,UAAU,EAAEc,SAAS;MAAEZ,SAAS,EAAEa;IAAS,CAAC,GAAGH,IAAI;IAC3D;IACA;IACA,IACEE,SAAS,IACTC,QAAQ,IACR,CAAChC,IAAI,CAACiC,OAAO,CAACF,SAAS,CAACzB,KAAK,EAAE0B,QAAQ,CAAC1B,KAAK,CAAC,EAC9C;MACA,OAAOF,6BAA6B,CAACkB,QAAQ,CAACjB,MAAM,EAAE0B,SAAS,CAACzB,KAAK,CAAC;IACxE;IACA,OAAOF,6BAA6B,CAClCkB,QAAQ,CAACjB,MAAM,EACfW,KAAK,CAACG,SAAS,CAACb,KAClB,CAAC;EACH;;EAEA;EACA,IAAIkB,iBAAiB,EAAE;IACrB,MAAMU,UAAU,GAAGlB,KAAK,CAACmB,MAAM,CAAC,CAAC,GAAG,CAAC;IACrC,OAAOD,UAAU,GAAG,CAAC,GAAGZ,QAAQ,CAACG,GAAG,CAACW,OAAO,CAACF,UAAU,CAAC,CAAC5B,KAAK,CAAC,CAAC,GAAG,EAAE;EACvE;EACA,IAAIe,QAAQ,CAACO,WAAW,EAAE;IACxB,OAAOP,QAAQ,CAACO,WAAW,CAAC,CAAC;EAC/B;EACA,OAAON,QAAQ,CAACM,WAAW,IAAIZ,KAAK,CAACV,KAAK,CAAC,CAAC;AAC9C;AAEA,OAAO,MAAM+B,iBAAiB,GAAGtC,SAAS,CAACuC,MAAM,CAAC;EAChD7B,IAAI,EAAE,mBAAmB;EACzB8B,qBAAqBA,CAAA,EAAG;IACtB,OAAO,CACL,IAAItC,MAAM,CAAC;MACTuC,GAAG,EAAE,IAAItC,SAAS,CAAC,aAAa,CAAC;MACjCuC,iBAAiBA,CAACC,YAAY,EAAErB,QAAQ,EAAEC,QAAQ,EAAE;QAClD,MAAM;UAAEQ;QAAU,CAAC,GAAGR,QAAQ;QAE9B,IAAI,CAACQ,SAAS,CAACa,KAAK,EAAE,OAAO,IAAI;QAEjC,MAAMpB,UAAU,GAAG,CAACF,QAAQ,CAACI,GAAG,CAACmB,EAAE,CAACtB,QAAQ,CAACG,GAAG,CAAC;QACjD,MAAMoB,gBAAgB,GACpB,CAACtB,UAAU,IAAImB,YAAY,CAACI,IAAI,CAAEC,EAAE,IAAKA,EAAE,CAACnB,WAAW,KAAK,IAAI,CAAC;QACnE,IAAIiB,gBAAgB,EAAE,OAAO,IAAI;QAEjC,MAAM;UAAE7B;QAAM,CAAC,GAAGc,SAAS;QAC3B,MAAMN,iBAAiB,GACrBH,QAAQ,CAACI,GAAG,CAACC,WAAW,CAACC,MAAM,KAAKL,QAAQ,CAACG,GAAG,CAACC,WAAW,CAACC,MAAM;QAErE,MAAMqB,WAAW,GAAG5B,kBAAkB,CACpCJ,KAAK,EACLK,QAAQ,EACRC,QAAQ,EACRC,UAAU,EACVC,iBACF,CAAC;QAED,MAAMyB,WAAW,GAAG3B,QAAQ,CAACM,WAAW,IAAIZ,KAAK,CAACV,KAAK,CAAC,CAAC;QACzD,IAAIN,IAAI,CAACiC,OAAO,CAACe,WAAW,EAAEC,WAAW,CAAC,EAAE,OAAO,IAAI;QAEvD,OAAO3B,QAAQ,CAACyB,EAAE,CAACG,cAAc,CAACF,WAAW,CAAC;MAChD;IACF,CAAC,CAAC,CACH;EACH;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Extension","Mark","Plugin","PluginKey","NONINCLUSIVE_MARKS","stripNonInclusiveMarksFromSet","schema","marks","out","slice","name","markType","isInSet","filter","m","type","stripNonInclusiveMarksIfAfterIsOut","$from","nodeBefore","afterHasMark","nodeAfter","resolveStrictMarks","oldState","newState","docChanged","textLengthChanged","doc","textContent","length","storedMarks","old$","selection","oldBefore","oldAfter","sameSet","prevEndPos","before","resolve","StrictMarksPlugin","create","addProseMirrorPlugins","key","appendTransaction","transactions","empty","eq","selChanged","isExplicitToggle","some","tr","strictMarks","activeMarks","setStoredMarks"],"sourceRoot":"../../../../src","sources":["web/pmPlugins/StrictMarksPlugin.ts"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["Extension","Plugin","PluginKey","HEADING_TAGS","transactionStripBoldInCssBoldHeadings","state","htmlStyle","boldType","schema","marks","bold","tr","doc","descendants","node","pos","type","name","level","attrs","length","key","removeMark","nodeSize","steps","StripBoldInStyledHeadingsPlugin","create","addOptions","getHtmlStyle","Error","addCommands","normalizeBoldInStyledHeadings","dispatch","options","addProseMirrorPlugins","appendTransaction","transactions","_oldState","newState","some","docChanged"],"sourceRoot":"../../../../src","sources":["web/pmPlugins/StripBoldInStyledHeadingsPlugin.ts"],"mappings":";;AAAA,SAASA,SAAS,QAA2B,cAAc;AAC3D,SACEC,MAAM,EACNC,SAAS,QAGJ,kBAAkB;AAEzB,SAASC,YAAY,QAAQ,+BAA4B;AAWzD,SAASC,qCAAqCA,CAC5CC,KAAkB,EAClBC,SAA8B,EACV;EACpB,MAAMC,QAAQ,GAAGF,KAAK,CAACG,MAAM,CAACC,KAAK,CAACC,IAAI;EACxC,IAAI,CAACH,QAAQ,EAAE,OAAO,IAAI;EAE1B,MAAMI,EAAE,GAAGN,KAAK,CAACM,EAAE;EACnBN,KAAK,CAACO,GAAG,CAACC,WAAW,CAAC,CAACC,IAAI,EAAEC,GAAG,KAAK;IACnC,IAAID,IAAI,CAACE,IAAI,CAACC,IAAI,KAAK,SAAS,EAAE,OAAO,IAAI;IAC7C,MAAMC,KAAK,GAAGJ,IAAI,CAACK,KAAK,CAACD,KAAe;IACxC,IAAIA,KAAK,GAAG,CAAC,IAAIA,KAAK,GAAGf,YAAY,CAACiB,MAAM,EAAE,OAAO,KAAK;IAC1D,MAAMC,GAAG,GAAGlB,YAAY,CAACe,KAAK,GAAG,CAAC,CAAE;IACpC,IAAIZ,SAAS,CAACe,GAAG,CAAC,CAACX,IAAI,EAAE;MACvBC,EAAE,CAACW,UAAU,CAACP,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGD,IAAI,CAACS,QAAQ,GAAG,CAAC,EAAEhB,QAAQ,CAAC;IAC3D;IACA,OAAO,KAAK;EACd,CAAC,CAAC;EAEF,OAAOI,EAAE,CAACa,KAAK,CAACJ,MAAM,GAAG,CAAC,GAAGT,EAAE,GAAG,IAAI;AACxC;AAEA,OAAO,MAAMc,+BAA+B,GAAGzB,SAAS,CAAC0B,MAAM,CAAC;EAC9DT,IAAI,EAAE,2BAA2B;EACjCU,UAAUA,CAAA,EAAG;IACX,OAAO;MACLC,YAAY,EAAEA,CAAA,KAAM;QAClB,MAAM,IAAIC,KAAK,CACb,yEACF,CAAC;MACH;IACF,CAAC;EACH,CAAC;EACDC,WAAWA,CAAA,EAAG;IACZ,OAAO;MACLC,6BAA6B,EAC3BA,CAAA,KACA,CAAC;QAAE1B,KAAK;QAAE2B;MAAuB,CAAC,KAAK;QACrC,MAAM1B,SAAS,GAAG,IAAI,CAAC2B,OAAO,CAACL,YAAY,CAAC,CAAC;QAC7C,MAAMjB,EAAE,GAAGP,qCAAqC,CAACC,KAAK,EAAEC,SAAS,CAAC;QAClE,IAAI,CAACK,EAAE,EAAE,OAAO,KAAK;QACrB,IAAIqB,QAAQ,EAAEA,QAAQ,CAACrB,EAAE,CAAC;QAC1B,OAAO,IAAI;MACb;IACJ,CAAC;EACH,CAAC;EACDuB,qBAAqBA,CAAA,EAAG;IACtB,OAAO,CACL,IAAIjC,MAAM,CAAC;MACToB,GAAG,EAAE,IAAInB,SAAS,CAAC,2BAA2B,CAAC;MAC/CiC,iBAAiB,EAAEA,CAACC,YAAY,EAAEC,SAAS,EAAEC,QAAQ,KAAK;QACxD,IAAI,CAACF,YAAY,CAACG,IAAI,CAAE5B,EAAE,IAAKA,EAAE,CAAC6B,UAAU,CAAC,EAAE;QAC/C,MAAMlC,SAAS,GAAG,IAAI,CAAC2B,OAAO,CAACL,YAAY,CAAC,CAAC;QAE7C,OAAOxB,qCAAqC,CAACkC,QAAQ,EAAEhC,SAAS,CAAC;MACnE;IACF,CAAC,CAAC,CACH;EACH;AACF,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["Extension","Plugin","PluginKey","HEADING_TAGS","transactionStripBoldInCssBoldHeadings","state","htmlStyle","boldType","schema","marks","bold","tr","doc","descendants","node","pos","type","name","level","attrs","length","key","removeMark","nodeSize","steps","StripBoldInStyledHeadingsPlugin","create","addOptions","getHtmlStyle","Error","addCommands","normalizeBoldInStyledHeadings","dispatch","options","addProseMirrorPlugins","appendTransaction","transactions","_oldState","newState","some","docChanged"],"sourceRoot":"../../../../src","sources":["web/pmPlugins/StripBoldInStyledHeadingsPlugin.ts"],"mappings":";;AAAA,SAASA,SAAS,QAA2B,cAAc;AAC3D,SACEC,MAAM,EACNC,SAAS,QAGJ,kBAAkB;AAEzB,SAASC,YAAY,QAAQ,+BAA4B;AAezD,SAASC,qCAAqCA,CAC5CC,KAAkB,EAClBC,SAA8B,EACV;EACpB,MAAMC,QAAQ,GAAGF,KAAK,CAACG,MAAM,CAACC,KAAK,CAACC,IAAI;EACxC,IAAI,CAACH,QAAQ,EAAE,OAAO,IAAI;EAE1B,MAAMI,EAAE,GAAGN,KAAK,CAACM,EAAE;EACnBN,KAAK,CAACO,GAAG,CAACC,WAAW,CAAC,CAACC,IAAI,EAAEC,GAAG,KAAK;IACnC,IAAID,IAAI,CAACE,IAAI,CAACC,IAAI,KAAK,SAAS,EAAE,OAAO,IAAI;IAC7C,MAAMC,KAAK,GAAGJ,IAAI,CAACK,KAAK,CAACD,KAAe;IACxC,IAAIA,KAAK,GAAG,CAAC,IAAIA,KAAK,GAAGf,YAAY,CAACiB,MAAM,EAAE,OAAO,KAAK;IAC1D,MAAMC,GAAG,GAAGlB,YAAY,CAACe,KAAK,GAAG,CAAC,CAAE;IACpC,IAAIZ,SAAS,CAACe,GAAG,CAAC,CAACX,IAAI,EAAE;MACvBC,EAAE,CAACW,UAAU,CAACP,GAAG,GAAG,CAAC,EAAEA,GAAG,GAAGD,IAAI,CAACS,QAAQ,GAAG,CAAC,EAAEhB,QAAQ,CAAC;IAC3D;IACA,OAAO,KAAK;EACd,CAAC,CAAC;EAEF,OAAOI,EAAE,CAACa,KAAK,CAACJ,MAAM,GAAG,CAAC,GAAGT,EAAE,GAAG,IAAI;AACxC;AAEA,OAAO,MAAMc,+BAA+B,GAC1CzB,SAAS,CAAC0B,MAAM,CAAyC;EACvDT,IAAI,EAAE,2BAA2B;EACjCU,UAAUA,CAAA,EAAG;IACX,OAAO;MACLC,YAAY,EAAEA,CAAA,KAAM;QAClB,MAAM,IAAIC,KAAK,CACb,yEACF,CAAC;MACH;IACF,CAAC;EACH,CAAC;EACDC,WAAWA,CAAA,EAAG;IACZ,OAAO;MACLC,6BAA6B,EAC3BA,CAAA,KACA,CAAC;QAAE1B,KAAK;QAAE2B;MAAuB,CAAC,KAAK;QACrC,MAAM1B,SAAS,GAAG,IAAI,CAAC2B,OAAO,CAACL,YAAY,CAAC,CAAC;QAC7C,MAAMjB,EAAE,GAAGP,qCAAqC,CAACC,KAAK,EAAEC,SAAS,CAAC;QAClE,IAAI,CAACK,EAAE,EAAE,OAAO,KAAK;QACrB,IAAIqB,QAAQ,EAAEA,QAAQ,CAACrB,EAAE,CAAC;QAC1B,OAAO,IAAI;MACb;IACJ,CAAC;EACH,CAAC;EACDuB,qBAAqBA,CAAA,EAAG;IACtB,OAAO,CACL,IAAIjC,MAAM,CAAC;MACToB,GAAG,EAAE,IAAInB,SAAS,CAAC,2BAA2B,CAAC;MAC/CiC,iBAAiB,EAAEA,CAACC,YAAY,EAAEC,SAAS,EAAEC,QAAQ,KAAK;QACxD,IAAI,CAACF,YAAY,CAACG,IAAI,CAAE5B,EAAE,IAAKA,EAAE,CAAC6B,UAAU,CAAC,EAAE;QAC/C,MAAMlC,SAAS,GAAG,IAAI,CAAC2B,OAAO,CAACL,YAAY,CAAC,CAAC;QAE7C,OAAOxB,qCAAqC,CAACkC,QAAQ,EAAEhC,SAAS,CAAC;MACnE;IACF,CAAC,CAAC,CACH;EACH;AACF,CAAC,CAAC","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+
3
+ import DOMPurify from 'dompurify';
4
+ export function sanitizeHtml(html) {
5
+ return DOMPurify.sanitize(html, {
6
+ ADD_TAGS: ['mention', 'codeblock'],
7
+ ADD_ATTR: ['text', 'indicator']
8
+ });
9
+ }
10
+ //# sourceMappingURL=htmlSanitizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["DOMPurify","sanitizeHtml","html","sanitize","ADD_TAGS","ADD_ATTR"],"sourceRoot":"../../../../src","sources":["web/sanitization/htmlSanitizer.ts"],"mappings":";;AAAA,OAAOA,SAAS,MAAM,WAAW;AAEjC,OAAO,SAASC,YAAYA,CAACC,IAAY,EAAE;EACzC,OAAOF,SAAS,CAACG,QAAQ,CAACD,IAAI,EAAE;IAC9BE,QAAQ,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;IAClCC,QAAQ,EAAE,CAAC,MAAM,EAAE,WAAW;EAChC,CAAC,CAAC;AACJ","ignoreList":[]}