@krainovsd/markdown-editor 0.3.2 → 0.4.2
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-BgxbH3r2.js → index-Df0WnJ4c.js} +470 -54
- package/lib/cjs/index-Df0WnJ4c.js.map +1 -0
- package/lib/cjs/{index-DU8JMAfc.js → index-Ne5xJkxS.js} +10 -6
- package/lib/cjs/index-Ne5xJkxS.js.map +1 -0
- package/lib/cjs/index.js +2 -1
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/extensions/auto-completes/custom/tag-auto-complete.js +33 -0
- package/lib/esm/extensions/auto-completes/custom/tag-auto-complete.js.map +1 -0
- package/lib/esm/extensions/auto-completes/init-auto-complete.js +27 -0
- package/lib/esm/extensions/auto-completes/init-auto-complete.js.map +1 -0
- package/lib/esm/extensions/init-extensions.js +5 -3
- package/lib/esm/extensions/init-extensions.js.map +1 -1
- package/lib/esm/extensions/keymaps/custom/bold-key-map.js +56 -0
- package/lib/esm/extensions/keymaps/custom/bold-key-map.js.map +1 -0
- package/lib/esm/extensions/keymaps/custom/italic-key-map.js +57 -0
- package/lib/esm/extensions/keymaps/custom/italic-key-map.js.map +1 -0
- package/lib/esm/extensions/keymaps/custom/link-key-map.js +28 -0
- package/lib/esm/extensions/keymaps/custom/link-key-map.js.map +1 -0
- package/lib/esm/extensions/keymaps/init-key-map.js +7 -10
- package/lib/esm/extensions/keymaps/init-key-map.js.map +1 -1
- package/lib/esm/extensions/listeners/get-change-event.js +3 -3
- package/lib/esm/extensions/listeners/get-change-event.js.map +1 -1
- package/lib/esm/extensions/listeners/get-focus-event.js +3 -3
- package/lib/esm/extensions/listeners/get-focus-event.js.map +1 -1
- package/lib/esm/extensions/markdown/blockquote/blockquote-constants.js +1 -1
- package/lib/esm/extensions/markdown/blockquote/blockquote-constants.js.map +1 -1
- package/lib/esm/extensions/markdown/blockquote/blockquote-decoration.js +1 -1
- package/lib/esm/extensions/markdown/blockquote/blockquote-decoration.js.map +1 -1
- package/lib/esm/extensions/markdown/bold/bold-constants.js +1 -1
- package/lib/esm/extensions/markdown/bold/bold-constants.js.map +1 -1
- package/lib/esm/extensions/markdown/bold/bold-decoration.js +1 -1
- package/lib/esm/extensions/markdown/code/code-constants.js +3 -1
- package/lib/esm/extensions/markdown/code/code-constants.js.map +1 -1
- package/lib/esm/extensions/markdown/code/code-decoration.js +34 -3
- package/lib/esm/extensions/markdown/code/code-decoration.js.map +1 -1
- package/lib/esm/extensions/markdown/header/header-decoration.js +1 -1
- package/lib/esm/extensions/markdown/image/image-decoration.js.map +1 -1
- package/lib/esm/extensions/markdown/image/image-widget.js +26 -2
- package/lib/esm/extensions/markdown/image/image-widget.js.map +1 -1
- package/lib/esm/extensions/markdown/italic/italic-decoration.js +2 -2
- package/lib/esm/extensions/markdown/italic/italic-decoration.js.map +1 -1
- package/lib/esm/extensions/markdown/link/link-decoration.js +1 -1
- package/lib/esm/extensions/markdown/link/link-decoration.js.map +1 -1
- package/lib/esm/extensions/markdown/link/link-widget.js +28 -2
- package/lib/esm/extensions/markdown/link/link-widget.js.map +1 -1
- package/lib/esm/extensions/markdown/list/list-decoration.js +1 -1
- package/lib/esm/extensions/markdown/list/list-decoration.js.map +1 -1
- package/lib/esm/extensions/markdown/markdown-decoration.js +2 -2
- package/lib/esm/extensions/markdown/markdown-decoration.js.map +1 -1
- package/lib/esm/extensions/markdown/mention/mention-constants.js +4 -3
- package/lib/esm/extensions/markdown/mention/mention-constants.js.map +1 -1
- package/lib/esm/extensions/markdown/mention/mention-decoration.js +1 -1
- package/lib/esm/extensions/markdown/mention/mention-parser.js +8 -5
- package/lib/esm/extensions/markdown/mention/mention-parser.js.map +1 -1
- package/lib/esm/extensions/markdown/strike-through/strike-through-decoration.js +1 -1
- package/lib/esm/extensions/markdown/styles.module.scss.js +2 -2
- package/lib/esm/extensions/markdown/todo/todo-decoration.js +1 -1
- package/lib/esm/extensions/markdown/todo/todo-decoration.js.map +1 -1
- package/lib/esm/extensions/settings/init-settings.js +2 -2
- package/lib/esm/extensions/settings/init-settings.js.map +1 -1
- package/lib/esm/extensions/theme/theme-constants.js +2 -0
- package/lib/esm/extensions/theme/theme-constants.js.map +1 -1
- package/lib/esm/extensions/theme/themes/get-dark-theme.js +5 -2
- package/lib/esm/extensions/theme/themes/get-dark-theme.js.map +1 -1
- package/lib/esm/extensions/theme/themes/get-highlight-template.js +4 -1
- package/lib/esm/extensions/theme/themes/get-highlight-template.js.map +1 -1
- package/lib/esm/extensions/theme/themes/get-light-theme.js +5 -2
- package/lib/esm/extensions/theme/themes/get-light-theme.js.map +1 -1
- package/lib/esm/extensions/theme/themes/get-theme-template.js +7 -0
- package/lib/esm/extensions/theme/themes/get-theme-template.js.map +1 -1
- package/lib/esm/index.js +1 -0
- package/lib/esm/index.js.map +1 -1
- package/lib/esm/lib/utils/overlap-mark.js +151 -0
- package/lib/esm/lib/utils/overlap-mark.js.map +1 -0
- package/lib/esm/module/Editor/Editor.js +3 -6
- package/lib/esm/module/Editor/Editor.js.map +1 -1
- package/lib/esm/module/Editor/lib/init-editor-provider.js +2 -3
- package/lib/esm/module/Editor/lib/init-editor-provider.js.map +1 -1
- package/lib/esm/module/Editor/lib/init-editor.js +1 -1
- package/lib/esm/module/Editor/lib/init-editor.js.map +1 -1
- package/lib/esm/node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js.map +1 -1
- package/lib/index.d.ts +11 -2
- package/package.json +19 -29
- package/lib/cjs/index-BgxbH3r2.js.map +0 -1
- package/lib/cjs/index-DU8JMAfc.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme-constants.js","sources":["../../../../src/extensions/theme/theme-constants.ts"],"sourcesContent":["export const CLASSES = {\n listCommon: \"cm-list-common\",\n code: \"cm-code\",\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"],"names":[],"mappings":"AAAa,MAAA,OAAO,GAAG;AACrB,IAAA,UAAU,EAAE,gBAAgB;AAC5B,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,UAAU,EAAE,gBAAgB;AAC5B,IAAA,iBAAiB,EAAE,wBAAwB;AAC3C,IAAA,cAAc,EAAE,qBAAqB;AACrC,IAAA,iBAAiB,EAAE,wBAAwB;AAC3C,IAAA,cAAc,EAAE,cAAc;AAC9B,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,eAAe,EAAE,qBAAqB;AACtC,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,YAAY;;;;;"}
|
|
1
|
+
{"version":3,"file":"theme-constants.js","sources":["../../../../src/extensions/theme/theme-constants.ts"],"sourcesContent":["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"],"names":[],"mappings":"AAAa,MAAA,OAAO,GAAG;AACrB,IAAA,UAAU,EAAE,gBAAgB;AAC5B,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,aAAa,EAAE,oBAAoB;AACnC,IAAA,SAAS,EAAE,eAAe;AAC1B,IAAA,UAAU,EAAE,gBAAgB;AAC5B,IAAA,iBAAiB,EAAE,wBAAwB;AAC3C,IAAA,cAAc,EAAE,qBAAqB;AACrC,IAAA,iBAAiB,EAAE,wBAAwB;AAC3C,IAAA,cAAc,EAAE,cAAc;AAC9B,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,eAAe,EAAE,qBAAqB;AACtC,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,OAAO,EAAE,YAAY;;;;;"}
|
|
@@ -24,15 +24,18 @@ const THEME_CONFIG = {
|
|
|
24
24
|
codeColor: "#DDDDDD",
|
|
25
25
|
color: "#DDDDDD",
|
|
26
26
|
fontFamily: "Montserrat",
|
|
27
|
+
codeFontFamily: "Consolas",
|
|
27
28
|
horizontalColor: "#DDDDDD",
|
|
28
29
|
linkColor: "#8A5CF5",
|
|
29
30
|
mentionColor: "#8A5CF5",
|
|
30
31
|
vimSelection: "#1A1919FF",
|
|
31
32
|
vimSelectionFocused: "#2E4B4BFF",
|
|
33
|
+
codeBlockBorderColor: "#7b7e81",
|
|
34
|
+
codeBlockBackground: "#24292e",
|
|
32
35
|
};
|
|
33
36
|
function getDarkTheme({ dark }) {
|
|
34
|
-
const highlightConfig = { ...HIGHLIGHT_CONFIG, ...(dark?.highlightConfig
|
|
35
|
-
const themeConfig = { ...THEME_CONFIG, ...(dark?.themeConfig
|
|
37
|
+
const highlightConfig = { ...HIGHLIGHT_CONFIG, ...(dark?.highlightConfig ?? {}) };
|
|
38
|
+
const themeConfig = { ...THEME_CONFIG, ...(dark?.themeConfig ?? {}) };
|
|
36
39
|
return [getThemeTemplate(true, themeConfig), getHighlightTemplate(highlightConfig)];
|
|
37
40
|
}
|
|
38
41
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-dark-theme.js","sources":["../../../../../src/extensions/theme/themes/get-dark-theme.ts"],"sourcesContent":["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 horizontalColor: \"#DDDDDD\",\n linkColor: \"#8A5CF5\",\n mentionColor: \"#8A5CF5\",\n vimSelection: \"#1A1919FF\",\n vimSelectionFocused: \"#2E4B4BFF\",\n};\n\nexport function getDarkTheme({ dark }: InitThemeOptions) {\n const highlightConfig = { ...HIGHLIGHT_CONFIG, ...(dark?.highlightConfig
|
|
1
|
+
{"version":3,"file":"get-dark-theme.js","sources":["../../../../../src/extensions/theme/themes/get-dark-theme.ts"],"sourcesContent":["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"],"names":[],"mappings":";;;AAIA,MAAM,gBAAgB,GAA8B;AAClD,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,SAAS;CAClB;AAED,MAAM,YAAY,GAA0B;AAC1C,IAAA,UAAU,EAAE,SAAS;IACrB,eAAe,EAAE,SAAS;AAC1B,IAAA,cAAc,EAAE,SAAS;AACzB,IAAA,oBAAoB,EAAE,WAAW;AACjC,IAAA,eAAe,EAAE,SAAS;AAC1B,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,eAAe,EAAE,SAAS;AAC1B,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,YAAY,EAAE,SAAS;AACvB,IAAA,YAAY,EAAE,WAAW;AACzB,IAAA,mBAAmB,EAAE,WAAW;AAChC,IAAA,oBAAoB,EAAE,SAAS;AAC/B,IAAA,mBAAmB,EAAE,SAAS;CAC/B;AAEe,SAAA,YAAY,CAAC,EAAE,IAAI,EAAoB,EAAA;AACrD,IAAA,MAAM,eAAe,GAAG,EAAE,GAAG,gBAAgB,EAAE,IAAI,IAAI,EAAE,eAAe,IAAI,EAAE,CAAC,EAAE;AACjF,IAAA,MAAM,WAAW,GAAG,EAAE,GAAG,YAAY,EAAE,IAAI,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE;AAErE,IAAA,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC;AACrF;;;;"}
|
|
@@ -15,7 +15,10 @@ function getHighlightTemplate(config) {
|
|
|
15
15
|
color: config.string,
|
|
16
16
|
},
|
|
17
17
|
{ tag: [tags.function(tags.variableName), tags.labelName], color: config.function },
|
|
18
|
-
{
|
|
18
|
+
{
|
|
19
|
+
tag: [tags.color, tags.constant(tags.name), tags.standard(tags.name)],
|
|
20
|
+
color: config.constant,
|
|
21
|
+
},
|
|
19
22
|
{ tag: [tags.definition(tags.name), tags.separator], color: config.variable },
|
|
20
23
|
{ tag: [tags.className], color: config.class },
|
|
21
24
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-highlight-template.js","sources":["../../../../../src/extensions/theme/themes/get-highlight-template.ts"],"sourcesContent":["import { HighlightStyle, syntaxHighlighting } from \"@codemirror/language\";\nimport { tags
|
|
1
|
+
{"version":3,"file":"get-highlight-template.js","sources":["../../../../../src/extensions/theme/themes/get-highlight-template.ts"],"sourcesContent":["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"],"names":[],"mappings":";;;AAIA;;;AAGG;AAEG,SAAU,oBAAoB,CAAC,MAAiC,EAAA;AACpE,IAAA,OAAO,kBAAkB,CACvB,cAAc,CAAC,MAAM,CAAC;QACpB,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE;QAC5C,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;AAC1F,QAAA,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;AACpD,QAAA;AACE,YAAA,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC5D,KAAK,EAAE,MAAM,CAAC,MAAM;AACrB,SAAA;QACD,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;AACnF,QAAA;YACE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrE,KAAK,EAAE,MAAM,CAAC,QAAQ;AACvB,SAAA;QACD,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;AAC7E,QAAA,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE;AAC9C,QAAA;YACE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;YAC3F,KAAK,EAAE,MAAM,CAAC,MAAM;AACrB,SAAA;AACD,QAAA,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE;AACpE,QAAA,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE;AACrE,QAAA,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE;AACzD,QAAA,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE;QAC9C,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;QACxF,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE;AAC7C,KAAA,CAAC,CACH;AACH;;;;"}
|
|
@@ -24,15 +24,18 @@ const THEME_CONFIG = {
|
|
|
24
24
|
codeColor: "#000000",
|
|
25
25
|
color: "#000000",
|
|
26
26
|
fontFamily: "Montserrat",
|
|
27
|
+
codeFontFamily: "Consolas",
|
|
27
28
|
horizontalColor: "#000000",
|
|
28
29
|
linkColor: "#8A5CF5",
|
|
29
30
|
mentionColor: "#8A5CF5",
|
|
30
31
|
vimSelection: "#d9d9d9",
|
|
31
32
|
vimSelectionFocused: "#d7d4f0",
|
|
33
|
+
codeBlockBackground: "#e1e2e7",
|
|
34
|
+
codeBlockBorderColor: "##CCCCCDFF",
|
|
32
35
|
};
|
|
33
36
|
function getLightTheme({ light }) {
|
|
34
|
-
const highlightConfig = { ...HIGHLIGHT_CONFIG, ...(light?.highlightConfig
|
|
35
|
-
const themeConfig = { ...THEME_CONFIG, ...(light?.themeConfig
|
|
37
|
+
const highlightConfig = { ...HIGHLIGHT_CONFIG, ...(light?.highlightConfig ?? {}) };
|
|
38
|
+
const themeConfig = { ...THEME_CONFIG, ...(light?.themeConfig ?? {}) };
|
|
36
39
|
return [getThemeTemplate(false, themeConfig), getHighlightTemplate(highlightConfig)];
|
|
37
40
|
}
|
|
38
41
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-light-theme.js","sources":["../../../../../src/extensions/theme/themes/get-light-theme.ts"],"sourcesContent":["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 horizontalColor: \"#000000\",\n linkColor: \"#8A5CF5\",\n mentionColor: \"#8A5CF5\",\n vimSelection: \"#d9d9d9\",\n vimSelectionFocused: \"#d7d4f0\",\n};\n\nexport function getLightTheme({ light }: InitThemeOptions) {\n const highlightConfig = { ...HIGHLIGHT_CONFIG, ...(light?.highlightConfig
|
|
1
|
+
{"version":3,"file":"get-light-theme.js","sources":["../../../../../src/extensions/theme/themes/get-light-theme.ts"],"sourcesContent":["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"],"names":[],"mappings":";;;AAIA,MAAM,gBAAgB,GAA8B;AAClD,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,QAAQ,EAAE,SAAS;AACnB,IAAA,IAAI,EAAE,SAAS;AACf,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,OAAO,EAAE,SAAS;AAClB,IAAA,MAAM,EAAE,SAAS;CAClB;AAED,MAAM,YAAY,GAA0B;AAC1C,IAAA,UAAU,EAAE,aAAa;IACzB,eAAe,EAAE,SAAS;AAC1B,IAAA,cAAc,EAAE,SAAS;AACzB,IAAA,oBAAoB,EAAE,WAAW;AACjC,IAAA,eAAe,EAAE,SAAS;AAC1B,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,UAAU,EAAE,YAAY;AACxB,IAAA,cAAc,EAAE,UAAU;AAC1B,IAAA,eAAe,EAAE,SAAS;AAC1B,IAAA,SAAS,EAAE,SAAS;AACpB,IAAA,YAAY,EAAE,SAAS;AACvB,IAAA,YAAY,EAAE,SAAS;AACvB,IAAA,mBAAmB,EAAE,SAAS;AAC9B,IAAA,mBAAmB,EAAE,SAAS;AAC9B,IAAA,oBAAoB,EAAE,YAAY;CACnC;AAEe,SAAA,aAAa,CAAC,EAAE,KAAK,EAAoB,EAAA;AACvD,IAAA,MAAM,eAAe,GAAG,EAAE,GAAG,gBAAgB,EAAE,IAAI,KAAK,EAAE,eAAe,IAAI,EAAE,CAAC,EAAE;AAClF,IAAA,MAAM,WAAW,GAAG,EAAE,GAAG,YAAY,EAAE,IAAI,KAAK,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE;AAEtE,IAAA,OAAO,CAAC,gBAAgB,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,oBAAoB,CAAC,eAAe,CAAC,CAAC;AACtF;;;;"}
|
|
@@ -27,6 +27,7 @@ function getThemeTemplate(dark, config) {
|
|
|
27
27
|
[`.${CLASSES.code}`]: {
|
|
28
28
|
background: config.codeBackground,
|
|
29
29
|
color: config.codeColor,
|
|
30
|
+
fontFamily: `${config.codeFontFamily} !important`,
|
|
30
31
|
},
|
|
31
32
|
[`.${CLASSES.horizontal}`]: {
|
|
32
33
|
borderBottomColor: config.horizontalColor,
|
|
@@ -62,6 +63,12 @@ function getThemeTemplate(dark, config) {
|
|
|
62
63
|
[`.${CLASSES.mention}`]: {
|
|
63
64
|
color: config.mentionColor,
|
|
64
65
|
},
|
|
66
|
+
[`.${CLASSES.codeBlockLine}`]: {
|
|
67
|
+
borderColor: config.codeBlockBorderColor,
|
|
68
|
+
},
|
|
69
|
+
[`.${CLASSES.codeBlock}`]: {
|
|
70
|
+
background: config.codeBlockBackground,
|
|
71
|
+
},
|
|
65
72
|
}, { dark });
|
|
66
73
|
}
|
|
67
74
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-theme-template.js","sources":["../../../../../src/extensions/theme/themes/get-theme-template.ts"],"sourcesContent":["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 [`.${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 },\n { dark },\n );\n}\n"],"names":[],"mappings":";;;AAIgB,SAAA,gBAAgB,CAAC,IAAa,EAAE,MAA6B,EAAA;IAC3E,OAAO,UAAU,CAAC,KAAK,CACrB;AACE,QAAA,GAAG,EAAE;YACH,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,eAAe,EAAE,MAAM,CAAC,UAAU;AACnC,SAAA;AACD,QAAA,aAAa,EAAE;AACb,YAAA,UAAU,EAAE,MAAM,CAAC,UAAU,IAAI,YAAY;AAC9C,SAAA;AACD,QAAA,4EAA4E,EAAE;YAC5E,UAAU,EAAE,MAAM,CAAC,mBAAmB;AACvC,SAAA;AACD,QAAA,2BAA2B,EAAE;YAC3B,UAAU,EAAE,MAAM,CAAC,YAAY;AAChC,SAAA;AACD,QAAA,wBAAwB,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;AAC7C,QAAA,aAAa,EAAE;AACb,YAAA,MAAM,EAAE,MAAM;AACd,YAAA,KAAK,EAAE,MAAM;AACd,SAAA;AACD,QAAA,CAAC,IAAI,OAAO,CAAC,UAAU,CAAA,MAAA,CAAQ,GAAG;YAChC,UAAU,EAAE,MAAM,CAAC,KAAK;AACzB,SAAA;AACD,QAAA,CAAC,IAAI,OAAO,CAAC,IAAI,CAAA,CAAE,GAAG;YACpB,UAAU,EAAE,MAAM,CAAC,cAAc;YACjC,KAAK,EAAE,MAAM,CAAC,SAAS;
|
|
1
|
+
{"version":3,"file":"get-theme-template.js","sources":["../../../../../src/extensions/theme/themes/get-theme-template.ts"],"sourcesContent":["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 fontFamily: `${config.codeFontFamily} !important`,\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"],"names":[],"mappings":"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"}
|
package/lib/esm/index.js
CHANGED
package/lib/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
function overlapMark({ marks, shift, state, requireMatched }) {
|
|
2
|
+
const { from, to, shiftAfterInner, shiftAfterOuter, shiftBeforeInner, shiftBeforeOuter, text } = processShiftContent(state, shift, marks);
|
|
3
|
+
const startIndex = findMarkIndex(text.substring(0, shiftBeforeInner + shiftBeforeOuter), marks, requireMatched, "right");
|
|
4
|
+
const endIndex = findMarkIndex(text.substring(text.length - shiftAfterInner - shiftAfterOuter), marks, requireMatched, "left");
|
|
5
|
+
const start = ~startIndex ? from - shiftBeforeOuter + startIndex : -1;
|
|
6
|
+
const end = ~endIndex ? to - shiftAfterInner + endIndex : -1;
|
|
7
|
+
// console.log({
|
|
8
|
+
// from,
|
|
9
|
+
// to,
|
|
10
|
+
// shiftAfterInner,
|
|
11
|
+
// shiftAfterOuter,
|
|
12
|
+
// shiftBeforeInner,
|
|
13
|
+
// shiftBeforeOuter,
|
|
14
|
+
// text,
|
|
15
|
+
// textStart: text.substring(0, shiftBeforeInner + shiftBeforeOuter),
|
|
16
|
+
// textEnd: text.substring(text.length - shiftAfterInner - shiftAfterOuter),
|
|
17
|
+
// startIndex,
|
|
18
|
+
// endIndex,
|
|
19
|
+
// end,
|
|
20
|
+
// start,
|
|
21
|
+
// });
|
|
22
|
+
return {
|
|
23
|
+
start,
|
|
24
|
+
end,
|
|
25
|
+
marked: Boolean(~start || ~end),
|
|
26
|
+
originalText: text.substring(shiftBeforeOuter, text.length - shiftAfterOuter),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
// eslint-disable-next-line max-params
|
|
30
|
+
function findMarkIndex(text, marks, requireMatched, direction = "right") {
|
|
31
|
+
if (text.length === 0)
|
|
32
|
+
return -1;
|
|
33
|
+
const maxRequired = Math.max(...requireMatched);
|
|
34
|
+
const minRequired = Math.min(...requireMatched);
|
|
35
|
+
let pos = 0;
|
|
36
|
+
let matched = 0;
|
|
37
|
+
let start = -1;
|
|
38
|
+
for (const mark of marks) {
|
|
39
|
+
if (!mark)
|
|
40
|
+
continue;
|
|
41
|
+
while (pos < text.length) {
|
|
42
|
+
if (text.codePointAt(pos) === mark)
|
|
43
|
+
matched++;
|
|
44
|
+
else {
|
|
45
|
+
if (
|
|
46
|
+
// eslint-disable-next-line no-loop-func -- https://eslint.org/docs/latest/rules/no-loop-func#known-limitations
|
|
47
|
+
requireMatched.some((rm) => rm === matched) &&
|
|
48
|
+
((direction === "right" && pos - matched > start) ||
|
|
49
|
+
(direction === "left" && (pos - matched < start || start === -1)))) {
|
|
50
|
+
start = direction === "right" ? pos - minRequired : pos - matched;
|
|
51
|
+
// console.log({ pos, matched, start, minRequired, maxRequired, direction });
|
|
52
|
+
}
|
|
53
|
+
else if (maxRequired < matched) {
|
|
54
|
+
const posMin = pos - minRequired;
|
|
55
|
+
const posMax = pos - matched;
|
|
56
|
+
// console.log({ posMin, posMax, pos, minRequired, maxRequired, direction, matched });
|
|
57
|
+
// eslint-disable-next-line max-depth
|
|
58
|
+
if (direction === "right" && posMin > start)
|
|
59
|
+
start = posMin;
|
|
60
|
+
// eslint-disable-next-line max-depth
|
|
61
|
+
if (direction === "left" && (posMax < start || start === -1))
|
|
62
|
+
start = posMax;
|
|
63
|
+
}
|
|
64
|
+
matched = 0;
|
|
65
|
+
}
|
|
66
|
+
pos++;
|
|
67
|
+
}
|
|
68
|
+
if (
|
|
69
|
+
// eslint-disable-next-line no-loop-func -- https://eslint.org/docs/latest/rules/no-loop-func#known-limitations
|
|
70
|
+
requireMatched.some((rm) => rm === matched) &&
|
|
71
|
+
((direction === "right" && pos - matched > start) ||
|
|
72
|
+
(direction === "left" && (pos - matched < start || start === -1)))) {
|
|
73
|
+
start = direction === "right" ? pos - minRequired : pos - matched;
|
|
74
|
+
// console.log({ pos, matched, start, minRequired, maxRequired, direction });
|
|
75
|
+
}
|
|
76
|
+
else if (maxRequired < matched) {
|
|
77
|
+
const posMin = pos - minRequired;
|
|
78
|
+
const posMax = pos - matched;
|
|
79
|
+
// console.log({ posMin, posMax, pos, minRequired, maxRequired, direction, matched });
|
|
80
|
+
if (direction === "right" && posMin > start)
|
|
81
|
+
start = posMin;
|
|
82
|
+
if (direction === "left" && (posMax < start || start === -1))
|
|
83
|
+
start = posMax;
|
|
84
|
+
}
|
|
85
|
+
pos = 0;
|
|
86
|
+
matched = 0;
|
|
87
|
+
}
|
|
88
|
+
return start;
|
|
89
|
+
}
|
|
90
|
+
function processShiftContent(state, shift, marks) {
|
|
91
|
+
const { from, to } = state.selection.ranges[0];
|
|
92
|
+
const linePoint = state.lineBreak.codePointAt(0);
|
|
93
|
+
let pos = 0;
|
|
94
|
+
/** processing outer shifts */
|
|
95
|
+
const initialTextBefore = state.sliceDoc(from - shift, from);
|
|
96
|
+
let shiftBeforeOuter = 0;
|
|
97
|
+
pos = initialTextBefore.length - 1;
|
|
98
|
+
while (pos > -1) {
|
|
99
|
+
if (initialTextBefore.codePointAt(pos) === linePoint)
|
|
100
|
+
break;
|
|
101
|
+
shiftBeforeOuter++;
|
|
102
|
+
pos--;
|
|
103
|
+
}
|
|
104
|
+
const initialTextAfter = state.sliceDoc(to, to + shift);
|
|
105
|
+
let shiftAfterOuter = 0;
|
|
106
|
+
pos = 0;
|
|
107
|
+
while (pos < initialTextAfter.length) {
|
|
108
|
+
if (initialTextAfter.codePointAt(pos) === linePoint)
|
|
109
|
+
break;
|
|
110
|
+
shiftAfterOuter++;
|
|
111
|
+
pos++;
|
|
112
|
+
}
|
|
113
|
+
/** processing inner shifts */
|
|
114
|
+
const initialText = state.sliceDoc(from, to);
|
|
115
|
+
let shiftBeforeInner = 0;
|
|
116
|
+
pos = 0;
|
|
117
|
+
if (initialText.length > 1)
|
|
118
|
+
while (pos < initialText.length) {
|
|
119
|
+
// eslint-disable-next-line no-loop-func -- https://eslint.org/docs/latest/rules/no-loop-func#known-limitations
|
|
120
|
+
if (marks.some((mark) => mark === initialText.codePointAt(pos)))
|
|
121
|
+
shiftBeforeInner++;
|
|
122
|
+
else
|
|
123
|
+
break;
|
|
124
|
+
pos++;
|
|
125
|
+
}
|
|
126
|
+
const initialTextWithoutBeforeShift = initialText.substring(shiftBeforeInner + 1);
|
|
127
|
+
let shiftAfterInner = 0;
|
|
128
|
+
pos = initialTextWithoutBeforeShift.length - 1;
|
|
129
|
+
if (initialText.length > 1 || shiftBeforeInner > 0)
|
|
130
|
+
while (pos > -1) {
|
|
131
|
+
// eslint-disable-next-line no-loop-func -- https://eslint.org/docs/latest/rules/no-loop-func#known-limitations
|
|
132
|
+
if (marks.some((mark) => mark === initialTextWithoutBeforeShift.codePointAt(pos)))
|
|
133
|
+
shiftAfterInner++;
|
|
134
|
+
else
|
|
135
|
+
break;
|
|
136
|
+
pos--;
|
|
137
|
+
}
|
|
138
|
+
const text = state.sliceDoc(from - shiftBeforeOuter, to + shiftAfterOuter);
|
|
139
|
+
return {
|
|
140
|
+
from,
|
|
141
|
+
to,
|
|
142
|
+
shiftBeforeOuter,
|
|
143
|
+
shiftBeforeInner,
|
|
144
|
+
shiftAfterOuter,
|
|
145
|
+
shiftAfterInner,
|
|
146
|
+
text,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
export { overlapMark };
|
|
151
|
+
//# sourceMappingURL=overlap-mark.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overlap-mark.js","sources":["../../../../src/lib/utils/overlap-mark.ts"],"sourcesContent":["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"],"names":[],"mappings":"AASM,SAAU,WAAW,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,cAAc,EAAsB,EAAA;IACrF,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAC5F,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC;IAE1C,MAAM,UAAU,GAAG,aAAa,CAC9B,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,CAAC,EACtD,KAAK,EACL,cAAc,EACd,OAAO,CACR;IACD,MAAM,QAAQ,GAAG,aAAa,CAC5B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,GAAG,eAAe,GAAG,eAAe,CAAC,EAC/D,KAAK,EACL,cAAc,EACd,MAAM,CACP;AAED,IAAA,MAAM,KAAK,GAAG,CAAC,UAAU,GAAG,IAAI,GAAG,gBAAgB,GAAG,UAAU,GAAG,EAAE;AACrE,IAAA,MAAM,GAAG,GAAG,CAAC,QAAQ,GAAG,EAAE,GAAG,eAAe,GAAG,QAAQ,GAAG,EAAE;;;;;;;;;;;;;;;;IAkB5D,OAAO;QACL,KAAK;QACL,GAAG;QACH,MAAM,EAAE,OAAO,CAAC,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC;AAC/B,QAAA,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC;KAC9E;AACH;AAEA;AACA,SAAS,aAAa,CACpB,IAAY,EACZ,KAA6B,EAC7B,cAAwB,EACxB,SAAA,GAA8B,OAAO,EAAA;AAErC,IAAA,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE;IAEhC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;IAC/C,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;IAE/C,IAAI,GAAG,GAAG,CAAC;IACX,IAAI,OAAO,GAAG,CAAC;AACf,IAAA,IAAI,KAAK,GAAG,EAAE;AAEd,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,IAAI,CAAC,IAAI;YAAE;AAEX,QAAA,OAAO,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE;AACxB,YAAA,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,IAAI;AAAE,gBAAA,OAAO,EAAE;iBACxC;AACH,gBAAA;;gBAEE,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;qBAC1C,CAAC,SAAS,KAAK,OAAO,IAAI,GAAG,GAAG,OAAO,GAAG,KAAK;AAC9C,yBAAC,SAAS,KAAK,MAAM,KAAK,GAAG,GAAG,OAAO,GAAG,KAAK,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EACpE;AACA,oBAAA,KAAK,GAAG,SAAS,KAAK,OAAO,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,OAAO;;;AAE5D,qBAAA,IAAI,WAAW,GAAG,OAAO,EAAE;AAChC,oBAAA,MAAM,MAAM,GAAG,GAAG,GAAG,WAAW;AAChC,oBAAA,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO;;;AAK5B,oBAAA,IAAI,SAAS,KAAK,OAAO,IAAI,MAAM,GAAG,KAAK;wBAAE,KAAK,GAAG,MAAM;;AAE3D,oBAAA,IAAI,SAAS,KAAK,MAAM,KAAK,MAAM,GAAG,KAAK,IAAI,KAAK,KAAK,EAAE,CAAC;wBAAE,KAAK,GAAG,MAAM;;gBAE9E,OAAO,GAAG,CAAC;;AAEb,YAAA,GAAG,EAAE;;AAGP,QAAA;;QAEE,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,OAAO,CAAC;aAC1C,CAAC,SAAS,KAAK,OAAO,IAAI,GAAG,GAAG,OAAO,GAAG,KAAK;AAC9C,iBAAC,SAAS,KAAK,MAAM,KAAK,GAAG,GAAG,OAAO,GAAG,KAAK,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EACpE;AACA,YAAA,KAAK,GAAG,SAAS,KAAK,OAAO,GAAG,GAAG,GAAG,WAAW,GAAG,GAAG,GAAG,OAAO;;;AAE5D,aAAA,IAAI,WAAW,GAAG,OAAO,EAAE;AAChC,YAAA,MAAM,MAAM,GAAG,GAAG,GAAG,WAAW;AAChC,YAAA,MAAM,MAAM,GAAG,GAAG,GAAG,OAAO;;AAI5B,YAAA,IAAI,SAAS,KAAK,OAAO,IAAI,MAAM,GAAG,KAAK;gBAAE,KAAK,GAAG,MAAM;AAC3D,YAAA,IAAI,SAAS,KAAK,MAAM,KAAK,MAAM,GAAG,KAAK,IAAI,KAAK,KAAK,EAAE,CAAC;gBAAE,KAAK,GAAG,MAAM;;QAG9E,GAAG,GAAG,CAAC;QACP,OAAO,GAAG,CAAC;;AAGb,IAAA,OAAO,KAAK;AACd;AAEA,SAAS,mBAAmB,CAAC,KAAkB,EAAE,KAAa,EAAE,KAA6B,EAAA;AAC3F,IAAA,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;IAChD,IAAI,GAAG,GAAG,CAAC;;AAGX,IAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,KAAK,EAAE,IAAI,CAAC;IAC5D,IAAI,gBAAgB,GAAG,CAAC;AACxB,IAAA,GAAG,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC;AAElC,IAAA,OAAO,GAAG,GAAG,EAAE,EAAE;AACf,QAAA,IAAI,iBAAiB,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE;AACtD,QAAA,gBAAgB,EAAE;AAClB,QAAA,GAAG,EAAE;;AAGP,IAAA,MAAM,gBAAgB,GAAG,KAAK,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,KAAK,CAAC;IACvD,IAAI,eAAe,GAAG,CAAC;IACvB,GAAG,GAAG,CAAC;AAEP,IAAA,OAAO,GAAG,GAAG,gBAAgB,CAAC,MAAM,EAAE;AACpC,QAAA,IAAI,gBAAgB,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE;AACrD,QAAA,eAAe,EAAE;AACjB,QAAA,GAAG,EAAE;;;IAIP,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;IAC5C,IAAI,gBAAgB,GAAG,CAAC;IACxB,GAAG,GAAG,CAAC;AAEP,IAAA,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC;AACxB,QAAA,OAAO,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE;;AAE/B,YAAA,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAAE,gBAAA,gBAAgB,EAAE;;gBAC9E;AAEL,YAAA,GAAG,EAAE;;IAGT,MAAM,6BAA6B,GAAG,WAAW,CAAC,SAAS,CAAC,gBAAgB,GAAG,CAAC,CAAC;IACjF,IAAI,eAAe,GAAG,CAAC;AACvB,IAAA,GAAG,GAAG,6BAA6B,CAAC,MAAM,GAAG,CAAC;IAE9C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,gBAAgB,GAAG,CAAC;AAChD,QAAA,OAAO,GAAG,GAAG,EAAE,EAAE;;AAEf,YAAA,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,KAAK,6BAA6B,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;AAC/E,gBAAA,eAAe,EAAE;;gBACd;AAEL,YAAA,GAAG,EAAE;;AAGT,IAAA,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,GAAG,gBAAgB,EAAE,EAAE,GAAG,eAAe,CAAC;IAE1E,OAAO;QACL,IAAI;QACJ,EAAE;QACF,gBAAgB;QAChB,gBAAgB;QAChB,eAAe;QACf,eAAe;QACf,IAAI;KACL;AACH;;;;"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { EditorView, drawSelection } from '@codemirror/view';
|
|
2
2
|
import { ReadonlyCompartment, ThemeCompartment, VimModeCompartment } from '../../extensions/compartments/index.js';
|
|
3
|
+
import '@codemirror/autocomplete';
|
|
3
4
|
import '@codemirror/commands';
|
|
4
5
|
import { saveDispatch } from '../../lib/utils/save-dispatch.js';
|
|
5
6
|
import { getDarkTheme } from '../../extensions/theme/themes/get-dark-theme.js';
|
|
@@ -85,14 +86,10 @@ class Editor {
|
|
|
85
86
|
effects: ThemeCompartment.reconfigure(theme === "dark"
|
|
86
87
|
? getDarkTheme({
|
|
87
88
|
dark: this.arguments.dark,
|
|
88
|
-
light: this.arguments.light
|
|
89
|
-
theme,
|
|
90
|
-
})
|
|
89
|
+
light: this.arguments.light})
|
|
91
90
|
: getLightTheme({
|
|
92
91
|
dark: this.arguments.dark,
|
|
93
|
-
light: this.arguments.light,
|
|
94
|
-
theme,
|
|
95
|
-
})),
|
|
92
|
+
light: this.arguments.light})),
|
|
96
93
|
});
|
|
97
94
|
});
|
|
98
95
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Editor.js","sources":["../../../../src/module/Editor/Editor.ts"],"sourcesContent":["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":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Editor.js","sources":["../../../../src/module/Editor/Editor.ts"],"sourcesContent":["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":[],"mappings":";;;;;;;;;;;;;MAea,MAAM,CAAA;AACjB,IAAA,IAAI;AAEJ,IAAA,QAAQ;AAER,IAAA,SAAS;AAET,IAAA,KAAK;AAEL,IAAA,WAAA,CAAY,OAAwB,EAAA;QAClC,KAAK,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,KAAI;AACvC,YAAA,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI;AACvB,YAAA,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ;AAC/B,YAAA,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,eAAe;AACrC,SAAC,CAAC;AAEF,QAAA,IAAI,CAAC,SAAS,GAAG,OAAO;;IAG1B,KAAK,GAAG,MAAK;QACX,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE;AAEhB,QAAA,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,KAAC;IAED,UAAU,GAAG,MAAK;QAChB,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE;QAEhB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE;AACvC,KAAC;AAED,IAAA,UAAU,GAAG,CAAC,OAAe,EAAE,QAAiB,KAAI;QAClD,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE;AAEhB,QAAA,IAAI,QAAQ,IAAI,SAAS,EAAE;AACzB,YAAA,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI;YAClD,QAAQ,GAAG,MAAM;;QAGnB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;AACzC,YAAA,OAAO,EAAE;AACP,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,MAAM,EAAE,OAAO;AAChB,aAAA;AACF,SAAA,CAAC;QACF,YAAY,CAAC,MAAK;YAChB,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE;AAEhB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AACjC,SAAC,CAAC;AACJ,KAAC;AAED,IAAA,cAAc,GAAG,CAAC,OAAe,KAAI;;;;;QAQnC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE;QAEhB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YACzC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;AACtE,SAAA,CAAC;QACF,YAAY,CAAC,MAAK;YAChB,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE;AAEhB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;AACjC,SAAC,CAAC;AACJ,KAAC;AAED,IAAA,WAAW,GAAG,CAAC,QAAiB,KAAI;QAClC,YAAY,CAAC,MAAK;YAChB,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjB,gBAAA,OAAO,EAAE,mBAAmB,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;AAC5E,aAAA,CAAC;AACJ,SAAC,CAAC;AACJ,KAAC;AAED,IAAA,QAAQ,GAAG,CAAC,KAAmB,KAAI;QACjC,YAAY,CAAC,MAAK;YAChB,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;AACjB,gBAAA,OAAO,EAAE,gBAAgB,CAAC,WAAW,CACnC,KAAK,KAAK;sBACN,YAAY,CAAC;AACX,wBAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;AACzB,wBAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAEvB;sBACD,aAAa,CAAC;AACZ,wBAAA,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI;AACzB,wBAAA,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAEvB,CAAA,CAAC,CACP;AACF,aAAA,CAAC;AACJ,SAAC,CAAC;AACJ,KAAC;AAED,IAAA,UAAU,GAAG,OAAO,IAAa,KAAI;QACnC,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE;QAEhB,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,OAAO,wBAAwB,CAAC;QAEtD,YAAY,CAAC,MAAK;YAChB,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;gBACjB,OAAO,EAAE,kBAAkB,CAAC,WAAW,CACrC,IAAI,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,CACrD;AACF,aAAA,CAAC;AACJ,SAAC,CAAC;AACJ,KAAC;IAED,eAAe,GAAG,CAAC,IAAe,GAAA,WAAW,EAAE,KAAgB,GAAA,SAAS,KAAI;QAC1E,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE;AAEpB,QAAA,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACrE,KAAC;IAED,OAAO,GAAG,MAAK;QACb,YAAY,CAAC,MAAK;YAChB,IAAI,CAAC,IAAI,CAAC,IAAI;gBAAE;AAChB,YAAA,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;AACrB,SAAC,CAAC;QACF,YAAY,CAAC,MAAK;YAChB,IAAI,IAAI,CAAC,QAAQ;AAAE,gBAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC5C,SAAC,CAAC;AACJ,KAAC;AACF;;;;"}
|
|
@@ -3,8 +3,7 @@ async function initEditorProvider({ roomId, url, userName = "Anonymous", userCol
|
|
|
3
3
|
const { WebsocketProvider } = await import('y-websocket');
|
|
4
4
|
const multiCursorDocument = new Doc();
|
|
5
5
|
const multiCursorText = multiCursorDocument.getText(roomId);
|
|
6
|
-
if (!userColor
|
|
7
|
-
// eslint-disable-next-line no-console
|
|
6
|
+
if (!userColor?.startsWith?.("#")) {
|
|
8
7
|
console.warn("user color must be hex!");
|
|
9
8
|
userColor = "#30bced";
|
|
10
9
|
}
|
|
@@ -19,7 +18,7 @@ async function initEditorProvider({ roomId, url, userName = "Anonymous", userCol
|
|
|
19
18
|
provider.on("status", (event) => {
|
|
20
19
|
onStartProvider(event?.status);
|
|
21
20
|
});
|
|
22
|
-
if (provider
|
|
21
|
+
if (provider)
|
|
23
22
|
provider.on("sync", (isSynced) => {
|
|
24
23
|
if (isSynced && !multiCursorText.length && initialText) {
|
|
25
24
|
multiCursorText.insert(0, initialText);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-editor-provider.js","sources":["../../../../../src/module/Editor/lib/init-editor-provider.ts"],"sourcesContent":["import type { MultiCursorOptions } 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 onStartProvider,\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(roomId);\n\n if (!userColor
|
|
1
|
+
{"version":3,"file":"init-editor-provider.js","sources":["../../../../../src/module/Editor/lib/init-editor-provider.ts"],"sourcesContent":["import type { MultiCursorOptions } 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 onStartProvider,\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(roomId);\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 (onStartProvider)\n provider.on(\"status\", (event: { status: string }) => {\n onStartProvider(event?.status);\n });\n\n if (provider)\n provider.on(\"sync\", (isSynced: boolean) => {\n if (isSynced && !multiCursorText.length && initialText) {\n multiCursorText.insert(0, initialText);\n }\n });\n\n return { provider, multiCursorText };\n}\n"],"names":[],"mappings":"AAMO,eAAe,kBAAkB,CAAC,EACvC,MAAM,EACN,GAAG,EACH,QAAQ,GAAG,WAAW,EACtB,SAAS,EACT,WAAW,EACX,eAAe,GACW,EAAA;IAC1B,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,OAAO,KAAK,CAAC;IACnC,MAAM,EAAE,iBAAiB,EAAE,GAAG,MAAM,OAAO,aAAa,CAAC;AAEzD,IAAA,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAE;IACrC,MAAM,eAAe,GAAG,mBAAmB,CAAC,OAAO,CAAC,MAAM,CAAC;IAE3D,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,GAAG,CAAC,EAAE;AACjC,QAAA,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC;QACvC,SAAS,GAAG,SAAS;;AAEvB,IAAA,MAAM,cAAc,GAAG,CAAG,EAAA,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,EAAA,CAAI;IAEvD,MAAM,QAAQ,GAAG,IAAI,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,mBAAmB,CAAC;AACxE,IAAA,QAAQ,CAAC,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE;AAC5C,QAAA,IAAI,EAAE,QAAQ;AACd,QAAA,KAAK,EAAE,SAAS;AAChB,QAAA,UAAU,EAAE,cAAc;AAC3B,KAAA,CAAC;AAEF,IAAA,IAAI,eAAe;QACjB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAyB,KAAI;AAClD,YAAA,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC;AAChC,SAAC,CAAC;AAEJ,IAAA,IAAI,QAAQ;QACV,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,QAAiB,KAAI;YACxC,IAAI,QAAQ,IAAI,CAAC,eAAe,CAAC,MAAM,IAAI,WAAW,EAAE;AACtD,gBAAA,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,CAAC;;AAE1C,SAAC,CAAC;AAEJ,IAAA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE;AACtC;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-editor.js","sources":["../../../../../src/module/Editor/lib/init-editor.ts"],"sourcesContent":["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
|
|
1
|
+
{"version":3,"file":"init-editor.js","sources":["../../../../../src/module/Editor/lib/init-editor.ts"],"sourcesContent":["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"],"names":[],"mappings":";;;;;AAOO,eAAe,UAAU,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,IAAI,EAAmB,EAAA;AAC3F,IAAA,IAAI,QAAuC;AAC3C,IAAA,IAAI,eAAiC;IAErC,IAAI,WAAW,EAAE;AACf,QAAA,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,EAAE,GAAG,WAAW,EAAE,WAAW,EAAE,CAAC;AAChF,QAAA,QAAQ,GAAG,cAAc,CAAC,QAAQ;AAClC,QAAA,eAAe,GAAG,cAAc,CAAC,eAAe;;AAGlD,IAAA,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC;AAClC,QAAA,GAAG,IAAI;QACP,IAAI,EAAE,WAAW,IAAI,EAAE;QACvB,QAAQ;QACR,eAAe;AAChB,KAAA,CAAC;AACF,IAAA,MAAM,IAAI,GAAG,IAAI,UAAU,CAAC;QAC1B,KAAK;AACL,QAAA,MAAM,EAAE,IAAI;AACb,KAAA,CAAC;AAEF,IAAA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,eAAe,EAAE;AAC5C;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"style-inject.es.js","sources":["../../../../../../../../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js"],"sourcesContent":["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"],"names":[],"mappings":"AAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"style-inject.es.js","sources":["../../../../../../../../../../node_modules/.pnpm/style-inject@0.3.0/node_modules/style-inject/dist/style-inject.es.js"],"sourcesContent":["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"],"names":[],"mappings":"AAAA,SAAS,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE;AAC/B,EAAE,KAAK,GAAG,KAAK,MAAM,GAAG,GAAG,GAAG,EAAE;AAChC,EAAE,IAAI,QAAQ,GAAG,GAAG,CAAC,QAAQ;;AAE7B,EAAE,IAAY,OAAO,QAAQ,KAAK,WAAW,EAAE,EAAE,OAAO;;AAExD,EAAE,IAAI,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACtE,EAAE,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;AAC7C,EAAE,KAAK,CAAC,IAAI,GAAG,UAAU;;AAEzB,EAAE,IAAI,QAAQ,KAAK,KAAK,EAAE;AAC1B,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE;AACzB,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC;AAC/C,KAAK,MAAM;AACX,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC7B;AACA,GAAG,MAAM;AACT,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;AAC3B;;AAEA,EAAE,IAAI,KAAK,CAAC,UAAU,EAAE;AACxB,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,GAAG,GAAG;AAClC,GAAG,MAAM;AACT,IAAI,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;AACnD;AACA;;;;","x_google_ignoreList":[0]}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EditorView, KeyBinding, ViewUpdate, Decoration } from '@codemirror/view';
|
|
2
2
|
import { WebsocketProvider } from 'y-websocket';
|
|
3
3
|
import { Text } from 'yjs';
|
|
4
|
+
import { autocompletion } from '@codemirror/autocomplete';
|
|
4
5
|
import { EditorState, Range } from '@codemirror/state';
|
|
5
6
|
import { LanguageDescription } from '@codemirror/language';
|
|
6
7
|
import { SyntaxNodeRef } from '@lezer/common';
|
|
7
8
|
|
|
9
|
+
type InitAutoCompleteOptions = {
|
|
10
|
+
autoCompleteTagOptions?: string[];
|
|
11
|
+
autoCompleteConfig?: Omit<Exclude<Parameters<typeof autocompletion>[0], undefined>, "override">;
|
|
12
|
+
};
|
|
13
|
+
|
|
8
14
|
type EditorTheme = "dark" | "light";
|
|
9
15
|
type InitThemeOptions = {
|
|
10
16
|
dark?: ThemeOptions;
|
|
@@ -19,6 +25,7 @@ type ThemeConfig = {
|
|
|
19
25
|
fontFamily?: string;
|
|
20
26
|
color?: string;
|
|
21
27
|
background?: string;
|
|
28
|
+
codeFontFamily?: string;
|
|
22
29
|
codeBackground?: string;
|
|
23
30
|
codeColor?: string;
|
|
24
31
|
codeButtonColor?: string;
|
|
@@ -29,6 +36,8 @@ type ThemeConfig = {
|
|
|
29
36
|
mentionColor?: string;
|
|
30
37
|
vimSelectionFocused?: string;
|
|
31
38
|
vimSelection?: string;
|
|
39
|
+
codeBlockBorderColor?: string;
|
|
40
|
+
codeBlockBackground?: string;
|
|
32
41
|
};
|
|
33
42
|
type HighlightConfig = {
|
|
34
43
|
keyword?: string;
|
|
@@ -105,7 +114,7 @@ type InitSettingsOptions = {
|
|
|
105
114
|
vimMode?: boolean;
|
|
106
115
|
};
|
|
107
116
|
|
|
108
|
-
type ExtensionsOptions = InitListenersOptions & InitThemeOptions & InitSettingsOptions & InitMarkdownOptions & InitKeyMapsOptions;
|
|
117
|
+
type ExtensionsOptions = InitListenersOptions & InitThemeOptions & InitSettingsOptions & InitMarkdownOptions & InitKeyMapsOptions & InitAutoCompleteOptions;
|
|
109
118
|
type InitExtensionsOptions = {
|
|
110
119
|
multiCursorText: Text | undefined;
|
|
111
120
|
provider: WebsocketProvider | undefined;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@krainovsd/markdown-editor",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.2",
|
|
4
4
|
"description": "Krainov markdown-editor",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "KrainovSD <denislosev48@gmail.com>",
|
|
@@ -29,42 +29,31 @@
|
|
|
29
29
|
],
|
|
30
30
|
"scripts": {
|
|
31
31
|
"publish-package": "npm run lint && npm run build && npm publish",
|
|
32
|
-
"dev": "vite",
|
|
32
|
+
"dev": "vite --host",
|
|
33
|
+
"clear": "rm -rf ./lib",
|
|
33
34
|
"build": "npm run clear && npm run build:types && npm run build:js",
|
|
34
|
-
"lint": "eslint
|
|
35
|
-
"lint
|
|
35
|
+
"lint": "eslint . -c ./eslint.config.js --color --max-warnings 0",
|
|
36
|
+
"lint-check": "eslint --debug eslint.config.js",
|
|
36
37
|
"format": "prettier --write 'src/**/*.{js,ts,tsx,scss,css,json}'",
|
|
37
|
-
"
|
|
38
|
+
"format-check": "prettier --check ./src",
|
|
39
|
+
"lint-debug": "npx eslint --print-config eslint.config.js > eslint-config-rules.json",
|
|
40
|
+
"type-debug": "tsc --showConfig > typescript-config.json",
|
|
41
|
+
"build-dev": "vite build",
|
|
38
42
|
"build:js": "rm -rf lib && rollup --config rollup.config.ts --configPlugin @rollup/plugin-typescript --no-stdin --environment BUILD:production,NODE_ENV:production",
|
|
39
|
-
"build:types": "tspc -p tsconfig.build.json"
|
|
40
|
-
"clear": "rm -rf ./lib"
|
|
43
|
+
"build:types": "tspc -p tsconfig.build.json"
|
|
41
44
|
},
|
|
42
45
|
"devDependencies": {
|
|
43
|
-
"
|
|
44
|
-
"
|
|
45
|
-
"
|
|
46
|
-
"
|
|
47
|
-
"
|
|
48
|
-
"
|
|
49
|
-
"@rollup/plugin-typescript": "12.1.2",
|
|
50
|
-
"rollup-plugin-dts": "6.1.1",
|
|
51
|
-
"rollup-plugin-bundle-stats": "4.17.0",
|
|
52
|
-
"rollup-plugin-visualizer": "5.12.0",
|
|
53
|
-
"@types/rollup-plugin-peer-deps-external": "2.2.5",
|
|
54
|
-
"rollup-plugin-peer-deps-external": "2.2.4",
|
|
55
|
-
"rollup-plugin-postcss": "4.0.2",
|
|
56
|
-
"@trivago/prettier-plugin-sort-imports": "4.3.0",
|
|
57
|
-
"@types/node": "22.8.6",
|
|
58
|
-
"eslint": "9.17.0",
|
|
59
|
-
"prettier": "3.3.3",
|
|
46
|
+
"@krainovsd/presets": "0.1.5",
|
|
47
|
+
"eslint": "9.21.0",
|
|
48
|
+
"prettier": "3.5.2",
|
|
49
|
+
"rollup": "4.34.9",
|
|
50
|
+
"typescript": "5.7.3",
|
|
51
|
+
"typescript-transform-paths": "3.5.3",
|
|
60
52
|
"ts-patch": "3.3.0",
|
|
61
|
-
"
|
|
62
|
-
"typescript-transform-paths": "3.5.2",
|
|
53
|
+
"@types/node": "22.8.6",
|
|
63
54
|
"@codemirror/language-data": "6.5.1",
|
|
64
55
|
"@lezer/common": "1.2.3",
|
|
65
56
|
"@lezer/markdown": "1.3.2",
|
|
66
|
-
"sass": "1.83.0",
|
|
67
|
-
"sass-embedded": "1.81.0",
|
|
68
57
|
"vite": "6.0.11"
|
|
69
58
|
},
|
|
70
59
|
"dependencies": {
|
|
@@ -73,11 +62,12 @@
|
|
|
73
62
|
"@codemirror/language": "6.10.8",
|
|
74
63
|
"@codemirror/state": "6.5.1",
|
|
75
64
|
"@codemirror/view": "6.36.2",
|
|
65
|
+
"@codemirror/autocomplete": "6.18.6",
|
|
76
66
|
"@lezer/highlight": "1.2.1",
|
|
77
67
|
"@replit/codemirror-vim": "6.2.1",
|
|
78
68
|
"clsx": "2.1.1",
|
|
79
69
|
"y-codemirror.next": "0.3.5",
|
|
80
70
|
"y-websocket": "2.1.0",
|
|
81
|
-
"yjs": "13.6.
|
|
71
|
+
"yjs": "13.6.24"
|
|
82
72
|
}
|
|
83
73
|
}
|