@krainovsd/markdown-editor 0.4.6-rc1 → 0.4.7
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/lib/cjs/{index-DIkLoqBJ.js → index-B3pzIJIg.js} +7 -9
- package/lib/cjs/index-B3pzIJIg.js.map +1 -0
- package/lib/cjs/{index-CsJu7trk.js → index-BXzCwUix.js} +2 -2
- package/lib/cjs/{index-CsJu7trk.js.map → index-BXzCwUix.js.map} +1 -1
- package/lib/cjs/index.js +1 -1
- package/lib/esm/extensions/markdown/code/code-decoration.js +1 -2
- package/lib/esm/extensions/markdown/code/code-decoration.js.map +1 -1
- package/lib/esm/extensions/markdown/image/image-widget.js +1 -2
- package/lib/esm/extensions/markdown/image/image-widget.js.map +1 -1
- package/lib/esm/extensions/markdown/styles.module.scss.js +2 -2
- package/lib/esm/module/Editor/lib/init-editor-provider.js +1 -1
- package/lib/esm/module/Editor/lib/init-editor-provider.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/package.json +9 -9
- package/lib/cjs/index-DIkLoqBJ.js.map +0 -1
|
@@ -758,8 +758,8 @@ function styleInject(css, ref) {
|
|
|
758
758
|
}
|
|
759
759
|
}
|
|
760
760
|
|
|
761
|
-
var css_248z = ".
|
|
762
|
-
const styles = {"header":"
|
|
761
|
+
var css_248z = ".header_XFwV5{font-weight:700}.header_XFwV5.level_1_-KPph{font-size:2em}.header_XFwV5.level_2_ecHlB{font-size:1.8em}.header_XFwV5.level_3_SYcVr{font-size:1.6em}.header_XFwV5.level_4_V3o5m{font-size:1.4em}.header_XFwV5.level_5_I7eVk{font-size:1.3em}.header_XFwV5.level_6_A3lbK{font-size:1.2em}.bold_I8DT-{font-weight:700}.italic_72qBe{font-style:italic}.blockquote_Xq6O4{border-left:3px solid;margin-left:5px}.blockquote__inner_mjT0h{margin-left:1px;padding-left:5px;position:relative}.blockquote__inner_mjT0h:before{border-left:3px solid;content:\"\";height:140%;left:0;position:absolute;top:-3px}.blockquote__inner-deep_s6tNj{margin-left:5px}.strike-through_U64jP{text-decoration:line-through}.list_MHIjT.common_0GdDi{position:relative;visibility:hidden}.list_MHIjT.common_0GdDi:after{border-radius:100%;content:\"\";height:5px;left:0;position:absolute;top:50%;transform:translateY(-50%);visibility:visible;width:5px}.link_7U9wl{text-decoration:none;text-decoration:underline}.link__label_dHGGf{font-size:12px;position:relative;top:-4px}.image_KmBM8{display:inline-flex}.code__line_m3IiO{padding:5px;position:relative}.code__button_WwYE-{background-color:transparent;border:none;border-radius:4px;box-shadow:none;cursor:pointer;min-width:30px;outline:none;padding:4px 10px;position:absolute;right:5px;top:5px;transition:all .3s ease;z-index:1}.code__button_WwYE-.pending_fgHgD:before{animation:loading-btn--fade-in_8z5an .33s ease,loading-btn--rotation_QaopN .66s linear 0s infinite;border:2px solid hsla(0,0%,100%,.33);border-radius:50%;border-top-color:#000;content:\"\";display:inline-block;height:10.5px;left:50%;position:absolute;top:50%;width:10.5px}.code__button_WwYE-.success_kUPnO:after{animation:loading-btn--fade-in_8z5an .6s ease;border-color:currentcolor;border-style:solid;border-width:0 0 1px 1px;content:\"\";display:inline-block;height:7px;left:50%;position:absolute;top:50%;transform:translate(-50%,-75%) rotate(-45deg);width:11px}.code__button_WwYE-.fail_cOpap:after,.code__button_WwYE-.fail_cOpap:before{content:\" \";height:13px;left:50%;position:absolute;top:50%;width:1px}.code__button_WwYE-.fail_cOpap:before{transform:translate(-50%,-50%) rotate(45deg)}.code__button_WwYE-.fail_cOpap:after{transform:translate(-50%,-50%) rotate(-45deg)}@keyframes loading-btn--fade-in_8z5an{0%{opacity:0}to{opacity:1}}@keyframes loading-btn--rotation_QaopN{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}.code__span_iSCmj{opacity:1;transition:opacity .3s ease}.code__span_iSCmj.hide_uqpax{opacity:0}.code__block_JehA4{padding:1px 5px}.code__block_line_U7lcQ{border-left:1px solid;margin-left:5px}.horizontal_J1jU-{border-bottom:1px solid;margin:0 5px;position:relative;width:calc(100% - 10px)}.todo_m6MIP{align-items:flex-end;display:inline-flex;height:100%;padding-left:3px;padding-right:3px}.todo_m6MIP>input{margin:0}.todo__checked_kemjy{text-decoration:line-through}.mention_cpzik{font-weight:700}";
|
|
762
|
+
const styles = {"header":"header_XFwV5","level_1":"level_1_-KPph","level_2":"level_2_ecHlB","level_3":"level_3_SYcVr","level_4":"level_4_V3o5m","level_5":"level_5_I7eVk","level_6":"level_6_A3lbK","bold":"bold_I8DT-","italic":"italic_72qBe","blockquote":"blockquote_Xq6O4","blockquote__inner":"blockquote__inner_mjT0h","blockquote__inner-deep":"blockquote__inner-deep_s6tNj","strike-through":"strike-through_U64jP","list":"list_MHIjT","common":"common_0GdDi","link":"link_7U9wl","link__label":"link__label_dHGGf","image":"image_KmBM8","code__line":"code__line_m3IiO","code__button":"code__button_WwYE-","pending":"pending_fgHgD","loading-btn--fade-in":"loading-btn--fade-in_8z5an","loading-btn--rotation":"loading-btn--rotation_QaopN","success":"success_kUPnO","fail":"fail_cOpap","code__span":"code__span_iSCmj","hide":"hide_uqpax","code__block":"code__block_JehA4","code__block_line":"code__block_line_U7lcQ","horizontal":"horizontal_J1jU-","todo":"todo_m6MIP","todo__checked":"todo__checked_kemjy","mention":"mention_cpzik"};
|
|
763
763
|
styleInject(css_248z);
|
|
764
764
|
|
|
765
765
|
const NAME_OF_BLOCKQUOTE_MARK = "QuoteMark";
|
|
@@ -1040,8 +1040,7 @@ function getCodeSelectionDecorations({ decorations, node, view, forceActive, })
|
|
|
1040
1040
|
if (node.name === NAME_OF_INLINE_CODE) {
|
|
1041
1041
|
codeContent = view.state.doc.sliceString(startMarkPosition.to, endMarkPosition.from).trim();
|
|
1042
1042
|
}
|
|
1043
|
-
|
|
1044
|
-
language = "copy";
|
|
1043
|
+
language ??= "copy";
|
|
1045
1044
|
if (lines.length > 1) {
|
|
1046
1045
|
lines.forEach((line) => {
|
|
1047
1046
|
decorations.push(getLineDecoration({
|
|
@@ -1295,8 +1294,7 @@ class ImageWidget extends view.WidgetType {
|
|
|
1295
1294
|
}
|
|
1296
1295
|
this.registerListeners(container);
|
|
1297
1296
|
IMAGE_NODES[this.key] = container;
|
|
1298
|
-
|
|
1299
|
-
interval = setInterval(garbageCollectorInterval, INTERVAL_DELAY);
|
|
1297
|
+
interval ??= setInterval(garbageCollectorInterval, INTERVAL_DELAY);
|
|
1300
1298
|
return container;
|
|
1301
1299
|
}
|
|
1302
1300
|
destroy() {
|
|
@@ -2245,7 +2243,7 @@ const initExtensions = async ({ onBlur, onChange, onFocus, onEnter, onEscape, re
|
|
|
2245
2243
|
light,
|
|
2246
2244
|
}),
|
|
2247
2245
|
new Promise((resolve) => {
|
|
2248
|
-
void Promise.resolve().then(() => require('./index-
|
|
2246
|
+
void Promise.resolve().then(() => require('./index-BXzCwUix.js')).then(({ initMarkdown }) => {
|
|
2249
2247
|
resolve(initMarkdown({ languages, imageSrcGetter }));
|
|
2250
2248
|
});
|
|
2251
2249
|
}),
|
|
@@ -2269,7 +2267,7 @@ async function initEditorProvider({ roomId, url, userName = "Anonymous", userCol
|
|
|
2269
2267
|
const { Doc } = await import('yjs');
|
|
2270
2268
|
const { WebsocketProvider } = await import('y-websocket');
|
|
2271
2269
|
const multiCursorDocument = new Doc();
|
|
2272
|
-
const multiCursorText = multiCursorDocument.getText(
|
|
2270
|
+
const multiCursorText = multiCursorDocument.getText("codemirror");
|
|
2273
2271
|
if (!userColor?.startsWith?.("#")) {
|
|
2274
2272
|
console.warn("user color must be hex!");
|
|
2275
2273
|
userColor = "#30bced";
|
|
@@ -2445,4 +2443,4 @@ exports.Editor = Editor;
|
|
|
2445
2443
|
exports.NAME_OF_MENTION = NAME_OF_MENTION;
|
|
2446
2444
|
exports.markdownDecorationPlugin = markdownDecorationPlugin;
|
|
2447
2445
|
exports.markdownState = markdownState;
|
|
2448
|
-
//# sourceMappingURL=index-
|
|
2446
|
+
//# sourceMappingURL=index-B3pzIJIg.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-B3pzIJIg.js","sources":["../../src/extensions/compartments/index.ts","../../src/extensions/auto-completes/custom/tag-auto-complete.ts","../../src/extensions/auto-completes/init-auto-complete.ts","../../src/lib/utils/copy-to-clipboard.ts","../../src/lib/utils/get-decoration.ts","../../src/lib/utils/is-range-overlap.ts","../../src/lib/utils/is-in-range.ts","../../src/lib/utils/random-string.ts","../../src/lib/utils/save-dispatch.ts","../../src/lib/utils/overlap-mark.ts","../../src/extensions/theme/themes/get-highlight-template.ts","../../src/extensions/theme/theme-constants.ts","../../src/extensions/theme/themes/get-theme-template.ts","../../src/extensions/theme/themes/get-dark-theme.ts","../../src/extensions/theme/themes/get-light-theme.ts","../../src/extensions/theme/init-theme.ts","../../src/extensions/keymaps/custom/bold-key-map.ts","../../src/extensions/keymaps/custom/italic-key-map.ts","../../src/extensions/keymaps/custom/link-key-map.ts","../../src/extensions/keymaps/init-key-map.ts","../../src/extensions/listeners/get-change-event.ts","../../src/extensions/listeners/get-focus-event.ts","../../src/extensions/listeners/init-listeners.ts","../../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js","../../src/extensions/markdown/blockquote/blockquote-constants.ts","../../src/extensions/markdown/blockquote/blockquote-widget.ts","../../src/extensions/markdown/blockquote/blockquote-decoration.ts","../../src/extensions/markdown/bold/bold-constants.ts","../../src/extensions/markdown/bold/bold-decoration.ts","../../src/extensions/markdown/code/code-constants.ts","../../src/extensions/markdown/code/code-widget.ts","../../src/extensions/markdown/code/code-decoration.ts","../../src/extensions/markdown/header/header-constants.ts","../../src/extensions/markdown/header/header-decoration.ts","../../src/extensions/markdown/horizontal/horizontal-constants.ts","../../src/extensions/markdown/horizontal/horizontal-decoration.ts","../../src/extensions/markdown/markdown-state.ts","../../src/extensions/markdown/image/image-constants.ts","../../src/extensions/markdown/image/image-widget.ts","../../src/extensions/markdown/image/image-decoration.ts","../../src/extensions/markdown/italic/italic-constants.ts","../../src/extensions/markdown/italic/italic-decoration.ts","../../src/extensions/markdown/link/link-constants.ts","../../src/extensions/markdown/link/link-label-decoration.ts","../../src/extensions/markdown/link/link-widget.ts","../../src/extensions/markdown/link/link-decoration.ts","../../src/extensions/markdown/link/auto-link-decoration.ts","../../src/extensions/markdown/list/list-constants.ts","../../src/extensions/markdown/list/list-widget.ts","../../src/extensions/markdown/list/list-decoration.ts","../../src/extensions/markdown/mention/mention-constants.ts","../../src/extensions/markdown/mention/mention-decoration.ts","../../src/extensions/markdown/strike-through/strike-through-constants.ts","../../src/extensions/markdown/strike-through/strike-through-decoration.ts","../../src/extensions/markdown/todo/todo-constants.ts","../../src/extensions/markdown/todo/todo-widget.ts","../../src/extensions/markdown/todo/todo-decoration.ts","../../src/extensions/markdown/markdown-decoration.ts","../../src/extensions/settings/init-settings.ts","../../src/extensions/init-extensions.ts","../../src/module/Editor/lib/init-editor-provider.ts","../../src/module/Editor/lib/init-editor-state.ts","../../src/module/Editor/lib/init-editor.ts","../../src/module/Editor/Editor.ts"],"sourcesContent":["import { Compartment } from \"@codemirror/state\";\n\nexport const ReadonlyCompartment = new Compartment();\n\nexport const VimModeCompartment = new Compartment();\n\nexport const ThemeCompartment = new Compartment();\n","import type { CompletionContext, CompletionResult } from \"@codemirror/autocomplete\";\n\nconst CODE_OF_START_MENTION = \"@\".codePointAt(0); // @\nconst CODE_OF_SPACE = \" \".codePointAt(0);\nconst CODE_OF_LINE_BREAK = \"\\n\".codePointAt(0);\n\nexport const tagAutoComplete = (tagOptions: string[]) => {\n const options = tagOptions.map((user) => ({\n label: `@${user}`,\n type: \"text\",\n }));\n\n return (context: CompletionContext): CompletionResult | null => {\n const line = context.view?.lineBlockAt?.(context.pos);\n\n if (!line) return null;\n\n const content = context.state.sliceDoc(line.from, context.pos);\n let pos = content.length - 1;\n\n while (pos > -1) {\n const code = content.codePointAt(pos);\n if (!code || code === CODE_OF_SPACE || code === CODE_OF_LINE_BREAK) return null;\n if (code == CODE_OF_START_MENTION) break;\n\n pos--;\n }\n\n if (pos === -1) return null;\n\n return {\n from: line.from + pos,\n options,\n };\n };\n};\n","import { autocompletion } from \"@codemirror/autocomplete\";\nimport type { Extension } from \"@codemirror/state\";\nimport type { InitAutoCompleteOptions } from \"./auto-complete-types\";\nimport { tagAutoComplete } from \"./custom\";\n\nexport const initAutoComplete = ({\n autoCompleteTagOptions,\n autoCompleteConfig = {},\n}: InitAutoCompleteOptions): Extension => {\n if (!autoCompleteTagOptions) return [];\n\n return [\n autocompletion({\n activateOnTyping: true,\n activateOnTypingDelay: 100,\n selectOnOpen: true,\n closeOnBlur: true,\n maxRenderedOptions: 20,\n aboveCursor: false,\n defaultKeymap: true,\n icons: false,\n filterStrict: false,\n interactionDelay: 75,\n updateSyncTime: 100,\n ...autoCompleteConfig,\n override: [tagAutoComplete(autoCompleteTagOptions)],\n }),\n ];\n};\n","export function copyToClipboard(content: string): Promise<void> {\n if (navigator.clipboard && window.isSecureContext) {\n return navigator.clipboard.writeText(content);\n }\n\n return fallbackCopyTextToClipboard(content);\n}\n\nfunction fallbackCopyTextToClipboard(content: string) {\n const textArea = document.createElement(\"textarea\");\n textArea.value = content;\n\n textArea.style.top = \"0\";\n textArea.style.left = \"0\";\n textArea.style.opacity = \"0\";\n textArea.style.position = \"fixed\";\n\n document.body.appendChild(textArea);\n textArea.focus();\n textArea.select();\n\n return new Promise<void>((resolve, reject) => {\n try {\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n if (document.execCommand(\"copy\")) resolve();\n else reject();\n } catch {\n reject();\n } finally {\n document.body.removeChild(textArea);\n }\n });\n}\n","import { Decoration, type WidgetType } from \"@codemirror/view\";\n\ntype GetLineDecorationOptions = {\n style: string;\n range: [number, number?];\n};\nexport function getLineDecoration({ style, range }: GetLineDecorationOptions) {\n return Decoration.line({\n class: style,\n }).range(range[0], range[1]);\n}\n\ntype GetMarkDecorationOptions = {\n style?: string;\n attributes?: Record<string, string>;\n range: [number, number];\n};\nexport function getMarkDecoration({ range, style, attributes }: GetMarkDecorationOptions) {\n return Decoration.mark({\n class: style,\n attributes,\n }).range(range[0], range[1]);\n}\n\ntype GetHideDecorationOptions = {\n range: [number, number];\n};\nexport function getHideDecoration({ range }: GetHideDecorationOptions) {\n return Decoration.replace({}).range(range[0], range[1]);\n}\n\ntype GetReplaceDecorationOptions = {\n range: [number, number?];\n widget: WidgetType;\n};\nexport function getReplaceDecoration({ range, widget }: GetReplaceDecorationOptions) {\n return Decoration.replace({ widget }).range(range[0], range[1]);\n}\n\ntype GetWidgetDecorationOptions = {\n widget: WidgetType;\n range: [number, number?];\n};\nexport function getWidgetDecorationOptions({ widget, range }: GetWidgetDecorationOptions) {\n return Decoration.widget({ widget, side: 1 }).range(range[0], range[1]);\n}\n","export function isRangeOverlap(range: [number, number], text: [number, number]) {\n return range[0] <= text[1] && text[0] <= range[1];\n}\n","import type { SelectionRange } from \"@codemirror/state\";\nimport { isRangeOverlap } from \"./is-range-overlap\";\n\nexport function isInRange(ranges: readonly SelectionRange[], text: [number, number]) {\n return ranges.some((range) => isRangeOverlap([range.from, range.to], text));\n}\n","export function randomString(length: number = 10) {\n const characters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789\";\n let result = \"\";\n let counter = 0;\n\n while (counter < length) {\n result += characters.charAt(Math.floor(Math.random() * characters.length));\n counter += 1;\n }\n\n return result;\n}\n","export function saveDispatch(dispatch: () => void) {\n queueMicrotask(() => {\n dispatch();\n });\n}\n","import type { EditorState } from \"@codemirror/state\";\n\ntype OverlapMarkOptions = {\n state: EditorState;\n shift: number;\n marks: (number | undefined)[];\n requireMatched: number[];\n};\n\nexport function overlapMark({ marks, shift, state, requireMatched }: OverlapMarkOptions) {\n const { from, to, shiftAfterInner, shiftAfterOuter, shiftBeforeInner, shiftBeforeOuter, text } =\n processShiftContent(state, shift, marks);\n\n const startIndex = findMarkIndex(\n text.substring(0, shiftBeforeInner + shiftBeforeOuter),\n marks,\n requireMatched,\n \"right\",\n );\n const endIndex = findMarkIndex(\n text.substring(text.length - shiftAfterInner - shiftAfterOuter),\n marks,\n requireMatched,\n \"left\",\n );\n\n const start = ~startIndex ? from - shiftBeforeOuter + startIndex : -1;\n const end = ~endIndex ? to - shiftAfterInner + endIndex : -1;\n\n // console.log({\n // from,\n // to,\n // shiftAfterInner,\n // shiftAfterOuter,\n // shiftBeforeInner,\n // shiftBeforeOuter,\n // text,\n // textStart: text.substring(0, shiftBeforeInner + shiftBeforeOuter),\n // textEnd: text.substring(text.length - shiftAfterInner - shiftAfterOuter),\n // startIndex,\n // endIndex,\n // end,\n // start,\n // });\n\n return {\n start,\n end,\n marked: Boolean(~start || ~end),\n originalText: text.substring(shiftBeforeOuter, text.length - shiftAfterOuter),\n };\n}\n\n// eslint-disable-next-line max-params\nfunction findMarkIndex(\n text: string,\n marks: (number | undefined)[],\n requireMatched: number[],\n direction: \"right\" | \"left\" = \"right\",\n) {\n if (text.length === 0) return -1;\n\n const maxRequired = Math.max(...requireMatched);\n const minRequired = Math.min(...requireMatched);\n\n let pos = 0;\n let matched = 0;\n let start = -1;\n\n for (const mark of marks) {\n if (!mark) continue;\n\n while (pos < text.length) {\n if (text.codePointAt(pos) === mark) matched++;\n else {\n if (\n // eslint-disable-next-line no-loop-func -- https://eslint.org/docs/latest/rules/no-loop-func#known-limitations\n requireMatched.some((rm) => rm === matched) &&\n ((direction === \"right\" && pos - matched > start) ||\n (direction === \"left\" && (pos - matched < start || start === -1)))\n ) {\n start = direction === \"right\" ? pos - minRequired : pos - matched;\n // console.log({ pos, matched, start, minRequired, maxRequired, direction });\n } else if (maxRequired < matched) {\n const posMin = pos - minRequired;\n const posMax = pos - matched;\n\n // console.log({ posMin, posMax, pos, minRequired, maxRequired, direction, matched });\n\n // eslint-disable-next-line max-depth\n if (direction === \"right\" && posMin > start) start = posMin;\n // eslint-disable-next-line max-depth\n if (direction === \"left\" && (posMax < start || start === -1)) start = posMax;\n }\n matched = 0;\n }\n pos++;\n }\n\n if (\n // eslint-disable-next-line no-loop-func -- https://eslint.org/docs/latest/rules/no-loop-func#known-limitations\n requireMatched.some((rm) => rm === matched) &&\n ((direction === \"right\" && pos - matched > start) ||\n (direction === \"left\" && (pos - matched < start || start === -1)))\n ) {\n start = direction === \"right\" ? pos - minRequired : pos - matched;\n // console.log({ pos, matched, start, minRequired, maxRequired, direction });\n } else if (maxRequired < matched) {\n const posMin = pos - minRequired;\n const posMax = pos - matched;\n\n // console.log({ posMin, posMax, pos, minRequired, maxRequired, direction, matched });\n\n if (direction === \"right\" && posMin > start) start = posMin;\n if (direction === \"left\" && (posMax < start || start === -1)) start = posMax;\n }\n\n pos = 0;\n matched = 0;\n }\n\n return start;\n}\n\nfunction processShiftContent(state: EditorState, shift: number, marks: (number | undefined)[]) {\n const { from, to } = state.selection.ranges[0];\n const linePoint = state.lineBreak.codePointAt(0);\n let pos = 0;\n\n /** processing outer shifts */\n const initialTextBefore = state.sliceDoc(from - shift, from);\n let shiftBeforeOuter = 0;\n pos = initialTextBefore.length - 1;\n\n while (pos > -1) {\n if (initialTextBefore.codePointAt(pos) === linePoint) break;\n shiftBeforeOuter++;\n pos--;\n }\n\n const initialTextAfter = state.sliceDoc(to, to + shift);\n let shiftAfterOuter = 0;\n pos = 0;\n\n while (pos < initialTextAfter.length) {\n if (initialTextAfter.codePointAt(pos) === linePoint) break;\n shiftAfterOuter++;\n pos++;\n }\n\n /** processing inner shifts */\n const initialText = state.sliceDoc(from, to);\n let shiftBeforeInner = 0;\n pos = 0;\n\n if (initialText.length > 1)\n while (pos < initialText.length) {\n // eslint-disable-next-line no-loop-func -- https://eslint.org/docs/latest/rules/no-loop-func#known-limitations\n if (marks.some((mark) => mark === initialText.codePointAt(pos))) shiftBeforeInner++;\n else break;\n\n pos++;\n }\n\n const initialTextWithoutBeforeShift = initialText.substring(shiftBeforeInner + 1);\n let shiftAfterInner = 0;\n pos = initialTextWithoutBeforeShift.length - 1;\n\n if (initialText.length > 1 || shiftBeforeInner > 0)\n while (pos > -1) {\n // eslint-disable-next-line no-loop-func -- https://eslint.org/docs/latest/rules/no-loop-func#known-limitations\n if (marks.some((mark) => mark === initialTextWithoutBeforeShift.codePointAt(pos)))\n shiftAfterInner++;\n else break;\n\n pos--;\n }\n\n const text = state.sliceDoc(from - shiftBeforeOuter, to + shiftAfterOuter);\n\n return {\n from,\n to,\n shiftBeforeOuter,\n shiftBeforeInner,\n shiftAfterOuter,\n shiftAfterInner,\n text,\n };\n}\n","import { HighlightStyle, syntaxHighlighting } from \"@codemirror/language\";\nimport { tags } from \"@lezer/highlight\";\nimport type { HighlightConfig } from \"../theme-types\";\n\n/**\n * t.processingInstruction, t.meta - # () []\n * t.url, t.link - links\n */\n\nexport function getHighlightTemplate(config: Required<HighlightConfig>) {\n return syntaxHighlighting(\n HighlightStyle.define([\n { tag: tags.keyword, color: config.keyword },\n { tag: [tags.name, tags.deleted, tags.character, tags.macroName], color: config.variable },\n { tag: [tags.propertyName], color: config.function },\n {\n tag: [tags.string, tags.inserted, tags.special(tags.string)],\n color: config.string,\n },\n { tag: [tags.function(tags.variableName), tags.labelName], color: config.function },\n {\n tag: [tags.color, tags.constant(tags.name), tags.standard(tags.name)],\n color: config.constant,\n },\n { tag: [tags.definition(tags.name), tags.separator], color: config.variable },\n { tag: [tags.className], color: config.class },\n {\n tag: [tags.number, tags.changed, tags.annotation, tags.modifier, tags.self, tags.namespace],\n color: config.number,\n },\n { tag: [tags.typeName], color: config.type, fontStyle: config.type },\n { tag: [tags.operator, tags.operatorKeyword], color: config.keyword },\n { tag: [tags.escape, tags.regexp], color: config.regexp },\n { tag: [tags.comment], color: config.comment },\n { tag: [tags.atom, tags.bool, tags.special(tags.variableName)], color: config.variable },\n { tag: tags.invalid, color: config.invalid },\n ]),\n );\n}\n","export const CLASSES = {\n listCommon: \"cm-list-common\",\n code: \"cm-code\",\n codeBlockLine: \"cm-code-block-line\",\n codeBlock: \"cm-code-block\",\n codeButton: \"cm-code-button\",\n codeButtonSuccess: \"cm-code-button-success\",\n codeButtonFail: \"cm-code-button-fail\",\n codeButtonPending: \"cm-code-button-pending\",\n codeButtonSpan: \"cm-code-span\",\n horizontal: \"cm-horizontal\",\n blockquote: \"cm-blockquote\",\n blockquoteInner: \"cm-blockquote-inner\",\n link: \"cm-link\",\n mention: \"cm-mention\",\n};\n","import { EditorView } from \"@codemirror/view\";\nimport { CLASSES } from \"../theme-constants\";\nimport type { ThemeConfig } from \"../theme-types\";\n\nexport function getThemeTemplate(dark: boolean, config: Required<ThemeConfig>) {\n return EditorView.theme(\n {\n \"&\": {\n color: config.color,\n backgroundColor: config.background,\n },\n \".cm-content\": {\n fontFamily: config.fontFamily || \"Montserrat\",\n },\n \"&.cm-focused > .cm-scroller > .cm-selectionLayer > .cm-selectionBackground\": {\n background: config.vimSelectionFocused,\n },\n \"& .cm-selectionBackground\": {\n background: config.vimSelection,\n },\n \"&.cm-editor.cm-focused\": { outline: \"none\" },\n \"&.cm-editor\": {\n height: \"100%\",\n width: \"100%\",\n },\n [`.${CLASSES.listCommon}:after`]: {\n background: config.color,\n },\n [`.${CLASSES.code}`]: {\n background: config.codeBackground,\n color: config.codeColor,\n },\n [`div.${CLASSES.code} *`]: {\n fontFamily: config.codeFontFamily,\n },\n [`.${CLASSES.horizontal}`]: {\n borderBottomColor: config.horizontalColor,\n },\n [`.${CLASSES.link}`]: {\n color: config.linkColor,\n },\n [`.${CLASSES.blockquote}`]: {\n borderLeftColor: config.blockquoteColor,\n },\n [`.${CLASSES.blockquoteInner}:before`]: {\n borderLeftColor: config.blockquoteColor,\n },\n [`.${CLASSES.codeButton}`]: {\n color: config.codeButtonColor,\n },\n [`.${CLASSES.codeButton}:hover`]: {\n background: config.codeButtonBackground,\n },\n [`.${CLASSES.codeButtonSuccess}:after`]: {\n borderColor: config.codeButtonColor,\n },\n [`.${CLASSES.codeButtonFail}:after`]: {\n background: config.codeButtonColor,\n },\n [`.${CLASSES.codeButtonFail}:before`]: {\n background: config.codeButtonColor,\n },\n [`.${CLASSES.codeButtonPending}:before`]: {\n borderColor: config.codeBackground,\n borderTopColor: config.codeButtonColor,\n },\n [`.${CLASSES.mention}`]: {\n color: config.mentionColor,\n },\n [`.${CLASSES.codeBlockLine}`]: {\n borderColor: config.codeBlockBorderColor,\n },\n [`.${CLASSES.codeBlock}`]: {\n background: config.codeBlockBackground,\n },\n },\n { dark },\n );\n}\n","import { type HighlightConfig, type InitThemeOptions, type ThemeConfig } from \"../theme-types\";\nimport { getHighlightTemplate } from \"./get-highlight-template\";\nimport { getThemeTemplate } from \"./get-theme-template\";\n\nconst HIGHLIGHT_CONFIG: Required<HighlightConfig> = {\n keyword: \"#f97583\",\n variable: \"#ffab70\",\n function: \"#79b8ff\",\n string: \"#9ecbff\",\n constant: \"#79b8ff\",\n type: \"#79b8ff\",\n class: \"#b392f0\",\n number: \"#79b8ff\",\n comment: \"#6a737d\",\n heading: \"#79b8ff\",\n invalid: \"#f97583\",\n regexp: \"#9ecbff\",\n};\n\nconst THEME_CONFIG: Required<ThemeConfig> = {\n background: \"#2E3235\",\n blockquoteColor: \"#8A5CF5\", // #6A8695\n codeBackground: \"#24292e\",\n codeButtonBackground: \"#434C54FF\",\n codeButtonColor: \"#DDDDDD\",\n codeColor: \"#DDDDDD\",\n color: \"#DDDDDD\",\n fontFamily: \"Montserrat\",\n codeFontFamily: \"Consolas\",\n horizontalColor: \"#DDDDDD\",\n linkColor: \"#8A5CF5\",\n mentionColor: \"#8A5CF5\",\n vimSelection: \"#1A1919FF\",\n vimSelectionFocused: \"#2E4B4BFF\",\n codeBlockBorderColor: \"#7b7e81\",\n codeBlockBackground: \"#24292e\",\n};\n\nexport function getDarkTheme({ dark }: InitThemeOptions) {\n const highlightConfig = { ...HIGHLIGHT_CONFIG, ...(dark?.highlightConfig ?? {}) };\n const themeConfig = { ...THEME_CONFIG, ...(dark?.themeConfig ?? {}) };\n\n return [getThemeTemplate(true, themeConfig), getHighlightTemplate(highlightConfig)];\n}\n","import { type HighlightConfig, type InitThemeOptions, type ThemeConfig } from \"../theme-types\";\nimport { getHighlightTemplate } from \"./get-highlight-template\";\nimport { getThemeTemplate } from \"./get-theme-template\";\n\nconst HIGHLIGHT_CONFIG: Required<HighlightConfig> = {\n keyword: \"#9854f1\",\n variable: \"#3760bf\",\n function: \"#2e7de9\",\n string: \"#587539\",\n constant: \"#9854f1\",\n type: \"#07879d\",\n class: \"#3760bf\",\n number: \"#b15c00\",\n comment: \"#9da3c2\",\n heading: \"#006a83\",\n invalid: \"#ff3e64\",\n regexp: \"#2e5857\",\n};\n\nconst THEME_CONFIG: Required<ThemeConfig> = {\n background: \"transparent\",\n blockquoteColor: \"#8A5CF5\", // #6A8695\n codeBackground: \"#e1e2e7\",\n codeButtonBackground: \"#CCCCCDFF\",\n codeButtonColor: \"#000000\",\n codeColor: \"#000000\",\n color: \"#000000\",\n fontFamily: \"Montserrat\",\n codeFontFamily: \"Consolas\",\n horizontalColor: \"#000000\",\n linkColor: \"#8A5CF5\",\n mentionColor: \"#8A5CF5\",\n vimSelection: \"#d9d9d9\",\n vimSelectionFocused: \"#d7d4f0\",\n codeBlockBackground: \"#e1e2e7\",\n codeBlockBorderColor: \"##CCCCCDFF\",\n};\n\nexport function getLightTheme({ light }: InitThemeOptions) {\n const highlightConfig = { ...HIGHLIGHT_CONFIG, ...(light?.highlightConfig ?? {}) };\n const themeConfig = { ...THEME_CONFIG, ...(light?.themeConfig ?? {}) };\n\n return [getThemeTemplate(false, themeConfig), getHighlightTemplate(highlightConfig)];\n}\n","import type { Extension } from \"@codemirror/state\";\nimport { EditorView } from \"@codemirror/view\";\nimport { ThemeCompartment } from \"../compartments\";\nimport type { InitThemeOptions } from \"./theme-types\";\nimport { getDarkTheme, getLightTheme } from \"./themes\";\n\nexport const initTheme = (options: InitThemeOptions): Extension => {\n const extensions: Extension[] = [\n EditorView.lineWrapping,\n ThemeCompartment.of(options.theme === \"dark\" ? getDarkTheme(options) : getLightTheme(options)),\n ];\n\n return extensions;\n};\n","import { type ChangeSpec, type StateCommand } from \"@codemirror/state\";\nimport { type KeyBinding } from \"@codemirror/view\";\nimport { utils } from \"@/lib\";\nimport { saveDispatch } from \"@/lib/utils\";\n\nconst BOLD_MARK_STAR = \"*\".codePointAt(0);\nconst BOLD_MARK_DASH = \"_\".codePointAt(0);\nconst SHIFT = 2;\n\nconst insertBoldMarker: StateCommand = ({ state, dispatch }) => {\n const changes: ChangeSpec[] = [];\n const { from, to } = state.selection.ranges[0];\n if (from === to) return true;\n\n const { end, start, marked, originalText } = utils.overlapMark({\n marks: [BOLD_MARK_DASH, BOLD_MARK_STAR],\n requireMatched: [SHIFT],\n shift: SHIFT,\n state,\n });\n\n if (marked) {\n if (~start) {\n changes.push({ from: start, to: start + SHIFT, insert: \"\" });\n }\n if (~end) {\n changes.push({ from: end, to: end + SHIFT, insert: \"\" });\n }\n } else {\n const markedText = `**${originalText}**`;\n changes.push({ from, to, insert: markedText });\n }\n\n saveDispatch(() => {\n const startSelection = ~start ? start : from;\n const endSelection = ~end ? end - (~start ? SHIFT : 0) : to - (~start ? SHIFT : 0);\n\n dispatch(\n state.update({\n changes,\n selection: !marked\n ? {\n anchor: from + SHIFT,\n head: to + SHIFT,\n }\n : {\n anchor: startSelection,\n head: endSelection,\n },\n }),\n );\n });\n\n return true;\n};\n\nexport const boldKeymap: KeyBinding = {\n key: \"Mod-b\",\n run: insertBoldMarker,\n};\n","import { type ChangeSpec, type StateCommand } from \"@codemirror/state\";\nimport { type KeyBinding } from \"@codemirror/view\";\nimport { utils } from \"@/lib\";\nimport { saveDispatch } from \"@/lib/utils\";\n\nconst ITALIC_MARK_STAR = \"*\".codePointAt(0);\nconst ITALIC_MARK_DASH = \"_\".codePointAt(0);\nconst SHIFT_COUPLE = 3;\nconst SHIFT_ALONE = 1;\n\nconst insertItalicMarker: StateCommand = ({ state, dispatch }) => {\n const changes: ChangeSpec[] = [];\n const { from, to } = state.selection.ranges[0];\n if (from === to) return true;\n\n const { end, start, marked, originalText } = utils.overlapMark({\n marks: [ITALIC_MARK_STAR, ITALIC_MARK_DASH],\n requireMatched: [SHIFT_ALONE, SHIFT_COUPLE],\n shift: SHIFT_COUPLE,\n state,\n });\n\n if (marked) {\n if (~start) {\n changes.push({ from: start, to: start + SHIFT_ALONE, insert: \"\" });\n }\n if (~end) {\n changes.push({ from: end, to: end + SHIFT_ALONE, insert: \"\" });\n }\n } else {\n const markedText = `*${originalText}*`;\n changes.push({ from, to, insert: markedText });\n }\n\n saveDispatch(() => {\n const startSelection = ~start ? start : from;\n const endSelection = ~end ? end - (~start ? SHIFT_ALONE : 0) : to - (~start ? SHIFT_ALONE : 0);\n\n dispatch(\n state.update({\n changes,\n selection: !marked\n ? {\n anchor: from + SHIFT_ALONE,\n head: to + SHIFT_ALONE,\n }\n : {\n anchor: startSelection,\n head: endSelection,\n },\n }),\n );\n });\n\n return true;\n};\n\nexport const italicKeymap: KeyBinding = {\n key: \"Mod-i\",\n run: insertItalicMarker,\n};\n","import type { ChangeSpec, StateCommand } from \"@codemirror/state\";\nimport type { KeyBinding } from \"@codemirror/view\";\nimport { saveDispatch } from \"@/lib/utils\";\n\nconst insertLinkWrapper: StateCommand = ({ state, dispatch }) => {\n const changes: ChangeSpec[] = [];\n const { from, to } = state.selection.ranges[0];\n if (from === to) return true;\n const content = state.sliceDoc(from, to);\n\n const wrapper = `[${content}]()`;\n changes.push({ from, to, insert: wrapper });\n\n saveDispatch(() => {\n dispatch(\n state.update({\n changes,\n selection: {\n anchor: to + 3,\n },\n }),\n );\n });\n\n return true;\n};\n\nexport const linkKeymap: KeyBinding = {\n key: \"Mod-k\",\n run: insertLinkWrapper,\n};\n","import { historyKeymap, indentWithTab, standardKeymap } from \"@codemirror/commands\";\nimport type { Extension } from \"@codemirror/state\";\nimport { type EditorView, type KeyBinding, drawSelection, keymap } from \"@codemirror/view\";\nimport { saveDispatch } from \"@/lib/utils\";\nimport { ThemeCompartment, VimModeCompartment } from \"../compartments\";\nimport { type EditorTheme, type ThemeOptions, getDarkTheme, getLightTheme } from \"../theme\";\nimport { boldKeymap, italicKeymap, linkKeymap } from \"./custom\";\n\nexport type InitKeyMapsOptions = {\n onEnter?: HandleEnterKeyMapEditorFunction;\n onEscape?: HandleEscapeKeyMapEditorFunction;\n keyMaps?: CustomKeyMap[];\n defaultKeyMaps?: DefaultKeyMapsOptions;\n};\n\nexport type CustomKeyMap = KeyBinding;\nexport type HandleEnterKeyMapEditorFunction = (view: EditorView) => boolean;\nexport type HandleEscapeKeyMapEditorFunction = (view: EditorView) => boolean;\nexport type DefaultKeyMapsOptions = {\n vim?: boolean;\n theme?: boolean;\n};\n\nlet vimMode = false;\nlet theme: EditorTheme = \"light\";\n\nexport const initKeyMaps = async ({\n onEnter,\n onEscape,\n multiCursorMode,\n keyMaps,\n defaultKeyMaps,\n theme: initialTheme,\n vimMode: initialVimMode,\n dark,\n light,\n}: InitKeyMapsOptions & {\n multiCursorMode: boolean;\n vimMode: boolean;\n theme: EditorTheme;\n dark?: ThemeOptions;\n light?: ThemeOptions;\n}): Promise<Extension> => {\n vimMode = initialVimMode;\n theme = initialTheme;\n\n /** tab */\n const keyBindings: CustomKeyMap[] = [indentWithTab, boldKeymap, italicKeymap, linkKeymap];\n\n /** standard */\n keyBindings.push(\n ...standardKeymap.map<CustomKeyMap>((keyMap) => {\n if (keyMap.key === \"Enter\" && onEnter) {\n return {\n key: \"Enter\",\n shift: keyMap.run,\n run: (view) => {\n const response = onEnter(view);\n\n if (response) keyMap.run?.(view);\n\n return response;\n },\n };\n }\n\n return keyMap;\n }),\n );\n\n /** vim */\n if (defaultKeyMaps?.vim)\n keyBindings.push({\n key: \"Mod-Alt-v\",\n run: (view) => {\n vimMode = !vimMode;\n\n void import(\"@replit/codemirror-vim\").then(({ vim }) => {\n saveDispatch(() => {\n view.dispatch({\n effects: VimModeCompartment.reconfigure(\n vimMode ? [vim({ status: true }), drawSelection()] : [],\n ),\n });\n });\n });\n\n return true;\n },\n });\n\n /** theme */\n if (defaultKeyMaps?.theme)\n keyBindings.push({\n key: \"Mod-Alt-a\",\n run: (view) => {\n theme = theme === \"light\" ? \"dark\" : \"light\";\n saveDispatch(() => {\n view.dispatch({\n effects: ThemeCompartment.reconfigure(\n theme === \"dark\"\n ? getDarkTheme({\n dark,\n light,\n theme,\n })\n : getLightTheme({\n dark,\n light,\n theme,\n }),\n ),\n });\n });\n\n return true;\n },\n });\n\n /** escape */\n if (onEscape) {\n keyBindings.push({\n key: \"Escape\",\n run: (view) => {\n return onEscape(view);\n },\n });\n }\n\n /** custom */\n if (keyMaps) {\n keyBindings.push(...keyMaps);\n }\n\n /** history */\n if (multiCursorMode) {\n const { yUndoManagerKeymap } = await import(\"y-codemirror.next\");\n keyBindings.push(...yUndoManagerKeymap);\n } else {\n keyBindings.push(...historyKeymap);\n }\n\n return keymap.of(keyBindings);\n};\n","import { EditorView, type ViewUpdate } from \"@codemirror/view\";\n\nexport type GetChangeEventOptions = {\n onChange?: HandleChangeEditorFunction;\n};\n\nexport type HandleChangeEditorFunction = (view: ViewUpdate) => void;\n\nexport function getChangeEvent({ onChange }: GetChangeEventOptions) {\n return onChange\n ? EditorView.updateListener.of((event) => {\n if (event.docChanged) {\n onChange(event);\n }\n })\n : [];\n}\n","import { type EditorState } from \"@codemirror/state\";\nimport { EditorView } from \"@codemirror/view\";\n\nexport type GetFocusEventOptions = {\n onFocus?: HandleFocusEditorFunction;\n onBlur?: HandleBlurEditorFunction;\n};\n\nexport type HandleFocusEditorFunction = (state: EditorState) => void;\nexport type HandleBlurEditorFunction = (state: EditorState) => void;\n\nexport function getFocusEvent({ onBlur, onFocus }: GetFocusEventOptions) {\n return onFocus || onBlur\n ? EditorView.focusChangeEffect.of((event, focus) => {\n if (focus && onFocus) onFocus(event);\n else if (!focus && onBlur) onBlur(event);\n\n return null;\n })\n : [];\n}\n","import { type GetChangeEventOptions, getChangeEvent } from \"./get-change-event\";\nimport { type GetFocusEventOptions, getFocusEvent } from \"./get-focus-event\";\n\nexport type InitListenersOptions = GetFocusEventOptions & GetChangeEventOptions;\n\nexport function initListeners({ onBlur, onChange, onFocus }: InitListenersOptions) {\n return [getChangeEvent({ onChange }), getFocusEvent({ onBlur, onFocus })];\n}\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","export const NAME_OF_BLOCKQUOTE_MARK = \"QuoteMark\";\nexport const CODE_OF_SPACE = \" \".codePointAt(0);\nexport const CODE_OF_BLOCKQUOTE_MARK = 62; // >\n","import { WidgetType } from \"@codemirror/view\";\nimport { CLASSES } from \"@/extensions/theme\";\nimport styles from \"../styles.module.scss\";\n\nexport class BlockquoteWidget extends WidgetType {\n constructor(private readonly deep: boolean) {\n super();\n }\n\n toDOM(): HTMLElement {\n const span = document.createElement(\"span\");\n span.classList.add(styles.blockquote__inner);\n if (this.deep) span.classList.add(styles[\"blockquote__inner-deep\"]);\n span.classList.add(CLASSES.blockquoteInner);\n\n return span;\n }\n}\n","import clsx from \"clsx\";\nimport { CLASSES } from \"@/extensions/theme\";\nimport { utils } from \"@/lib\";\nimport type {\n DecorationPlugin,\n GetDecorationOptions,\n GetSelectionDecorationOptions,\n} from \"../markdown-types\";\nimport styles from \"../styles.module.scss\";\nimport {\n CODE_OF_BLOCKQUOTE_MARK,\n CODE_OF_SPACE,\n NAME_OF_BLOCKQUOTE_MARK,\n} from \"./blockquote-constants\";\nimport { BlockquoteWidget } from \"./blockquote-widget\";\n\nfunction getBlockquoteDecorations({ decorations, node, view }: GetDecorationOptions) {\n if (node.name !== NAME_OF_BLOCKQUOTE_MARK) {\n return;\n }\n\n const line = view.lineBlockAt(node.from);\n let isInner = false;\n\n if (line.from !== node.from) {\n const content = view.state.doc.sliceString(line.from, node.to);\n let pos = content.length - 1;\n let isHasMark = false;\n\n while (pos >= 0) {\n pos--;\n const currentCode = content.charCodeAt(pos);\n if (currentCode === CODE_OF_SPACE) continue;\n if (currentCode === CODE_OF_BLOCKQUOTE_MARK) {\n if (!isHasMark) {\n isHasMark = true;\n continue;\n }\n if (!isInner) {\n isInner = true;\n break;\n }\n }\n pos = -1;\n }\n }\n\n if (!isInner) {\n decorations.push(\n utils.getLineDecoration({\n style: clsx(styles.blockquote, CLASSES.blockquote),\n range: [line.from],\n }),\n );\n }\n}\n\nfunction getBlockquoteSelectionDecorations({\n decorations,\n node,\n view,\n forceActive,\n}: GetSelectionDecorationOptions) {\n if (node.name !== NAME_OF_BLOCKQUOTE_MARK) {\n return;\n }\n\n const line = view.lineBlockAt(node.from);\n let isInner = false;\n let isDeepInner = false;\n\n if (line.from !== node.from) {\n const content = view.state.doc.sliceString(line.from, node.to);\n let pos = content.length;\n let isHasMark = false;\n\n while (pos >= 0) {\n pos--;\n const currentCode = content.charCodeAt(pos);\n\n if (currentCode === CODE_OF_SPACE) continue;\n if (currentCode === CODE_OF_BLOCKQUOTE_MARK) {\n if (!isHasMark) {\n isHasMark = true;\n continue;\n }\n if (!isInner) {\n isInner = true;\n continue;\n }\n if (!isDeepInner) {\n isDeepInner = true;\n break;\n }\n }\n pos = -1;\n }\n }\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [line.from, line.to])\n ) {\n if (!isInner) decorations.push(utils.getHideDecoration({ range: [node.from, node.to] }));\n else\n decorations.push(\n utils.getReplaceDecoration({\n widget: new BlockquoteWidget(isDeepInner),\n range: [node.from, node.to],\n }),\n );\n }\n}\n\nexport const blockquoteDecorationPlugin: DecorationPlugin = {\n decorations: [getBlockquoteDecorations],\n selectionDecorations: [getBlockquoteSelectionDecorations],\n};\n","export const NAME_OF_BOLD = \"StrongEmphasis\";\nexport const LIST_OF_BOLD_MARKS = new Set([\"_\".codePointAt(0), \"*\".codePointAt(0)]);\n","import { syntaxTree } from \"@codemirror/language\";\nimport { utils } from \"@/lib\";\nimport type {\n DecorationPlugin,\n GetDecorationOptions,\n GetSelectionDecorationOptions,\n} from \"../markdown-types\";\nimport styles from \"../styles.module.scss\";\nimport { LIST_OF_BOLD_MARKS, NAME_OF_BOLD } from \"./bold-constants\";\n\nfunction getBoldDecorations({ decorations, node, view }: GetDecorationOptions) {\n if (node.name !== NAME_OF_BOLD) {\n return;\n }\n\n const step =\n LIST_OF_BOLD_MARKS.has(view.state.doc.sliceString(node.from - 1, node.from).charCodeAt(0)) &&\n syntaxTree(view.state).resolve(node.from - 1).type.name !== \"Emphasis\"\n ? 1\n : 0;\n\n decorations.push(\n utils.getMarkDecoration({\n style: styles.bold,\n range: [node.from - step, node.to + step],\n }),\n );\n}\n\nfunction getBoldSelectionDecorations({\n decorations,\n node,\n view,\n forceActive,\n}: GetSelectionDecorationOptions) {\n if (node.name !== NAME_OF_BOLD) {\n return;\n }\n\n if (\n LIST_OF_BOLD_MARKS.has(view.state.doc.sliceString(node.from - 1, node.from).charCodeAt(0)) &&\n syntaxTree(view.state).resolve(node.from - 1).type.name !== \"Emphasis\"\n ) {\n return;\n }\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [node.from, node.to])\n ) {\n decorations.push(utils.getHideDecoration({ range: [node.from, node.from + 2] }));\n decorations.push(utils.getHideDecoration({ range: [node.to - 2, node.to] }));\n }\n}\n\nexport const boldDecorationPlugin: DecorationPlugin = {\n decorations: [getBoldDecorations],\n selectionDecorations: [getBoldSelectionDecorations],\n};\n","export const NAME_OF_FENCED_CODE = \"FencedCode\";\nexport const NAME_OF_INLINE_CODE = \"InlineCode\";\nexport const NAME_OF_BLOCK_CODE = \"CodeBlock\";\nexport const CODE_OF_SPACE = \" \".codePointAt(0);\nexport const CODE_OF_CODE_MARK = 96; // `\n","import { type EditorView, WidgetType } from \"@codemirror/view\";\nimport { CLASSES } from \"@/extensions/theme\";\nimport { utils } from \"@/lib\";\nimport styles from \"../styles.module.scss\";\n\nexport class CodeWidget extends WidgetType {\n view: EditorView | undefined;\n\n timer: NodeJS.Timeout | undefined;\n\n button: HTMLElement | undefined;\n\n span: HTMLElement | undefined;\n\n constructor(\n private readonly language: string,\n private content: string | undefined,\n ) {\n super();\n }\n\n onClick() {\n if (this.content && this.button && this.span) {\n const span = this.span;\n const button = this.button;\n clearTimeout(this.timer);\n button.classList.remove(styles.pending);\n button.classList.remove(CLASSES.codeButtonPending);\n button.classList.remove(styles.success);\n button.classList.remove(CLASSES.codeButtonSuccess);\n button.classList.remove(styles.fail);\n button.classList.remove(CLASSES.codeButtonFail);\n\n button.classList.add(styles.pending);\n button.classList.add(CLASSES.codeButtonPending);\n\n span.classList.add(styles.hide);\n\n void utils\n .copyToClipboard(this.content)\n .then(() => {\n button.classList.remove(styles.pending);\n button.classList.remove(CLASSES.codeButtonPending);\n\n button.classList.add(styles.success);\n button.classList.add(CLASSES.codeButtonSuccess);\n\n this.timer = setTimeout(() => {\n button.classList.remove(styles.success);\n button.classList.remove(CLASSES.codeButtonSuccess);\n span.classList.remove(styles.hide);\n }, 500);\n })\n .catch(() => {\n button.classList.remove(styles.pending);\n button.classList.remove(CLASSES.codeButtonPending);\n button.classList.add(styles.fail);\n button.classList.add(CLASSES.codeButtonFail);\n\n this.timer = setTimeout(() => {\n button.classList.remove(styles.fail);\n button.classList.remove(CLASSES.codeButtonFail);\n\n span.classList.remove(styles.hide);\n }, 500);\n });\n }\n }\n\n toDOM(view: EditorView): HTMLElement {\n this.view = view;\n\n const span = document.createElement(\"span\");\n span.classList.add(styles.code__span);\n span.classList.add(CLASSES.codeButtonSpan);\n\n span.textContent = this.language;\n\n const button = document.createElement(\"button\");\n button.classList.add(styles.code__button);\n button.classList.add(CLASSES.codeButton);\n\n if (this.content) button.addEventListener(\"click\", this.onClick.bind(this));\n button.appendChild(span);\n\n this.button = button;\n this.span = span;\n\n return button;\n }\n\n destroy(dom: HTMLElement): void {\n if (this.content) dom.removeEventListener(\"click\", this.onClick.bind(this));\n }\n}\n","import clsx from \"clsx\";\nimport { CLASSES } from \"@/extensions/theme\";\nimport { utils } from \"@/lib\";\nimport type {\n DecorationPlugin,\n GetDecorationOptions,\n GetSelectionDecorationOptions,\n} from \"../markdown-types\";\nimport styles from \"../styles.module.scss\";\nimport {\n CODE_OF_CODE_MARK,\n CODE_OF_SPACE,\n NAME_OF_BLOCK_CODE,\n NAME_OF_FENCED_CODE,\n NAME_OF_INLINE_CODE,\n} from \"./code-constants\";\nimport { CodeWidget } from \"./code-widget\";\n\nfunction getCodeSelectionDecorations({\n decorations,\n node,\n view,\n forceActive,\n}: GetSelectionDecorationOptions) {\n if (node.name !== NAME_OF_FENCED_CODE && node.name !== NAME_OF_INLINE_CODE) {\n return;\n }\n\n let isOverlapLine = false;\n const startMarkPosition = { from: -1, to: -1 };\n const endMarkPosition = { from: -1, to: -1 };\n const lines = view.viewportLineBlocks.filter((line) => {\n const isOverlap = utils.isRangeOverlap([node.from, node.to], [line.from, line.to]);\n if (isOverlap && utils.isInRange(view.state.selection.ranges, [line.from, line.to]))\n isOverlapLine = true;\n\n return isOverlap;\n });\n let languagePos: [number, number] | undefined;\n let language: string | undefined;\n let codeContent: string | undefined;\n\n const content = view.state.doc.sliceString(node.from, node.to);\n let pos = -1;\n while (\n (startMarkPosition.from === -1 || startMarkPosition.to === -1) &&\n pos >= -1 &&\n pos < content.length\n ) {\n pos++;\n const code = content.charCodeAt(pos);\n\n if (code !== CODE_OF_CODE_MARK && startMarkPosition.from === -1) continue;\n else if (code === CODE_OF_CODE_MARK && startMarkPosition.from === -1)\n startMarkPosition.from = node.from + pos;\n else if (code !== CODE_OF_CODE_MARK && startMarkPosition.from !== -1)\n startMarkPosition.to = node.from + pos;\n }\n\n pos = content.length;\n\n while (\n (endMarkPosition.from === -1 || endMarkPosition.to === -1) &&\n pos >= -1 &&\n pos <= content.length\n ) {\n pos--;\n const code = content.charCodeAt(pos);\n\n if (code !== CODE_OF_CODE_MARK && endMarkPosition.to === -1) continue;\n else if (code === CODE_OF_CODE_MARK && endMarkPosition.to === -1)\n endMarkPosition.to = node.from + pos + 1;\n else if (code !== CODE_OF_CODE_MARK && endMarkPosition.to !== -1)\n endMarkPosition.from = node.from + pos + 1;\n }\n\n if (node.name === NAME_OF_FENCED_CODE) {\n const codeInfo = node.node.getChild(\"CodeInfo\");\n const codeText = node.node.getChild(\"CodeText\");\n\n if (codeInfo) {\n language = view.state.doc.sliceString(codeInfo.from, codeInfo.to);\n languagePos = [codeInfo.from, codeInfo.to];\n }\n if (codeText) codeContent = view.state.doc.sliceString(codeText.from, codeText.to);\n else codeContent = \"\";\n }\n if (node.name === NAME_OF_INLINE_CODE) {\n codeContent = view.state.doc.sliceString(startMarkPosition.to, endMarkPosition.from).trim();\n }\n language ??= \"copy\";\n\n if (lines.length > 1) {\n lines.forEach((line) => {\n decorations.push(\n utils.getLineDecoration({\n style: clsx(styles.code__line, CLASSES.code),\n range: [line.from],\n }),\n );\n });\n } else {\n decorations.push(\n utils.getMarkDecoration({\n style: clsx(CLASSES.code),\n range: [node.from, node.to],\n }),\n );\n }\n\n if (\n forceActive ||\n !view.hasFocus ||\n (lines.length > 1 && !isOverlapLine) ||\n (lines.length === 1 && !utils.isInRange(view.state.selection.ranges, [node.from, node.to]))\n ) {\n if (lines.length > 1 && language) {\n if (languagePos) decorations.push(utils.getHideDecoration({ range: languagePos }));\n decorations.push(\n utils.getWidgetDecorationOptions({\n widget: new CodeWidget(language, codeContent),\n range: [node.from],\n }),\n );\n }\n decorations.push(\n utils.getHideDecoration({ range: [startMarkPosition.from, startMarkPosition.to] }),\n );\n decorations.push(\n utils.getHideDecoration({ range: [endMarkPosition.from, endMarkPosition.to] }),\n );\n }\n}\n\nfunction getCodeBlockDecorations({ decorations, node, view }: GetDecorationOptions) {\n if (node.name !== NAME_OF_BLOCK_CODE) return;\n\n const lines = view.viewportLineBlocks.filter((line) => {\n const isOverlap = utils.isRangeOverlap([node.from, node.to], [line.from, line.to]);\n\n return isOverlap;\n });\n\n lines.forEach((line) => {\n const content = view.state.sliceDoc(line.from, line.to);\n let startContent = 0;\n let pos = 0;\n\n while (pos < content.length) {\n if (content.codePointAt(pos) === CODE_OF_SPACE) {\n pos++;\n } else {\n startContent = pos;\n break;\n }\n }\n\n decorations.push(\n utils.getMarkDecoration({\n range: [line.from + startContent, line.to],\n style: clsx(styles.code__block, CLASSES.codeBlock),\n }),\n );\n\n decorations.push(\n utils.getLineDecoration({\n range: [line.from],\n style: clsx(styles.code__block_line, CLASSES.codeBlockLine),\n }),\n );\n });\n}\n\nexport const codeDecorationPlugin: DecorationPlugin = {\n selectionDecorations: [getCodeSelectionDecorations],\n decorations: [getCodeBlockDecorations],\n};\n","export const NAME_OF_HEADER = \"ATXHeading\";\nexport const NAME_OF_HEADER_UNDER = \"SetextHeading\";\nexport const NAME_OF_HEADER_MARK = \"HeaderMark\";\n","import clsx from \"clsx\";\nimport { utils } from \"@/lib\";\nimport type {\n DecorationPlugin,\n GetDecorationOptions,\n GetSelectionDecorationOptions,\n} from \"../markdown-types\";\nimport styles from \"../styles.module.scss\";\nimport { NAME_OF_HEADER, NAME_OF_HEADER_MARK, NAME_OF_HEADER_UNDER } from \"./header-constants\";\n\nfunction getHeaderDecorations({ decorations, node, view }: GetDecorationOptions) {\n const isHeader = node.name.startsWith(NAME_OF_HEADER);\n const isHeaderUnder = node.name.startsWith(NAME_OF_HEADER_UNDER);\n\n if (!isHeader && !isHeaderUnder) {\n return;\n }\n\n let level: string | undefined;\n\n if (isHeader) {\n level = node.name.replace(NAME_OF_HEADER, \"\");\n\n if (view.state.doc.sliceString(node.from + +level).charCodeAt(0) !== 32) return;\n } else {\n level = node.name.replace(NAME_OF_HEADER_UNDER, \"\");\n }\n\n if (!level) return;\n\n decorations.push(\n utils.getLineDecoration({\n style: clsx(styles.header, styles[`level_${level}`]),\n range: [view.lineBlockAt(node.from).from],\n }),\n );\n}\n\nfunction getHeaderSelectionDecorations({\n decorations,\n node,\n view,\n forceActive,\n}: GetSelectionDecorationOptions) {\n const isHeader = node.name.startsWith(NAME_OF_HEADER);\n const isHeaderUnder = node.name.startsWith(NAME_OF_HEADER_UNDER);\n\n if (!isHeader && !isHeaderUnder) {\n return;\n }\n\n const mark = node.node.getChild(NAME_OF_HEADER_MARK);\n if (!mark) return;\n\n if (isHeader) {\n const line = view.lineBlockAt(mark.from);\n if (line.length < mark.to - mark.from + 1) return;\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [line.from, line.to])\n ) {\n decorations.push(utils.getHideDecoration({ range: [mark.from, mark.to + 1] }));\n }\n } else {\n const lineHeader = view.lineBlockAt(node.from);\n const lineMark = view.lineBlockAt(mark.from);\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [lineHeader.from, lineMark.to])\n ) {\n decorations.push(utils.getHideDecoration({ range: [lineMark.from, lineMark.to] }));\n }\n }\n}\n\nexport const headerDecorationPlugin: DecorationPlugin = {\n decorations: [getHeaderDecorations],\n selectionDecorations: [getHeaderSelectionDecorations],\n};\n","export const NAME_OF_HORIZONTAL = \"HorizontalRule\";\n","import clsx from \"clsx\";\nimport { CLASSES } from \"@/extensions/theme\";\nimport { utils } from \"@/lib\";\nimport type { DecorationPlugin, GetSelectionDecorationOptions } from \"../markdown-types\";\nimport styles from \"../styles.module.scss\";\nimport { NAME_OF_HORIZONTAL } from \"./horizontal-constants\";\n\nfunction getHorizontalSelectionDecoration({\n decorations,\n forceActive,\n node,\n view,\n}: GetSelectionDecorationOptions) {\n if (node.name !== NAME_OF_HORIZONTAL) return;\n\n const line = view.lineBlockAt(node.from);\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [line.from, line.to])\n ) {\n decorations.push(\n utils.getLineDecoration({\n style: clsx(styles.horizontal, CLASSES.horizontal),\n range: [line.from],\n }),\n );\n decorations.push(utils.getHideDecoration({ range: [node.from, node.to] }));\n }\n}\n\nexport const horizontalDecorationPlugin: DecorationPlugin = {\n selectionDecorations: [getHorizontalSelectionDecoration],\n};\n","import { StateEffect, StateField } from \"@codemirror/state\";\nimport { randomString } from \"@/lib/utils\";\nimport type { MarkdownState } from \"./markdown-types\";\n\nexport const openedImageEffect = StateEffect.define<string | undefined>();\nexport const openedLinkEffect = StateEffect.define<string | undefined>();\n\nexport const markdownState = StateField.define<MarkdownState>({\n create() {\n return {\n openedImage: undefined,\n openedLink: undefined,\n uniqueId: randomString(10),\n };\n },\n\n update(value, transaction) {\n const newValue = { ...value };\n\n for (const effect of transaction.effects) {\n if (effect.is(openedImageEffect)) newValue.openedImage = effect.value;\n if (effect.is(openedLinkEffect)) newValue.openedLink = effect.value;\n }\n\n return newValue;\n },\n});\n","export const NAME_OF_IMAGE = \"Image\";\nexport const CODE_OF_START_IMAGE_TEXT = 91; // [\nexport const CODE_OF_END_IMAGE_TEXT = 93; // ]\nexport const CODE_OF_START_IMAGE_URL = 40; // (\nexport const CODE_OF_END_IMAGE_URL = 41; // )\n","/* eslint-disable max-params */\nimport { type EditorView, WidgetType } from \"@codemirror/view\";\nimport { saveDispatch } from \"@/lib/utils\";\nimport { openedImageEffect } from \"../markdown-state\";\nimport styles from \"../styles.module.scss\";\nimport { CODE_OF_START_IMAGE_URL } from \"./image-constants\";\n\nconst IMAGE_NODES: Record<string, ImageContainerElement | undefined> = {};\nconst INTERVAL_DELAY = 10000;\nconst EXISTING_WIDGETS = new Set<string>();\nlet interval: NodeJS.Timeout | null = null;\ninterface ImageContainerElement extends HTMLSpanElement {\n clearListeners?: () => void;\n destroy?: () => void;\n image?: HTMLImageElement;\n}\n\nexport class ImageWidget extends WidgetType {\n constructor(\n private text: string,\n private link: string,\n private from: number,\n private to: number,\n private uniqueId: string,\n private fullLine: boolean,\n private imageSrcGetter: ((src: string) => string) | undefined,\n private view: EditorView,\n ) {\n super();\n }\n\n get key() {\n return `${this.link}:${this.text}:${this.uniqueId}:${this.from}:${this.to}`;\n }\n\n get src() {\n return this.imageSrcGetter ? this.imageSrcGetter(this.link) : this.link;\n }\n\n eq(widget: ImageWidget): boolean {\n const container = IMAGE_NODES[this.key];\n const image = container?.image;\n\n if (!image) return false;\n\n delete IMAGE_NODES[this.key];\n EXISTING_WIDGETS.delete(this.key);\n\n if (image.src !== widget.src) image.src = widget.src;\n if (image.alt !== widget.text) image.alt = widget.text;\n\n this.link = widget.link;\n this.text = widget.text;\n this.from = widget.from;\n this.to = widget.to;\n\n this.registerListeners(image);\n IMAGE_NODES[this.key] = container;\n EXISTING_WIDGETS.add(this.key);\n\n return true;\n }\n\n updateDOM(): boolean {\n return true;\n }\n\n toDOM(): HTMLElement {\n EXISTING_WIDGETS.add(this.key);\n let container = IMAGE_NODES[this.key];\n let image = container?.image;\n\n if (image && container) {\n if (image.src !== this.src) {\n image.src = this.src;\n }\n if (image.alt !== this.text) image.alt = this.text;\n\n return container;\n }\n\n image = document.createElement(\"img\");\n image.classList.add(styles.image);\n image.alt = this.text;\n image.src = this.src;\n image.style.maxWidth = \"100%\";\n\n container = document.createElement(\"span\") as ImageContainerElement;\n container.appendChild(image);\n container.image = image;\n if (this.fullLine) {\n container.style.width = \"100%\";\n container.style.display = \"inline-block\";\n }\n\n this.registerListeners(container);\n IMAGE_NODES[this.key] = container;\n\n interval ??= setInterval(garbageCollectorInterval, INTERVAL_DELAY);\n\n return container;\n }\n\n destroy(): void {\n EXISTING_WIDGETS.delete(this.key);\n }\n\n registerListeners(image: ImageContainerElement) {\n image.clearListeners?.();\n const abortController = new AbortController();\n image.addEventListener(\n \"mousedown\",\n (event) => handleClick(this.view, this.text, this.link, this.key, event),\n { signal: abortController.signal },\n );\n image.clearListeners = () => {\n abortController.abort();\n };\n image.destroy = () => {\n image.clearListeners?.();\n image.remove();\n };\n }\n}\n\n/** for disable cache */\nfunction garbageCollectorInterval() {\n for (const [key, node] of Object.entries(IMAGE_NODES)) {\n if (EXISTING_WIDGETS.has(key) || !node) continue;\n delete IMAGE_NODES[key];\n node.destroy?.();\n }\n\n if (Object.keys(IMAGE_NODES).length === 0 && interval) {\n clearInterval(interval);\n interval = null;\n }\n}\n\n/** recursively find the link text node in line */\nfunction getTextNode(\n text: string,\n link: string,\n key: string,\n line: ChildNode | Node | null | undefined,\n): ChildNode | null {\n if (!line) return null;\n const textNodeContainer = getTextNodeContainer(text, link, key, line);\n if (!textNodeContainer) return null;\n\n for (const node of Array.from(textNodeContainer.childNodes)) {\n if (isCorrectNode(text, link, node)) {\n return node;\n }\n }\n\n return null;\n}\n\nfunction getTextNodeContainer(\n text: string,\n link: string,\n key: string,\n line: ChildNode | Node | null | undefined,\n): HTMLElement | null {\n if (!line) return null;\n\n for (const node of Array.from(line.childNodes)) {\n if (node instanceof HTMLElement && node.getAttribute(\"data-id\") === key) {\n return node;\n }\n\n if (node.nodeType !== 3) {\n const inner = getTextNodeContainer(text, link, key, node);\n if (inner) return inner;\n }\n }\n\n return null;\n}\n\nfunction isCorrectNode(\n text: string,\n link: string,\n node: ChildNode | Node | null | undefined,\n): node is ChildNode | Node {\n if (!node) return false;\n\n const textContent = node?.textContent;\n\n return Boolean(\n node &&\n textContent &&\n node.nodeType === 3 &&\n textContent.includes(link) &&\n textContent.includes(text),\n );\n}\n\ntype SelectLinkOptions = {\n node: ChildNode | Node;\n selection: Selection;\n start?: number;\n link: string;\n};\nfunction selectLink({ link, node, selection, start }: SelectLinkOptions) {\n const startPosition = start ?? node.textContent?.indexOf?.(link) ?? 0;\n const endPosition = startPosition + link.length;\n\n if (startPosition === 0 && endPosition === 0) {\n const content = node.textContent;\n if (!content) return;\n let startPosition = 0;\n let pos = 0;\n\n while (pos < content.length) {\n if (content.codePointAt(pos) !== CODE_OF_START_IMAGE_URL) {\n pos++;\n } else {\n startPosition = pos + 1;\n break;\n }\n }\n\n const range = document.createRange();\n range.setStart(node, startPosition);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n\n return;\n }\n\n const range = document.createRange();\n range.setStart(node, startPosition);\n range.setEnd(node, endPosition);\n selection.removeAllRanges();\n selection.addRange(range);\n}\n\nfunction handleClick(\n view: EditorView | undefined,\n text: string,\n link: string,\n key: string,\n event: MouseEvent,\n) {\n const selection = window.getSelection();\n\n if (event.shiftKey || event.ctrlKey || event.altKey || event.metaKey) {\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n const target = event.target as HTMLImageElement;\n const parent = target.parentNode;\n let line: HTMLElement | null = parent as HTMLElement | null;\n\n /** recursively find line that contains link */\n while (line && !line.classList.contains(\"cm-line\")) {\n line = line.parentNode as HTMLElement | null;\n }\n\n const editor = Array.from(document.querySelectorAll(\".cm-editor\")).find((element) =>\n element.contains(target),\n );\n\n if (!selection || !editor || !parent) return;\n\n const textNode = getTextNode(text, link, key, line);\n\n if (textNode) {\n return void selectLink({ selection, link, node: textNode });\n }\n\n saveDispatch(() => {\n if (!view) return;\n view.dispatch(view.state.update({ effects: openedImageEffect.of(key) }));\n\n const textNode = getTextNode(text, link, key, line);\n if (textNode) {\n selectLink({ selection, link, node: textNode });\n }\n\n requestAnimationFrame(() => {\n saveDispatch(() => {\n if (view) view.dispatch(view.state.update({ effects: openedImageEffect.of(undefined) }));\n });\n });\n });\n\n return false;\n}\n","import { type EditorView } from \"@codemirror/view\";\nimport type { SyntaxNodeRef } from \"@lezer/common\";\nimport { utils } from \"@/lib\";\nimport { markdownState } from \"../markdown-state\";\nimport type {\n DecorationPlugin,\n GetDecorationOptions,\n GetSelectionDecorationOptions,\n} from \"../markdown-types\";\nimport {\n CODE_OF_END_IMAGE_TEXT,\n CODE_OF_END_IMAGE_URL,\n CODE_OF_START_IMAGE_TEXT,\n CODE_OF_START_IMAGE_URL,\n NAME_OF_IMAGE,\n} from \"./image-constants\";\nimport { ImageWidget } from \"./image-widget\";\n\nfunction getImageDecorations({ decorations, node, view, settings }: GetDecorationOptions) {\n if (node.name !== NAME_OF_IMAGE) {\n return;\n }\n\n const { text, url } = parseInfo(view, node);\n const uniqueId = view.state.field(markdownState).uniqueId;\n const line = view.lineBlockAt(node.from);\n const fullLine = line.from === node.from && line.to === node.to;\n\n decorations.push(\n utils.getWidgetDecorationOptions({\n range: [node.to],\n widget: new ImageWidget(\n text,\n url,\n node.from,\n node.to,\n uniqueId,\n fullLine,\n settings.imageSrcGetter,\n view,\n ),\n }),\n );\n}\n\nfunction getImageSelectionDecorations({\n decorations,\n node,\n view,\n forceActive,\n}: GetSelectionDecorationOptions) {\n if (node.name !== NAME_OF_IMAGE) {\n return;\n }\n\n const { text, url } = parseInfo(view, node);\n const openedImage = view.state.field(markdownState).openedImage;\n const uniqueId = view.state.field(markdownState).uniqueId;\n const key = `${url}:${text}:${uniqueId}:${node.from}:${node.to}`;\n const isOpened = openedImage && openedImage === key;\n\n if (isOpened) {\n return void decorations.push(\n utils.getMarkDecoration({\n range: [node.from, node.to],\n attributes: {\n \"data-id\": key,\n },\n }),\n );\n }\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [node.from, node.to])\n ) {\n decorations.push(utils.getHideDecoration({ range: [node.from, node.to] }));\n } else {\n decorations.push(\n utils.getMarkDecoration({\n range: [node.from, node.to],\n attributes: {\n \"data-id\": key,\n },\n }),\n );\n }\n}\n\nfunction parseInfo(view: EditorView, node: SyntaxNodeRef) {\n const content = view.state.doc.sliceString(node.from, node.to);\n const textCoordinates = { from: -1, to: -1 };\n const urlCoordinates = { from: -1, to: -1 };\n let pos = -1;\n\n while (pos < content.length) {\n pos++;\n const code = content.charCodeAt(pos);\n\n if (textCoordinates.from === -1 && code === CODE_OF_START_IMAGE_TEXT)\n textCoordinates.from = pos + 1;\n else if (\n urlCoordinates.from === -1 &&\n textCoordinates.to !== -1 &&\n code === CODE_OF_START_IMAGE_URL\n )\n urlCoordinates.from = pos + 1;\n else if (\n textCoordinates.from !== -1 &&\n textCoordinates.to === -1 &&\n code === CODE_OF_END_IMAGE_TEXT\n )\n textCoordinates.to = pos;\n else if (\n urlCoordinates.from !== -1 &&\n urlCoordinates.to === -1 &&\n code === CODE_OF_END_IMAGE_URL\n )\n urlCoordinates.to = pos;\n }\n\n const text = content.substring(textCoordinates.from, textCoordinates.to);\n const url = content.substring(urlCoordinates.from, urlCoordinates.to);\n\n return { text, url };\n}\n\nexport const imageDecorationPlugin: DecorationPlugin = {\n selectionDecorations: [getImageSelectionDecorations],\n decorations: [getImageDecorations],\n};\n","export const NAME_OF_ITALIC = \"Emphasis\";\nexport const LIST_OF_ITALIC_MARKS = new Set([95, 42]); // _ *\n","import { utils } from \"@/lib\";\nimport type {\n DecorationPlugin,\n GetDecorationOptions,\n GetSelectionDecorationOptions,\n} from \"../markdown-types\";\nimport styles from \"../styles.module.scss\";\nimport { LIST_OF_ITALIC_MARKS, NAME_OF_ITALIC } from \"./italic-constants\";\n\nfunction getItalicDecorations({ decorations, node }: GetDecorationOptions) {\n if (node.name !== NAME_OF_ITALIC) {\n return;\n }\n\n decorations.push(\n utils.getMarkDecoration({\n style: styles.italic,\n range: [node.from, node.to],\n }),\n );\n}\n\nfunction getItalicSelectionDecorations({\n decorations,\n node,\n view,\n forceActive,\n settings,\n}: GetSelectionDecorationOptions) {\n if (node.name !== NAME_OF_ITALIC) {\n return;\n }\n\n if (checkIsSeveralEmphasis({ decorations, node, view, forceActive, settings })) {\n return void splitEmphasis({ decorations, node, view, forceActive, settings });\n }\n\n let step = 1;\n const startText = view.state.doc.sliceString(node.from, node.from + 3);\n if (\n LIST_OF_ITALIC_MARKS.has(startText.charCodeAt(0)) &&\n LIST_OF_ITALIC_MARKS.has(startText.charCodeAt(1)) &&\n LIST_OF_ITALIC_MARKS.has(startText.charCodeAt(2))\n )\n step = 3;\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [node.from, node.to])\n ) {\n decorations.push(utils.getHideDecoration({ range: [node.from, node.from + step] }));\n decorations.push(utils.getHideDecoration({ range: [node.to - step, node.to] }));\n }\n}\n\n/** Fixed wide italic + italic */\nfunction checkIsSeveralEmphasis({ node, view }: GetSelectionDecorationOptions) {\n let marks = 0;\n let pos = 0;\n\n const text = view.state.doc.sliceString(node.from, node.to);\n\n while (pos <= text.length) {\n if (LIST_OF_ITALIC_MARKS.has(text.charCodeAt(pos))) marks++;\n pos++;\n }\n\n if (marks === 8) return true;\n\n return false;\n}\n\nfunction splitEmphasis({\n decorations,\n node,\n view,\n forceActive,\n settings,\n}: GetSelectionDecorationOptions) {\n const text = view.state.doc.sliceString(node.from, node.to);\n let marks = 0;\n let pos = 0;\n\n while (pos <= text.length && marks < 6) {\n if (LIST_OF_ITALIC_MARKS.has(text.charCodeAt(pos))) marks++;\n pos++;\n }\n\n getItalicSelectionDecorations({\n decorations,\n view,\n node: { ...node, name: node.name, from: node.from, to: node.from + pos },\n forceActive,\n settings,\n });\n getItalicSelectionDecorations({\n decorations,\n view,\n node: { ...node, name: node.name, from: node.from + pos, to: node.to },\n forceActive,\n settings,\n });\n}\n\nexport const italicDecorationPlugin: DecorationPlugin = {\n decorations: [getItalicDecorations],\n selectionDecorations: [getItalicSelectionDecorations],\n};\n","export const NAME_OF_LINK = \"Link\";\nexport const CODE_OF_START_LINK_TEXT = 91; // [\nexport const CODE_OF_END_LINK_TEXT = 93; // ]\nexport const CODE_OF_START_LINK_URL = 40; // (\nexport const CODE_OF_END_LINK_URL = 41; // )\n\nexport const NAME_OF_AUTO_LINK = \"Autolink\";\n\nexport const CODE_OF_LINK_LABEL_END = 58; // :\n","import { utils } from \"@/lib\";\nimport { type GetSelectionDecorationOptions } from \"../markdown-types\";\nimport styles from \"../styles.module.scss\";\nimport { CODE_OF_LINK_LABEL_END } from \"./link-constants\";\n\n// [label]:\n\nexport function getLinkLabelSelectionDecoration({\n decorations,\n node,\n view,\n forceActive,\n}: GetSelectionDecorationOptions) {\n if (view.state.doc.sliceString(node.to, node.to + 1).charCodeAt(0) !== CODE_OF_LINK_LABEL_END)\n return;\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [node.from, node.to + 1])\n ) {\n decorations.push(\n utils.getMarkDecoration({\n range: [node.from, node.to + 1],\n style: styles.link__label,\n }),\n );\n decorations.push(utils.getHideDecoration({ range: [node.from, node.from + 1] }));\n decorations.push(utils.getHideDecoration({ range: [node.to - 1, node.to + 1] }));\n }\n}\n","/* eslint-disable max-params */\nimport { type EditorView, WidgetType } from \"@codemirror/view\";\nimport { CLASSES } from \"@/extensions/theme\";\nimport { saveDispatch } from \"@/lib/utils\";\nimport { openedLinkEffect } from \"../markdown-state\";\nimport styles from \"../styles.module.scss\";\nimport { CODE_OF_START_LINK_URL } from \"./link-constants\";\n\nconst LINK_NODES: Record<string, AnchorElement | undefined> = {};\n\ninterface AnchorElement extends HTMLAnchorElement {\n clearListeners?: () => void;\n destroy?: () => void;\n}\nexport class LinkWidget extends WidgetType {\n constructor(\n private text: string,\n private link: string,\n private from: number,\n private to: number,\n private uniqueId: string,\n private view: EditorView,\n ) {\n super();\n }\n\n get key() {\n return `${this.link}:${this.text}:${this.uniqueId}:${this.from}:${this.to}`;\n }\n\n eq(widget: LinkWidget): boolean {\n const anchor = LINK_NODES[this.key];\n if (!anchor) return false;\n delete LINK_NODES[this.key];\n\n if (anchor.href !== widget.link) anchor.href = widget.link;\n if (anchor.textContent !== widget.text) anchor.textContent = widget.text;\n\n this.link = widget.link;\n this.text = widget.text;\n this.from = widget.from;\n this.to = widget.to;\n\n this.registerListeners(anchor);\n LINK_NODES[this.key] = anchor;\n\n return true;\n }\n\n toDOM(): HTMLElement {\n const anchor = document.createElement(\"a\") as AnchorElement;\n anchor.classList.add(styles.link);\n anchor.classList.add(CLASSES.link);\n\n anchor.target = \"_blank\";\n anchor.textContent = this.text;\n anchor.href = this.link;\n\n this.registerListeners(anchor);\n\n LINK_NODES[this.key] = anchor;\n\n return anchor;\n }\n\n destroy(dom: AnchorElement): void {\n delete LINK_NODES[this.key];\n dom.destroy?.();\n }\n\n registerListeners(anchor: AnchorElement) {\n anchor.clearListeners?.();\n const abortController = new AbortController();\n anchor.addEventListener(\n \"mousedown\",\n (event) => handleClick(this.view, this.text, this.link, this.key, event),\n { signal: abortController.signal },\n );\n anchor.addEventListener(\"click\", (event) => event.preventDefault(), {\n signal: abortController.signal,\n });\n anchor.clearListeners = () => {\n abortController.abort();\n };\n anchor.destroy = () => {\n anchor.clearListeners?.();\n anchor.remove();\n };\n }\n}\n\n/** recursively find the link text node in line */\nfunction getTextNode(\n text: string,\n link: string,\n key: string,\n line: ChildNode | Node | null | undefined,\n): ChildNode | null {\n if (!line) return null;\n const textNodeContainer = getTextNodeContainer(text, link, key, line);\n if (!textNodeContainer) return null;\n\n for (const node of Array.from(textNodeContainer.childNodes)) {\n if (isCorrectNode(text, link, node)) {\n return node;\n }\n }\n\n return null;\n}\n\nfunction getTextNodeContainer(\n text: string,\n link: string,\n key: string,\n line: ChildNode | Node | null | undefined,\n): HTMLElement | null {\n if (!line) return null;\n\n for (const node of Array.from(line.childNodes)) {\n if (node instanceof HTMLElement && node.getAttribute(\"data-id\") === key) {\n return node;\n }\n\n if (node.nodeType !== 3) {\n const inner = getTextNodeContainer(text, link, key, node);\n if (inner) return inner;\n }\n }\n\n return null;\n}\n\nfunction isCorrectNode(\n text: string,\n link: string,\n node: ChildNode | Node | null | undefined,\n): node is ChildNode | Node {\n if (!node) return false;\n\n const textContent = node?.textContent;\n\n return Boolean(\n node &&\n textContent &&\n node.nodeType === 3 &&\n textContent.includes(link) &&\n textContent.includes(text),\n );\n}\n\ntype SelectLinkOptions = {\n node: ChildNode | Node;\n selection: Selection;\n start?: number;\n link: string;\n};\nfunction selectLink({ link, node, selection, start }: SelectLinkOptions) {\n const startPosition = start ?? node.textContent?.indexOf?.(link) ?? 0;\n const endPosition = startPosition + link.length;\n\n if (startPosition === 0 && endPosition === 0) {\n const content = node.textContent;\n if (!content) return;\n let startPosition = 0;\n let pos = 0;\n\n while (pos < content.length) {\n if (content.codePointAt(pos) !== CODE_OF_START_LINK_URL) {\n pos++;\n } else {\n startPosition = pos + 1;\n break;\n }\n }\n\n const range = document.createRange();\n range.setStart(node, startPosition);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n\n return;\n }\n\n const range = document.createRange();\n range.setStart(node, startPosition);\n range.setEnd(node, endPosition);\n selection.removeAllRanges();\n selection.addRange(range);\n}\n\nfunction handleClick(view: EditorView, text: string, link: string, key: string, event: MouseEvent) {\n /** open the link if has special key or the view is readonly */\n const contentEditable = view.contentDOM.getAttribute(\"contenteditable\");\n const forceActive = !contentEditable || contentEditable === \"false\";\n\n if (event.shiftKey || event.ctrlKey || event.altKey || event.metaKey || forceActive) {\n if (event.type === \"mousedown\") {\n const target = event.target as HTMLAnchorElement;\n window.open(target.href, \"_blank\");\n }\n\n return;\n }\n\n event.stopPropagation();\n event.preventDefault();\n const target = event.target as HTMLImageElement;\n const parent = target.parentNode;\n let line: HTMLElement | null = parent as HTMLElement | null;\n\n /** recursively find line that contains link */\n while (line && !line.classList.contains(\"cm-line\")) {\n line = line.parentNode as HTMLElement | null;\n }\n\n const editor = Array.from(document.querySelectorAll(\".cm-editor\")).find((element) =>\n element.contains(target),\n );\n const selection = window.getSelection();\n\n if (!selection || !editor || !parent) return;\n\n const textNode = getTextNode(text, link, key, line);\n\n if (textNode) {\n return void selectLink({ selection, link, node: textNode });\n }\n\n saveDispatch(() => {\n if (!view) return;\n\n view.dispatch(view.state.update({ effects: openedLinkEffect.of(key) }));\n\n const textNode = getTextNode(text, link, key, line);\n if (textNode) {\n selectLink({ selection, link, node: textNode });\n }\n\n requestAnimationFrame(() => {\n saveDispatch(() => {\n if (view) view.dispatch(view.state.update({ effects: openedLinkEffect.of(undefined) }));\n });\n });\n });\n\n return false;\n}\n","import { utils } from \"@/lib\";\nimport { markdownState } from \"../markdown-state\";\nimport type { DecorationPlugin, GetSelectionDecorationOptions } from \"../markdown-types\";\nimport {\n CODE_OF_END_LINK_TEXT,\n CODE_OF_END_LINK_URL,\n CODE_OF_START_LINK_TEXT,\n CODE_OF_START_LINK_URL,\n NAME_OF_LINK,\n} from \"./link-constants\";\nimport { getLinkLabelSelectionDecoration } from \"./link-label-decoration\";\nimport { LinkWidget } from \"./link-widget\";\n\nfunction getLinkSelectionDecorations({\n decorations,\n node,\n view,\n forceActive,\n settings,\n}: GetSelectionDecorationOptions) {\n if (node.name !== NAME_OF_LINK) {\n return;\n }\n\n const content = view.state.doc.sliceString(node.from, node.to);\n const textCoordinates = { from: -1, to: -1 };\n const urlCoordinates = { from: -1, to: -1 };\n let pos = -1;\n\n while (pos < content.length) {\n pos++;\n const code = content.charCodeAt(pos);\n\n if (textCoordinates.from === -1 && code === CODE_OF_START_LINK_TEXT)\n textCoordinates.from = pos + 1;\n else if (\n urlCoordinates.from === -1 &&\n textCoordinates.to !== -1 &&\n code === CODE_OF_START_LINK_URL\n )\n urlCoordinates.from = pos + 1;\n else if (\n textCoordinates.from !== -1 &&\n textCoordinates.to === -1 &&\n code === CODE_OF_END_LINK_TEXT\n )\n textCoordinates.to = pos;\n else if (\n urlCoordinates.from !== -1 &&\n urlCoordinates.to === -1 &&\n code === CODE_OF_END_LINK_URL\n )\n urlCoordinates.to = pos;\n }\n\n if (urlCoordinates.from === -1 || urlCoordinates.to === -1)\n return void getLinkLabelSelectionDecoration({ decorations, forceActive, node, view, settings });\n\n const text = content.substring(textCoordinates.from, textCoordinates.to);\n const url = content.substring(urlCoordinates.from, urlCoordinates.to);\n\n const openedLink = view.state.field(markdownState).openedLink;\n const uniqueId = view.state.field(markdownState).uniqueId;\n const key = `${url}:${text}:${uniqueId}:${node.from}:${node.to}`;\n const isOpened = openedLink && openedLink === key;\n\n if (isOpened) {\n return void decorations.push(\n utils.getMarkDecoration({\n range: [node.from, node.to],\n attributes: {\n \"data-id\": key,\n },\n }),\n );\n }\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [node.from, node.to])\n ) {\n decorations.push(\n utils.getReplaceDecoration({\n range: [node.from, node.to],\n widget: new LinkWidget(text, url, node.from, node.to, uniqueId, view),\n }),\n );\n } else {\n decorations.push(\n utils.getMarkDecoration({\n range: [node.from, node.to],\n attributes: {\n \"data-id\": key,\n },\n }),\n );\n }\n}\n\nexport const linkDecorationPlugin: DecorationPlugin = {\n selectionDecorations: [getLinkSelectionDecorations],\n};\n","import { utils } from \"@/lib\";\nimport { markdownState } from \"../markdown-state\";\nimport type { DecorationPlugin, GetSelectionDecorationOptions } from \"../markdown-types\";\nimport { NAME_OF_AUTO_LINK } from \"./link-constants\";\nimport { LinkWidget } from \"./link-widget\";\n\nfunction getAutoLinkSelectionDecorations({\n decorations,\n node,\n view,\n forceActive,\n}: GetSelectionDecorationOptions) {\n if (node.name !== NAME_OF_AUTO_LINK) return;\n\n const url = view.state.doc.sliceString(node.from + 1, node.to - 1);\n const openedLink = view.state.field(markdownState).openedLink;\n const uniqueId = view.state.field(markdownState).uniqueId;\n const key = `${url}:${url}:${uniqueId}:${node.from}:${node.to}`;\n const isOpened = openedLink && openedLink === key;\n\n if (isOpened) {\n return void decorations.push(\n utils.getMarkDecoration({\n range: [node.from, node.to],\n attributes: {\n \"data-id\": key,\n },\n }),\n );\n }\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [node.from, node.to])\n ) {\n decorations.push(\n utils.getReplaceDecoration({\n range: [node.from, node.to],\n widget: new LinkWidget(url, url, node.from, node.to, uniqueId, view),\n }),\n );\n } else {\n decorations.push(\n utils.getMarkDecoration({\n range: [node.from, node.to],\n attributes: {\n \"data-id\": key,\n },\n }),\n );\n }\n}\n\nexport const autoLinkDecorationPlugin: DecorationPlugin = {\n selectionDecorations: [getAutoLinkSelectionDecorations],\n};\n","export const NAME_OF_LIST = \"ListMark\";\nexport const NAME_OF_TODO = \"Task\";\nexport const LIST_OF_LIST_MARKS = new Set([42, 43, 45]); // * + -\nexport const CODE_OF_ORDERED_LIST_MARK = 46; // .\n","import { WidgetType } from \"@codemirror/view\";\nimport { CLASSES } from \"@/extensions/theme\";\nimport styles from \"../styles.module.scss\";\nimport { CODE_OF_ORDERED_LIST_MARK, LIST_OF_LIST_MARKS } from \"./list-constants\";\n\nexport class ListPointWidget extends WidgetType {\n constructor(\n private readonly mark: string,\n private readonly lastCodePoint: number,\n ) {\n super();\n }\n\n toDOM(): HTMLElement {\n const span = document.createElement(\"span\");\n span.classList.add(styles.list);\n span.textContent = this.mark;\n if (LIST_OF_LIST_MARKS.has(this.lastCodePoint)) {\n span.classList.add(styles.common);\n span.classList.add(CLASSES.listCommon);\n }\n if (CODE_OF_ORDERED_LIST_MARK === this.lastCodePoint) {\n span.classList.add(styles.ordered);\n }\n\n return span;\n }\n}\n","import { utils } from \"@/lib\";\nimport type { DecorationPlugin, GetSelectionDecorationOptions } from \"../markdown-types\";\nimport {\n CODE_OF_ORDERED_LIST_MARK,\n LIST_OF_LIST_MARKS,\n NAME_OF_LIST,\n NAME_OF_TODO,\n} from \"./list-constants\";\nimport { ListPointWidget } from \"./list-widget\";\n\nfunction getListSelectionDecorations({\n decorations,\n node,\n view,\n forceActive,\n}: GetSelectionDecorationOptions) {\n if (node.name !== NAME_OF_LIST) {\n return;\n }\n\n const content = view.state.doc.sliceString(node.from, node.to);\n const lastCodePoint = content.codePointAt(content.length - 1) ?? 0;\n if (!LIST_OF_LIST_MARKS.has(lastCodePoint) && CODE_OF_ORDERED_LIST_MARK !== lastCodePoint) {\n return;\n }\n\n const nextSibling = node.node.nextSibling;\n if (nextSibling && nextSibling.name === NAME_OF_TODO) {\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [node.from, nextSibling.from + 3])\n ) {\n decorations.push(utils.getHideDecoration({ range: [node.from, nextSibling.from] }));\n }\n\n return;\n }\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [node.from, node.to])\n ) {\n decorations.push(\n utils.getReplaceDecoration({\n range: [node.from, node.to],\n widget: new ListPointWidget(content, lastCodePoint),\n }),\n );\n }\n}\n\nexport const listDecorationPlugin: DecorationPlugin = {\n selectionDecorations: [getListSelectionDecorations],\n};\n","export const CODE_OF_START_MENTION = \"@\".codePointAt(0); // @\nexport const CODE_OF_SPACE = \" \".codePointAt(0);\nexport const CODE_OF_LINE_BREAK = \"\\n\".codePointAt(0);\nexport const NAME_OF_MENTION = \"Mention\";\n","import clsx from \"clsx\";\nimport { CLASSES } from \"@/extensions/theme\";\nimport { utils } from \"@/lib\";\nimport type {\n DecorationPlugin,\n GetDecorationOptions,\n GetSelectionDecorationOptions,\n} from \"../markdown-types\";\nimport styles from \"../styles.module.scss\";\nimport { NAME_OF_MENTION } from \"./mention-constants\";\n\nfunction getMentionDecorations({ decorations, node }: GetDecorationOptions) {\n if (node.name !== NAME_OF_MENTION) {\n return;\n }\n\n decorations.push(\n utils.getMarkDecoration({\n style: clsx(styles.mention, CLASSES.mention),\n range: [node.from, node.to],\n }),\n );\n}\n\nfunction getMentionSelectionDecorations({\n decorations,\n node,\n view,\n forceActive,\n}: GetSelectionDecorationOptions) {\n if (node.name !== NAME_OF_MENTION) {\n return;\n }\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [node.from, node.to])\n ) {\n decorations.push(utils.getHideDecoration({ range: [node.from, node.from + 1] }));\n }\n}\n\nexport const mentionDecorationPlugin: DecorationPlugin = {\n decorations: [getMentionDecorations],\n selectionDecorations: [getMentionSelectionDecorations],\n};\n","export const NAME_OF_STRIKE_THROUGH = \"Strikethrough\";\n","import { utils } from \"@/lib\";\nimport type {\n DecorationPlugin,\n GetDecorationOptions,\n GetSelectionDecorationOptions,\n} from \"../markdown-types\";\nimport styles from \"../styles.module.scss\";\nimport { NAME_OF_STRIKE_THROUGH } from \"./strike-through-constants\";\n\nfunction getStrikeThroughDecorations({ decorations, node }: GetDecorationOptions) {\n if (node.name !== NAME_OF_STRIKE_THROUGH) {\n return;\n }\n\n decorations.push(\n utils.getMarkDecoration({\n style: styles[\"strike-through\"],\n range: [node.from, node.to],\n }),\n );\n}\n\nfunction getStrikeThroughSelectionDecorations({\n decorations,\n node,\n view,\n forceActive,\n}: GetSelectionDecorationOptions) {\n if (node.name !== NAME_OF_STRIKE_THROUGH) {\n return;\n }\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [node.from, node.to])\n ) {\n decorations.push(utils.getHideDecoration({ range: [node.from, node.from + 2] }));\n decorations.push(utils.getHideDecoration({ range: [node.to - 2, node.to] }));\n }\n}\n\nexport const strikeThroughDecorationPlugin: DecorationPlugin = {\n decorations: [getStrikeThroughDecorations],\n selectionDecorations: [getStrikeThroughSelectionDecorations],\n};\n","export const NAME_OF_TODO = \"Task\";\nexport const NAME_OF_LIST_MARK = \"ListMark\";\nexport const LIST_OF_TODO_MARKS = new Set([120, 1093]); // x\n","import { type ChangeSpec } from \"@codemirror/state\";\nimport { type EditorView, WidgetType } from \"@codemirror/view\";\nimport { saveDispatch } from \"@/lib/utils\";\nimport styles from \"../styles.module.scss\";\n\nexport class TodoWidget extends WidgetType {\n view: EditorView | undefined;\n\n constructor(\n public checked: boolean,\n private readonly position: number,\n ) {\n super();\n }\n\n onClick(event: MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n\n const target = event.target as HTMLInputElement;\n const change: ChangeSpec = {\n from: this.position,\n to: this.position + 1,\n insert: this.checked ? \" \" : \"x\",\n };\n\n saveDispatch(() => {\n if (!this.view) return;\n\n this.view.dispatch(this.view.state.update({ changes: change }));\n });\n\n this.checked = !this.checked;\n target.checked = this.checked;\n }\n\n onBlock(event: MouseEvent) {\n event.stopPropagation();\n event.preventDefault();\n }\n\n toDOM(view: EditorView): HTMLElement {\n const span = document.createElement(\"span\");\n span.classList.add(styles.todo);\n this.view = view;\n\n const checkbox = document.createElement(\"input\");\n checkbox.type = \"checkbox\";\n checkbox.checked = this.checked;\n\n checkbox.addEventListener(\"click\", this.onBlock.bind(this));\n checkbox.addEventListener(\"mousedown\", this.onClick.bind(this));\n\n span.appendChild(checkbox);\n\n return span;\n }\n\n destroy(dom: HTMLElement): void {\n dom.removeEventListener(\"click\", this.onBlock.bind(this));\n dom.removeEventListener(\"mousedown\", this.onClick.bind(this));\n }\n}\n","import { utils } from \"@/lib\";\nimport type { DecorationPlugin, GetSelectionDecorationOptions } from \"../markdown-types\";\nimport styles from \"../styles.module.scss\";\nimport { LIST_OF_TODO_MARKS, NAME_OF_LIST_MARK, NAME_OF_TODO } from \"./todo-constants\";\nimport { TodoWidget } from \"./todo-widget\";\n\nfunction getTodoSelectionDecoration({\n decorations,\n node,\n view,\n forceActive,\n}: GetSelectionDecorationOptions) {\n if (node.name !== NAME_OF_TODO) return;\n\n const prevSibling = node.node.prevSibling;\n if (!prevSibling || prevSibling.name !== NAME_OF_LIST_MARK) return;\n\n const isChecked = LIST_OF_TODO_MARKS.has(\n view.state.doc.sliceString(node.from + 1, node.from + 2).codePointAt(0) ?? 0,\n );\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [prevSibling.from, node.from + 3])\n ) {\n decorations.push(\n utils.getReplaceDecoration({\n range: [node.from, node.from + 3],\n widget: new TodoWidget(isChecked, node.from + 1),\n }),\n );\n }\n\n if (isChecked) {\n const line = view.lineBlockAt(node.from);\n\n if (\n forceActive ||\n !view.hasFocus ||\n !utils.isInRange(view.state.selection.ranges, [line.from, line.to])\n )\n decorations.push(\n utils.getMarkDecoration({ style: styles.todo__checked, range: [node.from + 4, node.to] }),\n );\n }\n}\n\nexport const todoDecorationPlugin: DecorationPlugin = {\n selectionDecorations: [getTodoSelectionDecoration],\n};\n","import { syntaxTree } from \"@codemirror/language\";\nimport { type Range } from \"@codemirror/state\";\nimport {\n Decoration,\n type DecorationSet,\n type EditorView,\n ViewPlugin,\n type ViewUpdate,\n} from \"@codemirror/view\";\nimport { saveDispatch } from \"@/lib/utils\";\nimport { blockquoteDecorationPlugin } from \"./blockquote\";\nimport { boldDecorationPlugin } from \"./bold\";\nimport { codeDecorationPlugin } from \"./code\";\nimport { headerDecorationPlugin } from \"./header\";\nimport { horizontalDecorationPlugin } from \"./horizontal\";\nimport { imageDecorationPlugin } from \"./image/image-decoration\";\nimport { italicDecorationPlugin } from \"./italic\";\nimport { autoLinkDecorationPlugin, linkDecorationPlugin } from \"./link\";\nimport { listDecorationPlugin } from \"./list\";\nimport type {\n DecorationPlugin,\n GetDecorationFunction,\n GetSelectionDecorationFunction,\n MarkdownDecorationSettings,\n} from \"./markdown-types\";\nimport { mentionDecorationPlugin } from \"./mention/mention-decoration\";\nimport { strikeThroughDecorationPlugin } from \"./strike-through\";\nimport { todoDecorationPlugin } from \"./todo\";\n\nconst decorationPlugins: DecorationPlugin[] = [\n blockquoteDecorationPlugin,\n boldDecorationPlugin,\n codeDecorationPlugin,\n headerDecorationPlugin,\n horizontalDecorationPlugin,\n imageDecorationPlugin,\n italicDecorationPlugin,\n linkDecorationPlugin,\n listDecorationPlugin,\n autoLinkDecorationPlugin,\n mentionDecorationPlugin,\n strikeThroughDecorationPlugin,\n todoDecorationPlugin,\n];\n\nlet decorationFunctions: GetDecorationFunction[] = [];\nlet selectionDecorationFunctions: GetSelectionDecorationFunction[] = [];\n\nfor (const plugin of decorationPlugins) {\n if (plugin.decorations) decorationFunctions = decorationFunctions.concat(plugin.decorations);\n if (plugin.selectionDecorations)\n selectionDecorationFunctions = selectionDecorationFunctions.concat(plugin.selectionDecorations);\n}\n\nconst SKIP_MARKS = new Set([\n \"Document\",\n \"Paragraph\",\n \"EmphasisMark\",\n \"Blockquote\",\n \"StrikethroughMark\",\n \"BulletList\",\n \"OrderedList\",\n \"ListItem\",\n \"LinkMark\",\n \"URL\",\n \"CodeMark\",\n \"CodeInfo\",\n \"CodeText\",\n \"HeaderMark\",\n \"TaskMarker\",\n]);\n\nfunction createDecorationsGetter(settings: MarkdownDecorationSettings) {\n let markdownDecorationsCache: Range<Decoration>[] = [];\n let markdownSelectionDecorationsCache: Range<Decoration>[] = [];\n\n function getDecorations(view: EditorView, isChanged: boolean, mouseReleased: boolean) {\n const processDecorations = isChanged;\n const processSelectionDecorations = isChanged || mouseReleased;\n const decorations: Range<Decoration>[] = processDecorations ? [] : markdownDecorationsCache;\n const selectionDecorations: Range<Decoration>[] = processSelectionDecorations\n ? []\n : markdownSelectionDecorationsCache;\n\n const contentEditable = view.contentDOM.getAttribute(\"contenteditable\");\n const isReadonly = !contentEditable || contentEditable === \"false\";\n\n for (const { from: fromVisible, to: toVisible } of view.visibleRanges) {\n syntaxTree(view.state).iterate({\n from: fromVisible,\n to: toVisible,\n enter: (node) => {\n if (SKIP_MARKS.has(node.name)) return;\n /** Decoration by change content */\n if (processDecorations)\n decorationFunctions.forEach((funk) => funk({ decorations, node, view, settings }));\n\n /** Decoration by selection content */\n if (processSelectionDecorations)\n selectionDecorationFunctions.forEach((funk) =>\n funk({\n decorations: selectionDecorations,\n node,\n view,\n forceActive: isReadonly,\n settings,\n }),\n );\n },\n });\n }\n\n if (processDecorations) {\n markdownDecorationsCache = decorations;\n }\n if (processSelectionDecorations) {\n markdownSelectionDecorationsCache = selectionDecorations;\n }\n\n return Decoration.set([...decorations, ...selectionDecorations], true);\n }\n\n return getDecorations;\n}\n\nexport const markdownDecorationPlugin = (settings: MarkdownDecorationSettings) => {\n return ViewPlugin.fromClass(\n class DecorationMarkdown {\n decorations: DecorationSet;\n\n mouseReleased: boolean = true;\n\n dom: HTMLElement;\n\n view: EditorView;\n\n decorationGetter: (\n view: EditorView,\n isChanged: boolean,\n mouseReleased: boolean,\n ) => DecorationSet;\n\n constructor(view: EditorView) {\n this.decorationGetter = createDecorationsGetter(settings);\n this.decorations = this.decorationGetter(view, true, this.mouseReleased);\n this.dom = view.dom;\n this.view = view;\n document.addEventListener(\"mousedown\", this.onMouseDown.bind(this));\n document.addEventListener(\"mouseup\", this.onMouseUp.bind(this));\n }\n\n update(update: ViewUpdate) {\n const isDocumentChanged =\n update.docChanged ||\n update.viewportChanged ||\n syntaxTree(update.startState) != syntaxTree(update.state);\n this.decorations = this.decorationGetter(\n update.view,\n isDocumentChanged,\n this.mouseReleased,\n );\n }\n\n destroy() {\n document.removeEventListener(\"mousedown\", this.onMouseDown.bind(this));\n document.removeEventListener(\"mouseup\", this.onMouseUp.bind(this));\n }\n\n onMouseDown(this: DecorationMarkdown) {\n this.mouseReleased = false;\n }\n\n onMouseUp(this: DecorationMarkdown) {\n this.mouseReleased = true;\n if (this.view.state.selection.ranges[0].from !== this.view.state.selection.ranges[0].to) {\n saveDispatch(() => {\n this.view.dispatch(this.view.state.update({}));\n });\n }\n }\n },\n {\n decorations: (plugin) => plugin.decorations,\n },\n );\n};\n","import { history } from \"@codemirror/commands\";\nimport { type Extension } from \"@codemirror/state\";\nimport { EditorView, drawSelection } from \"@codemirror/view\";\nimport { ReadonlyCompartment, VimModeCompartment } from \"../compartments\";\n\nexport type InitSettingsOptions = {\n readonly?: boolean;\n vimMode?: boolean;\n};\n\nexport async function initSettings({\n readonly,\n vimMode,\n}: InitSettingsOptions): Promise<Extension[]> {\n let vimExtension: Extension = [];\n if (vimMode) {\n const { vim } = await import(\"@replit/codemirror-vim\");\n vimExtension = [vim({ status: true }), drawSelection()];\n }\n\n return [\n ReadonlyCompartment.of(EditorView.editable.of(!readonly)),\n VimModeCompartment.of(vimExtension),\n history(),\n ];\n}\n","import type { Extension } from \"@codemirror/state\";\nimport type { WebsocketProvider } from \"y-websocket\";\nimport type { Text } from \"yjs\";\nimport { type InitAutoCompleteOptions, initAutoComplete } from \"./auto-completes\";\nimport { type InitKeyMapsOptions, initKeyMaps } from \"./keymaps\";\nimport { type InitListenersOptions, initListeners } from \"./listeners\";\nimport { type InitMarkdownOptions } from \"./markdown\";\nimport { type InitSettingsOptions, initSettings } from \"./settings\";\nimport { type InitThemeOptions, initTheme } from \"./theme\";\n\nexport type ExtensionsOptions = InitListenersOptions &\n InitThemeOptions &\n InitSettingsOptions &\n InitMarkdownOptions &\n InitKeyMapsOptions &\n InitAutoCompleteOptions;\n\nexport type InitExtensionsOptions = {\n multiCursorText: Text | undefined;\n provider: WebsocketProvider | undefined;\n} & ExtensionsOptions;\n\nexport const initExtensions = async ({\n onBlur,\n onChange,\n onFocus,\n onEnter,\n onEscape,\n readonly = true,\n vimMode = false,\n multiCursorText,\n provider,\n theme = \"light\",\n dark,\n light,\n languages,\n keyMaps,\n defaultKeyMaps,\n imageSrcGetter,\n autoCompleteTagOptions,\n autoCompleteConfig,\n}: InitExtensionsOptions): Promise<Extension[]> => {\n const multiCursorMode = Boolean(multiCursorText && provider);\n\n const asyncPlugins = await Promise.all([\n initSettings({ readonly, vimMode }),\n initKeyMaps({\n onEnter,\n onEscape,\n multiCursorMode,\n keyMaps,\n vimMode,\n theme,\n dark,\n defaultKeyMaps,\n light,\n }),\n new Promise<Extension>((resolve) => {\n void import(\"./markdown\").then(({ initMarkdown }) => {\n resolve(initMarkdown({ languages, imageSrcGetter }));\n });\n }),\n initAutoComplete({ autoCompleteConfig, autoCompleteTagOptions }),\n ]);\n\n const extensions = [\n ...asyncPlugins,\n initTheme({ theme, dark, light }),\n initListeners({ onBlur, onChange, onFocus }),\n ];\n\n if (multiCursorText && provider) {\n const multiCursorModules = await Promise.all([import(\"yjs\"), import(\"y-codemirror.next\")]);\n const [{ UndoManager }, { yCollab }] = multiCursorModules;\n\n const undoManager = new UndoManager(multiCursorText);\n extensions.push(yCollab(multiCursorText, provider.awareness, { undoManager }));\n }\n\n return extensions;\n};\n","import type { MultiCursorOptions, ProviderStatusEvent } from \"../Editor.types\";\n\ntype InitEditorProviderOptions = {\n initialText?: string;\n} & MultiCursorOptions;\n\nexport async function initEditorProvider({\n roomId,\n url,\n userName = \"Anonymous\",\n userColor,\n initialText,\n ...opts\n}: InitEditorProviderOptions) {\n const { Doc } = await import(\"yjs\");\n const { WebsocketProvider } = await import(\"y-websocket\");\n\n const multiCursorDocument = new Doc();\n const multiCursorText = multiCursorDocument.getText(\"codemirror\");\n\n if (!userColor?.startsWith?.(\"#\")) {\n console.warn(\"user color must be hex!\");\n userColor = \"#30bced\";\n }\n const userColorLight = `${userColor.substring(0, 7)}33`;\n\n const provider = new WebsocketProvider(url, roomId, multiCursorDocument);\n provider.awareness.setLocalStateField(\"user\", {\n name: userName,\n color: userColor,\n colorLight: userColorLight,\n });\n\n if (opts.onChangeStatusProvider)\n provider.on(\"status\", (event: ProviderStatusEvent) => {\n opts.onChangeStatusProvider?.(event, provider, multiCursorText);\n });\n\n provider.on(\"sync\", (isSynced: boolean) => {\n if (opts.onSyncProvider) {\n opts.onSyncProvider(isSynced, provider, multiCursorText);\n }\n\n if (opts.autoInsert && isSynced && !multiCursorText.length && initialText) {\n multiCursorText.insert(0, initialText);\n }\n });\n\n return { provider, multiCursorText };\n}\n","import { EditorState } from \"@codemirror/state\";\nimport { type InitExtensionsOptions, initExtensions } from \"@/extensions\";\n\ntype InitEditorStateOptions = {\n text: string;\n} & InitExtensionsOptions;\n\nexport async function initEditorState({ text, ...rest }: InitEditorStateOptions) {\n const extensions = await initExtensions(rest);\n\n return EditorState.create({\n // eslint-disable-next-line @typescript-eslint/no-base-to-string\n doc: rest.multiCursorText ? rest.multiCursorText.toString() : text,\n extensions,\n });\n}\n","import { EditorView } from \"@codemirror/view\";\nimport { type WebsocketProvider } from \"y-websocket\";\nimport type { Text } from \"yjs\";\nimport type { EditorArguments } from \"../Editor.types\";\nimport { initEditorProvider } from \"./init-editor-provider\";\nimport { initEditorState } from \"./init-editor-state\";\n\nexport async function initEditor({ multiCursor, root, initialText, ...rest }: EditorArguments) {\n let provider: WebsocketProvider | undefined;\n let multiCursorText: Text | undefined;\n\n if (multiCursor) {\n const editorProvider = await initEditorProvider({ ...multiCursor, initialText });\n provider = editorProvider.provider;\n multiCursorText = editorProvider.multiCursorText;\n }\n\n const state = await initEditorState({\n ...rest,\n text: initialText ?? \"\",\n provider,\n multiCursorText,\n });\n const view = new EditorView({\n state,\n parent: root,\n });\n\n return { view, provider, multiCursorText };\n}\n","import { EditorView, drawSelection } from \"@codemirror/view\";\nimport type { WebsocketProvider } from \"y-websocket\";\nimport type { Text } from \"yjs\";\nimport {\n type EditorTheme,\n ReadonlyCompartment,\n ThemeCompartment,\n VimModeCompartment,\n getDarkTheme,\n getLightTheme,\n} from \"@/extensions\";\nimport { saveDispatch } from \"@/lib/utils\";\nimport { type EditorArguments } from \"./Editor.types\";\nimport { initEditor } from \"./lib\";\n\nexport class Editor {\n view: EditorView | undefined;\n\n provider: WebsocketProvider | undefined;\n\n arguments: EditorArguments;\n\n yText: Text | undefined;\n\n constructor(options: EditorArguments) {\n void initEditor(options).then((editor) => {\n this.view = editor.view;\n this.provider = editor.provider;\n this.yText = editor.multiCursorText;\n });\n\n this.arguments = options;\n }\n\n focus = () => {\n if (!this.view) return;\n\n this.view.focus();\n };\n\n getContent = () => {\n if (!this.view) return;\n\n return this.view.state.doc.toString();\n };\n\n setContent = (content: string, position?: number) => {\n if (!this.view) return;\n\n if (position == undefined) {\n const cursor = this.view.state.selection.main.head;\n position = cursor;\n }\n\n const transaction = this.view.state.update({\n changes: {\n from: position,\n insert: content,\n },\n });\n saveDispatch(() => {\n if (!this.view) return;\n\n this.view.dispatch(transaction);\n });\n };\n\n replaceContent = (content: string) => {\n // if (!this.yText) return;\n\n // this.yText.delete(0, this.yText.length);\n // this.yText.insert(0, content);\n\n // return;\n\n if (!this.view) return;\n\n const transaction = this.view.state.update({\n changes: { from: 0, to: this.view.state.doc.length, insert: content },\n });\n saveDispatch(() => {\n if (!this.view) return;\n\n this.view.dispatch(transaction);\n });\n };\n\n setReadonly = (readonly: boolean) => {\n saveDispatch(() => {\n if (!this.view) return;\n this.view.dispatch({\n effects: ReadonlyCompartment.reconfigure(EditorView.editable.of(!readonly)),\n });\n });\n };\n\n setTheme = (theme?: EditorTheme) => {\n saveDispatch(() => {\n if (!this.view) return;\n this.view.dispatch({\n effects: ThemeCompartment.reconfigure(\n theme === \"dark\"\n ? getDarkTheme({\n dark: this.arguments.dark,\n light: this.arguments.light,\n theme,\n })\n : getLightTheme({\n dark: this.arguments.dark,\n light: this.arguments.light,\n theme,\n }),\n ),\n });\n });\n };\n\n setVimMode = async (mode: boolean) => {\n if (!this.view) return;\n\n const { vim } = await import(\"@replit/codemirror-vim\");\n\n saveDispatch(() => {\n if (!this.view) return;\n this.view.dispatch({\n effects: VimModeCompartment.reconfigure(\n mode ? [vim({ status: true }), drawSelection()] : [],\n ),\n });\n });\n };\n\n setUserProvider = (name: string = \"Anonymous\", color: string = \"#000000\") => {\n if (!this.provider) return;\n\n this.provider.awareness.setLocalStateField(\"user\", { name, color });\n };\n\n destroy = () => {\n saveDispatch(() => {\n if (!this.view) return;\n this.view.destroy();\n });\n saveDispatch(() => {\n if (this.provider) this.provider.destroy();\n });\n };\n}\n\nexport type EditorInterface = typeof Editor;\n"],"names":["Compartment","CODE_OF_START_MENTION","CODE_OF_SPACE","CODE_OF_LINE_BREAK","autocompletion","Decoration","syntaxHighlighting","HighlightStyle","tags","EditorView","HIGHLIGHT_CONFIG","THEME_CONFIG","utils.overlapMark","indentWithTab","standardKeymap","view","drawSelection","historyKeymap","keymap","WidgetType","utils.getLineDecoration","utils.isInRange","utils.getHideDecoration","utils.getReplaceDecoration","syntaxTree","utils.getMarkDecoration","utils\n .copyToClipboard","utils.isRangeOverlap","utils.getWidgetDecorationOptions","StateEffect","StateField","handleClick","getTextNode","getTextNodeContainer","isCorrectNode","selectLink","NAME_OF_TODO","ViewPlugin","history","EditorState"],"mappings":"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","x_google_ignoreList":[23]}
|
|
@@ -4,7 +4,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
4
4
|
|
|
5
5
|
const langMarkdown = require('@codemirror/lang-markdown');
|
|
6
6
|
require('@codemirror/state');
|
|
7
|
-
const index = require('./index-
|
|
7
|
+
const index = require('./index-B3pzIJIg.js');
|
|
8
8
|
require('@codemirror/view');
|
|
9
9
|
require('@codemirror/autocomplete');
|
|
10
10
|
require('@codemirror/commands');
|
|
@@ -53,4 +53,4 @@ const initMarkdown = ({ languages, imageSrcGetter }) => {
|
|
|
53
53
|
};
|
|
54
54
|
|
|
55
55
|
exports.initMarkdown = initMarkdown;
|
|
56
|
-
//# sourceMappingURL=index-
|
|
56
|
+
//# sourceMappingURL=index-BXzCwUix.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index-
|
|
1
|
+
{"version":3,"file":"index-BXzCwUix.js","sources":["../../src/extensions/markdown/mention/mention-parser.ts","../../src/extensions/markdown/markdown-parser.ts","../../src/extensions/markdown/init-markdown.ts"],"sourcesContent":["import type { MarkdownConfig } from \"@lezer/markdown\";\nimport {\n CODE_OF_LINE_BREAK,\n CODE_OF_SPACE,\n CODE_OF_START_MENTION,\n NAME_OF_MENTION,\n} from \"./mention-constants\";\n\nexport const mentionParser: MarkdownConfig = {\n defineNodes: [{ name: NAME_OF_MENTION }],\n parseInline: [\n {\n name: NAME_OF_MENTION,\n parse(cx, code, pos) {\n if (code != CODE_OF_START_MENTION) return -1;\n const nextCode = cx.char(pos + 1);\n if (nextCode === -1 || nextCode === CODE_OF_SPACE || nextCode === CODE_OF_LINE_BREAK)\n return -1;\n\n let end: number = pos + 1;\n for (let i = pos + 1; i < cx.end; i++) {\n const nextCode = cx.char(i);\n if (nextCode === -1 || nextCode === CODE_OF_SPACE || nextCode === CODE_OF_LINE_BREAK)\n break;\n end++;\n }\n\n return cx.addElement(cx.elt(NAME_OF_MENTION, pos, end));\n },\n },\n ],\n};\n","import type { MarkdownExtension } from \"@lezer/markdown\";\nimport { mentionParser } from \"./mention\";\n\nexport const markdownParserPlugin: MarkdownExtension = [mentionParser];\n","import { markdown, markdownLanguage } from \"@codemirror/lang-markdown\";\nimport { type Extension } from \"@codemirror/state\";\nimport { markdownDecorationPlugin } from \"./markdown-decoration\";\nimport { markdownParserPlugin } from \"./markdown-parser\";\nimport { markdownState } from \"./markdown-state\";\nimport type { InitMarkdownOptions } from \"./markdown-types\";\n\nexport const initMarkdown = ({ languages, imageSrcGetter }: InitMarkdownOptions): Extension => {\n return [\n markdownState,\n markdown({\n base: markdownLanguage,\n codeLanguages: languages,\n addKeymap: true,\n extensions: [markdownParserPlugin],\n }),\n markdownDecorationPlugin({ imageSrcGetter }),\n ];\n};\n"],"names":["NAME_OF_MENTION","CODE_OF_START_MENTION","CODE_OF_SPACE","CODE_OF_LINE_BREAK","markdownState","markdown","markdownLanguage","markdownDecorationPlugin"],"mappings":";;;;;;;;;;;;;;;AAQO,MAAM,aAAa,GAAmB;AAC3C,IAAA,WAAW,EAAE,CAAC,EAAE,IAAI,EAAEA,qBAAe,EAAE,CAAC;AACxC,IAAA,WAAW,EAAE;AACX,QAAA;AACE,YAAA,IAAI,EAAEA,qBAAe;AACrB,YAAA,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAA;gBACjB,IAAI,IAAI,IAAIC,2BAAqB;oBAAE,OAAO,EAAE;gBAC5C,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBACjC,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAKC,mBAAa,IAAI,QAAQ,KAAKC,wBAAkB;oBAClF,OAAO,EAAE;AAEX,gBAAA,IAAI,GAAG,GAAW,GAAG,GAAG,CAAC;AACzB,gBAAA,KAAK,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;oBACrC,MAAM,QAAQ,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC3B,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,KAAKD,mBAAa,IAAI,QAAQ,KAAKC,wBAAkB;wBAClF;AACF,oBAAA,GAAG,EAAE;;AAGP,gBAAA,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,CAACH,qBAAe,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;aACxD;AACF,SAAA;AACF,KAAA;CACF;;AC5BM,MAAM,oBAAoB,GAAsB,CAAC,aAAa,CAAC;;ACIzD,MAAA,YAAY,GAAG,CAAC,EAAE,SAAS,EAAE,cAAc,EAAuB,KAAe;IAC5F,OAAO;QACLI,mBAAa;AACb,QAAAC,qBAAQ,CAAC;AACP,YAAA,IAAI,EAAEC,6BAAgB;AACtB,YAAA,aAAa,EAAE,SAAS;AACxB,YAAA,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,CAAC,oBAAoB,CAAC;SACnC,CAAC;AACF,QAAAC,8BAAwB,CAAC,EAAE,cAAc,EAAE,CAAC;KAC7C;AACH;;;;"}
|
package/lib/cjs/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
4
4
|
|
|
5
|
-
const index = require('./index-
|
|
5
|
+
const index = require('./index-B3pzIJIg.js');
|
|
6
6
|
require('@codemirror/autocomplete');
|
|
7
7
|
require('@codemirror/commands');
|
|
8
8
|
require('@codemirror/view');
|
|
@@ -69,8 +69,7 @@ function getCodeSelectionDecorations({ decorations, node, view, forceActive, })
|
|
|
69
69
|
if (node.name === NAME_OF_INLINE_CODE) {
|
|
70
70
|
codeContent = view.state.doc.sliceString(startMarkPosition.to, endMarkPosition.from).trim();
|
|
71
71
|
}
|
|
72
|
-
|
|
73
|
-
language = "copy";
|
|
72
|
+
language ??= "copy";
|
|
74
73
|
if (lines.length > 1) {
|
|
75
74
|
lines.forEach((line) => {
|
|
76
75
|
decorations.push(getLineDecoration({
|