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.
- package/android/src/main/java/com/swmansion/enriched/common/EnrichedSpanFlags.kt +39 -0
- package/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedParser.java +43 -20
- package/android/src/main/java/com/swmansion/enriched/common/parser/EnrichedSpanFactory.kt +1 -0
- package/android/src/main/java/com/swmansion/enriched/text/EnrichedTextSpanFactory.kt +1 -0
- package/android/src/main/java/com/swmansion/enriched/text/EnrichedTextView.kt +2 -1
- package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputSpannableFactory.kt +2 -1
- package/android/src/main/java/com/swmansion/enriched/textinput/EnrichedTextInputView.kt +8 -5
- package/android/src/main/java/com/swmansion/enriched/textinput/events/MentionHandler.kt +12 -2
- package/android/src/main/java/com/swmansion/enriched/textinput/events/OnMentionEvent.kt +6 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/AlignmentStyles.kt +6 -7
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/InlineStyles.kt +13 -1
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/ListStyles.kt +4 -3
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/ParagraphStyles.kt +4 -3
- package/android/src/main/java/com/swmansion/enriched/textinput/styles/ParametrizedStyles.kt +38 -11
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSelection.kt +2 -0
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/EnrichedSpannable.kt +2 -1
- package/android/src/main/java/com/swmansion/enriched/textinput/utils/Utils.kt +2 -1
- package/cpp/parser/GumboNormalizer.c +61 -3
- package/cpp/tests/GumboParserTest.cpp +54 -0
- package/ios/EnrichedTextInputView.mm +37 -25
- package/ios/extensions/LayoutManagerExtension.mm +73 -62
- package/ios/extensions/StringExtension.mm +75 -0
- package/ios/htmlParser/HtmlParser.h +4 -1
- package/ios/htmlParser/HtmlParser.mm +23 -5
- package/ios/inputHtmlParser/InputHtmlParser.mm +6 -3
- package/ios/interfaces/StyleHeaders.h +4 -0
- package/ios/styles/LinkStyle.mm +20 -34
- package/ios/styles/MentionStyle.mm +55 -4
- package/ios/textHtmlParser/TextHtmlParser.mm +2 -1
- package/ios/utils/ParagraphAttributesUtils.mm +7 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/utils/expandMentionStylesForIndicators.js +2 -3
- package/lib/module/utils/expandMentionStylesForIndicators.js.map +1 -1
- package/lib/module/utils/normalizeHtmlStyle.js +1 -1
- package/lib/module/utils/normalizeHtmlStyle.js.map +1 -1
- package/lib/module/web/EnrichedText.css +343 -0
- package/lib/module/web/EnrichedText.js +55 -0
- package/lib/module/web/EnrichedText.js.map +1 -0
- package/lib/module/web/EnrichedTextInput.js +54 -52
- package/lib/module/web/EnrichedTextInput.js.map +1 -1
- package/lib/module/web/constants/brokenImageGlyph.js +9 -0
- package/lib/module/web/constants/brokenImageGlyph.js.map +1 -0
- package/lib/module/web/constants/classNames.js +5 -0
- package/lib/module/web/constants/classNames.js.map +1 -0
- package/lib/module/web/emitLinkDetected.js +12 -0
- package/lib/module/web/emitLinkDetected.js.map +1 -0
- package/lib/module/web/formats/EnrichedBlockquote.js +1 -1
- package/lib/module/web/formats/EnrichedBlockquote.js.map +1 -1
- package/lib/module/web/formats/EnrichedCheckboxList.js +2 -2
- package/lib/module/web/formats/EnrichedCheckboxList.js.map +1 -1
- package/lib/module/web/formats/EnrichedCodeBlock.js +1 -1
- package/lib/module/web/formats/EnrichedCodeBlock.js.map +1 -1
- package/lib/module/web/formats/EnrichedHeading.js +1 -1
- package/lib/module/web/formats/EnrichedHeading.js.map +1 -1
- package/lib/module/web/formats/EnrichedImageNodeView.js +1 -1
- package/lib/module/web/formats/EnrichedImageNodeView.js.map +1 -1
- package/lib/module/web/formats/EnrichedLink.js +43 -3
- package/lib/module/web/formats/EnrichedLink.js.map +1 -1
- package/lib/module/web/formats/EnrichedOrderedList.js +2 -2
- package/lib/module/web/formats/EnrichedOrderedList.js.map +1 -1
- package/lib/module/web/formats/EnrichedTextAlign.js +82 -0
- package/lib/module/web/formats/EnrichedTextAlign.js.map +1 -0
- package/lib/module/web/formats/EnrichedUnorderedList.js +2 -2
- package/lib/module/web/formats/EnrichedUnorderedList.js.map +1 -1
- package/lib/module/web/formats/applyWrappingListToSelection.js +3 -2
- package/lib/module/web/formats/applyWrappingListToSelection.js.map +1 -1
- package/lib/module/web/formats/formatRules.js +39 -3
- package/lib/module/web/formats/formatRules.js.map +1 -1
- package/lib/module/web/formats/listKeyboard.js +4 -1
- package/lib/module/web/formats/listKeyboard.js.map +1 -1
- package/lib/module/web/normalization/checkboxHtmlNormalizer.js.map +1 -0
- package/lib/module/web/normalization/htmlNormalizer.js +514 -0
- package/lib/module/web/normalization/htmlNormalizer.js.map +1 -0
- package/lib/module/web/normalization/prepareHtmlForWeb.js +78 -0
- package/lib/module/web/normalization/prepareHtmlForWeb.js.map +1 -0
- package/lib/module/web/{tiptapHtmlNormalizer.js → normalization/tiptapHtmlNormalizer.js} +6 -2
- package/lib/module/web/normalization/tiptapHtmlNormalizer.js.map +1 -0
- package/lib/module/web/pmPlugins/AutolinkPlugin/autolinkRegex.js +27 -0
- package/lib/module/web/pmPlugins/AutolinkPlugin/autolinkRegex.js.map +1 -0
- package/lib/module/web/pmPlugins/AutolinkPlugin/index.js +178 -0
- package/lib/module/web/pmPlugins/AutolinkPlugin/index.js.map +1 -0
- package/lib/module/web/pmPlugins/MentionPlugin/index.js +1 -1
- package/lib/module/web/pmPlugins/MentionPlugin/index.js.map +1 -1
- package/lib/module/web/pmPlugins/MentionPlugin/makeMentionPluginState.js +23 -4
- package/lib/module/web/pmPlugins/MentionPlugin/makeMentionPluginState.js.map +1 -1
- package/lib/module/web/pmPlugins/MentionPlugin/setMention.js +17 -18
- package/lib/module/web/pmPlugins/MentionPlugin/setMention.js.map +1 -1
- package/lib/module/web/pmPlugins/MentionPlugin/useMentionEvents.js +105 -0
- package/lib/module/web/pmPlugins/MentionPlugin/useMentionEvents.js.map +1 -0
- package/lib/module/web/pmPlugins/ShortcutPlugin.js +11 -0
- package/lib/module/web/pmPlugins/ShortcutPlugin.js.map +1 -1
- package/lib/module/web/pmPlugins/StrictMarksPlugin.js +2 -0
- package/lib/module/web/pmPlugins/StrictMarksPlugin.js.map +1 -1
- package/lib/module/web/pmPlugins/StripBoldInStyledHeadingsPlugin.js.map +1 -1
- package/lib/module/web/sanitization/htmlSanitizer.js +10 -0
- package/lib/module/web/sanitization/htmlSanitizer.js.map +1 -0
- package/lib/module/web/styleConversion/buildMentionRulesCSS.js +12 -6
- package/lib/module/web/styleConversion/buildMentionRulesCSS.js.map +1 -1
- package/lib/module/web/styleConversion/enrichedBaseStyleToCSSProperties.js +159 -0
- package/lib/module/web/styleConversion/enrichedBaseStyleToCSSProperties.js.map +1 -0
- package/lib/module/web/styleConversion/enrichedInputStyleToCSSProperties.js +3 -155
- package/lib/module/web/styleConversion/enrichedInputStyleToCSSProperties.js.map +1 -1
- package/lib/module/web/styleConversion/enrichedTextStyleToCSSProperties.js +44 -0
- package/lib/module/web/styleConversion/enrichedTextStyleToCSSProperties.js.map +1 -0
- package/lib/module/web/styleConversion/{enrichedInputThemingToCSSProperties.js → enrichedThemingToCSSProperties.js} +3 -3
- package/lib/module/web/styleConversion/enrichedThemingToCSSProperties.js.map +1 -0
- package/lib/module/web/styleConversion/htmlStyleToCSSVariables.js +87 -64
- package/lib/module/web/styleConversion/htmlStyleToCSSVariables.js.map +1 -1
- package/lib/module/web/styleConversion/inlineImageCSSVariables.js +7 -0
- package/lib/module/web/styleConversion/inlineImageCSSVariables.js.map +1 -0
- package/lib/module/web/useImageErrorFallback.js +33 -0
- package/lib/module/web/useImageErrorFallback.js.map +1 -0
- package/lib/module/web/useOnChangeHtml.js +1 -1
- package/lib/module/web/useOnChangeHtml.js.map +1 -1
- package/lib/module/web/useOnChangeState.js +6 -3
- package/lib/module/web/useOnChangeState.js.map +1 -1
- package/lib/module/web/useOnLinkDetected.js +32 -45
- package/lib/module/web/useOnLinkDetected.js.map +1 -1
- package/lib/module/web/usePressInteractions.js +19 -0
- package/lib/module/web/usePressInteractions.js.map +1 -0
- package/lib/module/web/useStableRef.js +13 -0
- package/lib/module/web/useStableRef.js.map +1 -0
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/native/EnrichedText.d.ts +1 -1
- package/lib/typescript/src/native/EnrichedText.d.ts.map +1 -1
- package/lib/typescript/src/native/EnrichedTextInput.d.ts +1 -1
- package/lib/typescript/src/native/EnrichedTextInput.d.ts.map +1 -1
- package/lib/typescript/src/types.d.ts +1 -1
- package/lib/typescript/src/types.d.ts.map +1 -1
- package/lib/typescript/src/utils/expandMentionStylesForIndicators.d.ts +1 -1
- package/lib/typescript/src/utils/expandMentionStylesForIndicators.d.ts.map +1 -1
- package/lib/typescript/src/utils/normalizeHtmlStyle.d.ts.map +1 -1
- package/lib/typescript/src/web/EnrichedText.d.ts +4 -0
- package/lib/typescript/src/web/EnrichedText.d.ts.map +1 -0
- package/lib/typescript/src/web/EnrichedTextInput.d.ts +2 -2
- package/lib/typescript/src/web/EnrichedTextInput.d.ts.map +1 -1
- package/lib/typescript/src/web/constants/brokenImageGlyph.d.ts +3 -0
- package/lib/typescript/src/web/constants/brokenImageGlyph.d.ts.map +1 -0
- package/lib/typescript/src/web/constants/classNames.d.ts +3 -0
- package/lib/typescript/src/web/constants/classNames.d.ts.map +1 -0
- package/lib/typescript/src/web/emitLinkDetected.d.ts +10 -0
- package/lib/typescript/src/web/emitLinkDetected.d.ts.map +1 -0
- package/lib/typescript/src/web/formats/EnrichedBlockquote.d.ts.map +1 -1
- package/lib/typescript/src/web/formats/EnrichedCheckboxList.d.ts.map +1 -1
- package/lib/typescript/src/web/formats/EnrichedCodeBlock.d.ts.map +1 -1
- package/lib/typescript/src/web/formats/EnrichedHeading.d.ts.map +1 -1
- package/lib/typescript/src/web/formats/EnrichedImageNodeView.d.ts +1 -1
- package/lib/typescript/src/web/formats/EnrichedImageNodeView.d.ts.map +1 -1
- package/lib/typescript/src/web/formats/EnrichedLink.d.ts +4 -1
- package/lib/typescript/src/web/formats/EnrichedLink.d.ts.map +1 -1
- package/lib/typescript/src/web/formats/EnrichedOrderedList.d.ts.map +1 -1
- package/lib/typescript/src/web/formats/EnrichedTextAlign.d.ts +2 -0
- package/lib/typescript/src/web/formats/EnrichedTextAlign.d.ts.map +1 -0
- package/lib/typescript/src/web/formats/EnrichedUnorderedList.d.ts.map +1 -1
- package/lib/typescript/src/web/formats/applyWrappingListToSelection.d.ts.map +1 -1
- package/lib/typescript/src/web/formats/formatRules.d.ts +3 -1
- package/lib/typescript/src/web/formats/formatRules.d.ts.map +1 -1
- package/lib/typescript/src/web/formats/listKeyboard.d.ts.map +1 -1
- package/lib/typescript/src/web/normalization/checkboxHtmlNormalizer.d.ts.map +1 -0
- package/lib/typescript/src/web/normalization/htmlNormalizer.d.ts +2 -0
- package/lib/typescript/src/web/normalization/htmlNormalizer.d.ts.map +1 -0
- package/lib/typescript/src/web/normalization/prepareHtmlForWeb.d.ts +2 -0
- package/lib/typescript/src/web/normalization/prepareHtmlForWeb.d.ts.map +1 -0
- package/lib/typescript/src/web/normalization/tiptapHtmlNormalizer.d.ts +3 -0
- package/lib/typescript/src/web/normalization/tiptapHtmlNormalizer.d.ts.map +1 -0
- package/lib/typescript/src/web/pmPlugins/AutolinkPlugin/autolinkRegex.d.ts +7 -0
- package/lib/typescript/src/web/pmPlugins/AutolinkPlugin/autolinkRegex.d.ts.map +1 -0
- package/lib/typescript/src/web/pmPlugins/AutolinkPlugin/index.d.ts +8 -0
- package/lib/typescript/src/web/pmPlugins/AutolinkPlugin/index.d.ts.map +1 -0
- package/lib/typescript/src/web/pmPlugins/MentionPlugin/index.d.ts +1 -1
- package/lib/typescript/src/web/pmPlugins/MentionPlugin/index.d.ts.map +1 -1
- package/lib/typescript/src/web/pmPlugins/MentionPlugin/makeMentionPluginState.d.ts.map +1 -1
- package/lib/typescript/src/web/pmPlugins/MentionPlugin/setMention.d.ts.map +1 -1
- package/lib/typescript/src/web/pmPlugins/MentionPlugin/useMentionEvents.d.ts +4 -0
- package/lib/typescript/src/web/pmPlugins/MentionPlugin/useMentionEvents.d.ts.map +1 -0
- package/lib/typescript/src/web/pmPlugins/ShortcutPlugin.d.ts.map +1 -1
- package/lib/typescript/src/web/pmPlugins/StrictMarksPlugin.d.ts.map +1 -1
- package/lib/typescript/src/web/pmPlugins/StripBoldInStyledHeadingsPlugin.d.ts +6 -1
- package/lib/typescript/src/web/pmPlugins/StripBoldInStyledHeadingsPlugin.d.ts.map +1 -1
- package/lib/typescript/src/web/sanitization/htmlSanitizer.d.ts +2 -0
- package/lib/typescript/src/web/sanitization/htmlSanitizer.d.ts.map +1 -0
- package/lib/typescript/src/web/styleConversion/buildMentionRulesCSS.d.ts +2 -2
- package/lib/typescript/src/web/styleConversion/buildMentionRulesCSS.d.ts.map +1 -1
- package/lib/typescript/src/web/styleConversion/enrichedBaseStyleToCSSProperties.d.ts +8 -0
- package/lib/typescript/src/web/styleConversion/enrichedBaseStyleToCSSProperties.d.ts.map +1 -0
- package/lib/typescript/src/web/styleConversion/enrichedInputStyleToCSSProperties.d.ts +2 -5
- package/lib/typescript/src/web/styleConversion/enrichedInputStyleToCSSProperties.d.ts.map +1 -1
- package/lib/typescript/src/web/styleConversion/enrichedTextStyleToCSSProperties.d.ts +4 -0
- package/lib/typescript/src/web/styleConversion/enrichedTextStyleToCSSProperties.d.ts.map +1 -0
- package/lib/typescript/src/web/styleConversion/{enrichedInputThemingToCSSProperties.d.ts → enrichedThemingToCSSProperties.d.ts} +1 -1
- package/lib/typescript/src/web/styleConversion/enrichedThemingToCSSProperties.d.ts.map +1 -0
- package/lib/typescript/src/web/styleConversion/htmlStyleToCSSVariables.d.ts +5 -4
- package/lib/typescript/src/web/styleConversion/htmlStyleToCSSVariables.d.ts.map +1 -1
- package/lib/typescript/src/web/styleConversion/inlineImageCSSVariables.d.ts +3 -0
- package/lib/typescript/src/web/styleConversion/inlineImageCSSVariables.d.ts.map +1 -0
- package/lib/typescript/src/web/useImageErrorFallback.d.ts +3 -0
- package/lib/typescript/src/web/useImageErrorFallback.d.ts.map +1 -0
- package/lib/typescript/src/web/useOnChangeState.d.ts.map +1 -1
- package/lib/typescript/src/web/useOnLinkDetected.d.ts +2 -2
- package/lib/typescript/src/web/useOnLinkDetected.d.ts.map +1 -1
- package/lib/typescript/src/web/usePressInteractions.d.ts +2 -0
- package/lib/typescript/src/web/usePressInteractions.d.ts.map +1 -0
- package/lib/typescript/src/web/useStableRef.d.ts +3 -0
- package/lib/typescript/src/web/useStableRef.d.ts.map +1 -0
- package/package.json +54 -28
- package/src/index.tsx +1 -0
- package/src/types.ts +5 -3
- package/src/utils/expandMentionStylesForIndicators.ts +3 -3
- package/src/utils/normalizeHtmlStyle.ts +2 -1
- package/src/web/EnrichedText.css +343 -0
- package/src/web/EnrichedText.tsx +82 -0
- package/src/web/EnrichedTextInput.tsx +69 -55
- package/src/web/constants/brokenImageGlyph.ts +7 -0
- package/src/web/constants/classNames.ts +2 -0
- package/src/web/emitLinkDetected.ts +29 -0
- package/src/web/formats/EnrichedBlockquote.ts +2 -1
- package/src/web/formats/EnrichedCheckboxList.ts +5 -2
- package/src/web/formats/EnrichedCodeBlock.ts +2 -1
- package/src/web/formats/EnrichedHeading.ts +2 -1
- package/src/web/formats/EnrichedImageNodeView.tsx +1 -3
- package/src/web/formats/EnrichedLink.ts +59 -4
- package/src/web/formats/EnrichedOrderedList.ts +5 -2
- package/src/web/formats/EnrichedTextAlign.ts +88 -0
- package/src/web/formats/EnrichedUnorderedList.ts +5 -2
- package/src/web/formats/applyWrappingListToSelection.ts +4 -4
- package/src/web/formats/formatRules.ts +48 -4
- package/src/web/formats/listKeyboard.ts +6 -1
- package/src/web/normalization/htmlNormalizer.ts +656 -0
- package/src/web/normalization/prepareHtmlForWeb.ts +93 -0
- package/src/web/{tiptapHtmlNormalizer.ts → normalization/tiptapHtmlNormalizer.ts} +12 -2
- package/src/web/pmPlugins/AutolinkPlugin/autolinkRegex.ts +43 -0
- package/src/web/pmPlugins/AutolinkPlugin/index.ts +274 -0
- package/src/web/pmPlugins/MentionPlugin/index.ts +1 -1
- package/src/web/pmPlugins/MentionPlugin/makeMentionPluginState.ts +32 -5
- package/src/web/pmPlugins/MentionPlugin/setMention.ts +19 -29
- package/src/web/pmPlugins/MentionPlugin/useMentionEvents.ts +114 -0
- package/src/web/pmPlugins/ShortcutPlugin.ts +7 -0
- package/src/web/pmPlugins/StrictMarksPlugin.ts +3 -0
- package/src/web/pmPlugins/StripBoldInStyledHeadingsPlugin.ts +41 -36
- package/src/web/sanitization/htmlSanitizer.ts +8 -0
- package/src/web/styleConversion/buildMentionRulesCSS.ts +30 -11
- package/src/web/styleConversion/enrichedBaseStyleToCSSProperties.ts +228 -0
- package/src/web/styleConversion/enrichedInputStyleToCSSProperties.ts +6 -217
- package/src/web/styleConversion/enrichedTextStyleToCSSProperties.ts +53 -0
- package/src/web/styleConversion/{enrichedInputThemingToCSSProperties.ts → enrichedThemingToCSSProperties.ts} +4 -4
- package/src/web/styleConversion/htmlStyleToCSSVariables.ts +121 -70
- package/src/web/styleConversion/inlineImageCSSVariables.ts +6 -0
- package/src/web/useImageErrorFallback.ts +37 -0
- package/src/web/useOnChangeHtml.ts +1 -1
- package/src/web/useOnChangeState.ts +7 -5
- package/src/web/useOnLinkDetected.ts +38 -50
- package/src/web/usePressInteractions.tsx +22 -0
- package/src/web/useStableRef.ts +12 -0
- package/lib/module/web/EnrichedTextInput.css +0 -201
- package/lib/module/web/checkboxHtmlNormalizer.js.map +0 -1
- package/lib/module/web/pmPlugins/MentionPlugin/subscribeMentionEvents.js +0 -100
- package/lib/module/web/pmPlugins/MentionPlugin/subscribeMentionEvents.js.map +0 -1
- package/lib/module/web/styleConversion/enrichedInputThemingToCSSProperties.js.map +0 -1
- package/lib/module/web/tiptapHtmlNormalizer.js.map +0 -1
- package/lib/typescript/src/web/checkboxHtmlNormalizer.d.ts.map +0 -1
- package/lib/typescript/src/web/pmPlugins/MentionPlugin/subscribeMentionEvents.d.ts +0 -4
- package/lib/typescript/src/web/pmPlugins/MentionPlugin/subscribeMentionEvents.d.ts.map +0 -1
- package/lib/typescript/src/web/styleConversion/enrichedInputThemingToCSSProperties.d.ts.map +0 -1
- package/lib/typescript/src/web/tiptapHtmlNormalizer.d.ts +0 -3
- package/lib/typescript/src/web/tiptapHtmlNormalizer.d.ts.map +0 -1
- package/src/web/EnrichedTextInput.css +0 -201
- package/src/web/pmPlugins/MentionPlugin/subscribeMentionEvents.ts +0 -105
- /package/lib/module/web/{checkboxHtmlNormalizer.js → normalization/checkboxHtmlNormalizer.js} +0 -0
- /package/lib/typescript/src/web/{checkboxHtmlNormalizer.d.ts → normalization/checkboxHtmlNormalizer.d.ts} +0 -0
- /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 {
|
|
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","
|
|
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
|
|
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:
|
|
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
|
-
//
|
|
59
|
-
if (isIndicatorInsideFinalizedMention(idx))
|
|
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","
|
|
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
|
-
|
|
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
|
|
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,
|
|
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","
|
|
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","
|
|
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":"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
|
|
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;
|
|
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 @@
|
|
|
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":[]}
|