@kerebron/extension-codemirror 0.6.7 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -1
- package/assets/codemirror.css +0 -38
- package/esm/ExtensionCodeMirror.d.ts +2 -4
- package/esm/ExtensionCodeMirror.d.ts.map +1 -1
- package/esm/ExtensionCodeMirror.js +1 -44
- package/esm/ExtensionCodeMirror.js.map +1 -1
- package/esm/remote-selections.d.ts.map +1 -1
- package/esm/remote-selections.js +4 -2
- package/esm/remote-selections.js.map +1 -1
- package/package.json +5 -5
- package/src/ExtensionCodeMirror.ts +2 -60
- package/src/remote-selections.ts +7 -5
package/README.md
CHANGED
package/assets/codemirror.css
CHANGED
|
@@ -40,41 +40,3 @@
|
|
|
40
40
|
color: var(--kb-color-text);
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
|
-
|
|
44
|
-
.kb-yjs__cursor {
|
|
45
|
-
position: fixed;
|
|
46
|
-
margin-left: -1px;
|
|
47
|
-
margin-right: -1px;
|
|
48
|
-
/*border-left: 1px solid black;*/
|
|
49
|
-
/*border-right: 1px solid black;*/
|
|
50
|
-
/*border-color: orange;*/
|
|
51
|
-
word-break: normal;
|
|
52
|
-
pointer-events: none;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/* This renders the username above the caret */
|
|
56
|
-
.kb-yjs__cursor > div {
|
|
57
|
-
position: absolute;
|
|
58
|
-
top: -1.05em;
|
|
59
|
-
left: -1px;
|
|
60
|
-
font-size: 13px;
|
|
61
|
-
background-color: rgb(250, 129, 0);
|
|
62
|
-
font-family: serif;
|
|
63
|
-
font-style: normal;
|
|
64
|
-
font-weight: normal;
|
|
65
|
-
line-height: normal;
|
|
66
|
-
user-select: none;
|
|
67
|
-
color: white;
|
|
68
|
-
padding-left: 2px;
|
|
69
|
-
padding-right: 2px;
|
|
70
|
-
white-space: nowrap;
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/* Collaborative cursor optimization for mobile */
|
|
74
|
-
@media (max-width: 767px) {
|
|
75
|
-
.kb-yjs__cursor > div {
|
|
76
|
-
font-size: var(--kb-text-xs);
|
|
77
|
-
padding: 1px var(--kb-space-xs);
|
|
78
|
-
border-radius: var(--kb-radius-sm);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { AnyExtensionOrReq, type Converter, type CoreEditor, Extension } from '@kerebron/editor';
|
|
1
|
+
import { AnyExtensionOrReq, Extension } from '@kerebron/editor';
|
|
3
2
|
import { NodeCodeMirrorConfig } from './NodeCodeMirror.js';
|
|
4
3
|
export * from './NodeCodeMirror.js';
|
|
5
4
|
export interface ExtensionCodeMirrorConfig {
|
|
@@ -8,10 +7,9 @@ export interface ExtensionCodeMirrorConfig {
|
|
|
8
7
|
readOnly?: boolean;
|
|
9
8
|
}
|
|
10
9
|
export declare class ExtensionCodeMirror extends Extension {
|
|
11
|
-
|
|
10
|
+
config: ExtensionCodeMirrorConfig;
|
|
12
11
|
name: string;
|
|
13
12
|
requires: AnyExtensionOrReq[];
|
|
14
13
|
constructor(config: ExtensionCodeMirrorConfig);
|
|
15
|
-
getConverters(editor: CoreEditor, schema: Schema): Record<string, Converter>;
|
|
16
14
|
}
|
|
17
15
|
//# sourceMappingURL=ExtensionCodeMirror.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtensionCodeMirror.d.ts","sourceRoot":"","sources":["../src/ExtensionCodeMirror.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"ExtensionCodeMirror.d.ts","sourceRoot":"","sources":["../src/ExtensionCodeMirror.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAkB,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,cAAc,qBAAqB,CAAC;AAEpC,MAAM,WAAW,yBAAyB;IACxC,iBAAiB,CAAC,EAAE,oBAAoB,CAAC,mBAAmB,CAAC,CAAC;IAC9D,KAAK,CAAC,EAAE,oBAAoB,CAAC,OAAO,CAAC,CAAC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,mBAAoB,SAAQ,SAAS;IAIpB,MAAM,EAAE,yBAAyB;IAHpD,IAAI,SAAiB;IAC9B,QAAQ,EAAE,iBAAiB,EAAE,CAAC;gBAEF,MAAM,EAAE,yBAAyB;CAU9D"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { Extension
|
|
2
|
-
import { createNodeFromObject } from '@kerebron/editor/utilities';
|
|
1
|
+
import { Extension } from '@kerebron/editor';
|
|
3
2
|
import { NodeCodeMirror } from './NodeCodeMirror.js';
|
|
4
3
|
export * from './NodeCodeMirror.js';
|
|
5
4
|
export class ExtensionCodeMirror extends Extension {
|
|
@@ -16,47 +15,5 @@ export class ExtensionCodeMirror extends Extension {
|
|
|
16
15
|
}),
|
|
17
16
|
];
|
|
18
17
|
}
|
|
19
|
-
getConverters(editor, schema) {
|
|
20
|
-
return {
|
|
21
|
-
'text/code-only': {
|
|
22
|
-
fromDoc: async (document) => {
|
|
23
|
-
const retVal = [];
|
|
24
|
-
if (document.content) {
|
|
25
|
-
for (const node of document.content.toJSON()) {
|
|
26
|
-
if ('code_block' === node.type && Array.isArray(node.content)) {
|
|
27
|
-
for (const content of node.content) {
|
|
28
|
-
retVal.push(content.text);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return new TextEncoder().encode(retVal.join(''));
|
|
34
|
-
},
|
|
35
|
-
toDoc: async (buffer) => {
|
|
36
|
-
const code = new TextDecoder().decode(buffer);
|
|
37
|
-
const content = {
|
|
38
|
-
'type': 'doc_code',
|
|
39
|
-
'content': [
|
|
40
|
-
{
|
|
41
|
-
'type': 'code_block',
|
|
42
|
-
'attrs': {
|
|
43
|
-
'lang': schema.topNodeType.spec.defaultAttrs?.lang,
|
|
44
|
-
},
|
|
45
|
-
'content': [
|
|
46
|
-
{
|
|
47
|
-
'type': 'text',
|
|
48
|
-
'text': code,
|
|
49
|
-
},
|
|
50
|
-
],
|
|
51
|
-
},
|
|
52
|
-
],
|
|
53
|
-
};
|
|
54
|
-
return createNodeFromObject(content, schema, {
|
|
55
|
-
errorOnInvalidContent: false,
|
|
56
|
-
});
|
|
57
|
-
},
|
|
58
|
-
},
|
|
59
|
-
};
|
|
60
|
-
}
|
|
61
18
|
}
|
|
62
19
|
//# sourceMappingURL=ExtensionCodeMirror.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ExtensionCodeMirror.js","sourceRoot":"","sources":["../src/ExtensionCodeMirror.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ExtensionCodeMirror.js","sourceRoot":"","sources":["../src/ExtensionCodeMirror.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAwB,MAAM,qBAAqB,CAAC;AAE3E,cAAc,qBAAqB,CAAC;AAQpC,MAAM,OAAO,mBAAoB,SAAQ,SAAS;IAIpB;IAHnB,IAAI,GAAG,aAAa,CAAC;IAC9B,QAAQ,CAAsB;IAE9B,YAA4B,MAAiC;QAC3D,KAAK,CAAC,MAAM,CAAC,CAAC;QADY,WAAM,GAAN,MAAM,CAA2B;QAG3D,IAAI,CAAC,QAAQ,GAAG;YACd,IAAI,cAAc,CAAC;gBACjB,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;gBAC3C,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CAAC;SACH,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-selections.d.ts","sourceRoot":"","sources":["../src/remote-selections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAK7C,OAAO,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"remote-selections.d.ts","sourceRoot":"","sources":["../src/remote-selections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAK7C,OAAO,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AAQrE,eAAO,MAAM,sBAAsB,mBAuDjC,CAAC;AA8CH,qBAAa,4BAA4B;IACvC,IAAI,EAAE,gBAAgB,CAAC;IACvB,OAAO,CAAC,MAAM,CAAa;IAC3B,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC;IAClC,OAAO,CAAC,sBAAsB,CAAa;gBAE/B,IAAI,EAAE,MAAM,CAAC,UAAU;IAenC,OAAO;IAOP,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU;CAiHjC;AAED,eAAO,MAAM,iBAAiB,4DAK7B,CAAC"}
|
package/esm/remote-selections.js
CHANGED
|
@@ -4,6 +4,7 @@ import * as dom from 'lib0/dom';
|
|
|
4
4
|
import * as pair from 'lib0/pair';
|
|
5
5
|
import * as math from 'lib0/math';
|
|
6
6
|
import { remoteSyncFacet } from './remote-sync.js';
|
|
7
|
+
import { remoteSelectionPluginKey, } from '@kerebron/extension-basic-editor/ExtensionRemoteSelection';
|
|
7
8
|
export const yRemoteSelectionsTheme = cmView.EditorView.baseTheme({
|
|
8
9
|
'.cm-rSelection': {},
|
|
9
10
|
'.cm-rLineSelection': {
|
|
@@ -108,6 +109,7 @@ export class YRemoteSelectionsPluginValue {
|
|
|
108
109
|
this.conf = view.state.facet(remoteSyncFacet);
|
|
109
110
|
this.editor = this.conf.editor;
|
|
110
111
|
this.decorations = cmState.RangeSet.of([]);
|
|
112
|
+
// TODO refactor to use `meta(remoteSelectionChange)`
|
|
111
113
|
this._remoteSelectionChange = () => {
|
|
112
114
|
view.dispatch({ annotations: [yRemoteSelectionsAnnotation.of([])] });
|
|
113
115
|
};
|
|
@@ -118,8 +120,8 @@ export class YRemoteSelectionsPluginValue {
|
|
|
118
120
|
}
|
|
119
121
|
update(update) {
|
|
120
122
|
const decorations = [];
|
|
121
|
-
const
|
|
122
|
-
const remoteStates =
|
|
123
|
+
const pluginState = remoteSelectionPluginKey.getState(this.editor.state);
|
|
124
|
+
const remoteStates = pluginState?.remoteStates || [];
|
|
123
125
|
for (const state of remoteStates) {
|
|
124
126
|
const clientId = state.clientId;
|
|
125
127
|
const cursor = state.cursor;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remote-selections.js","sourceRoot":"","sources":["../src/remote-selections.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAE3C,OAAO,KAAK,OAAO,MAAM,mBAAmB,CAAC;AAC7C,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,OAAO,EAAoB,eAAe,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"remote-selections.js","sourceRoot":"","sources":["../src/remote-selections.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kerebron/extension-codemirror",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.7.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"module": "./esm/ExtensionCodeMirror.js",
|
|
6
6
|
"exports": {
|
|
@@ -37,10 +37,10 @@
|
|
|
37
37
|
"@codemirror/search": "6.5.10",
|
|
38
38
|
"@codemirror/state": "6.5.2",
|
|
39
39
|
"@codemirror/view": "6.38.1",
|
|
40
|
-
"@kerebron/editor": "0.
|
|
41
|
-
"@kerebron/extension-basic-editor": "0.
|
|
42
|
-
"@kerebron/extension-lsp": "0.
|
|
43
|
-
"@kerebron/extension-markdown": "0.
|
|
40
|
+
"@kerebron/editor": "0.7.0",
|
|
41
|
+
"@kerebron/extension-basic-editor": "0.7.0",
|
|
42
|
+
"@kerebron/extension-lsp": "0.7.0",
|
|
43
|
+
"@kerebron/extension-markdown": "0.7.0",
|
|
44
44
|
"lib0": "0.2.109",
|
|
45
45
|
"prosemirror-model": "1.25.3",
|
|
46
46
|
"prosemirror-state": "1.4.3",
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
AnyExtensionOrReq,
|
|
4
|
-
type Converter,
|
|
5
|
-
type CoreEditor,
|
|
6
|
-
Extension,
|
|
7
|
-
} from '@kerebron/editor';
|
|
8
|
-
import { createNodeFromObject } from '@kerebron/editor/utilities';
|
|
1
|
+
import { AnyExtensionOrReq, Extension } from '@kerebron/editor';
|
|
9
2
|
import { NodeCodeMirror, NodeCodeMirrorConfig } from './NodeCodeMirror.js';
|
|
10
3
|
|
|
11
4
|
export * from './NodeCodeMirror.js';
|
|
@@ -20,7 +13,7 @@ export class ExtensionCodeMirror extends Extension {
|
|
|
20
13
|
override name = 'code-mirror';
|
|
21
14
|
requires: AnyExtensionOrReq[];
|
|
22
15
|
|
|
23
|
-
constructor(
|
|
16
|
+
constructor(public override config: ExtensionCodeMirrorConfig) {
|
|
24
17
|
super(config);
|
|
25
18
|
|
|
26
19
|
this.requires = [
|
|
@@ -30,55 +23,4 @@ export class ExtensionCodeMirror extends Extension {
|
|
|
30
23
|
}),
|
|
31
24
|
];
|
|
32
25
|
}
|
|
33
|
-
|
|
34
|
-
override getConverters(
|
|
35
|
-
editor: CoreEditor,
|
|
36
|
-
schema: Schema,
|
|
37
|
-
): Record<string, Converter> {
|
|
38
|
-
return {
|
|
39
|
-
'text/code-only': {
|
|
40
|
-
fromDoc: async (document: Node): Promise<Uint8Array> => {
|
|
41
|
-
const retVal = [];
|
|
42
|
-
if (document.content) {
|
|
43
|
-
for (const node of document.content.toJSON()) {
|
|
44
|
-
if ('code_block' === node.type && Array.isArray(node.content)) {
|
|
45
|
-
for (const content of node.content) {
|
|
46
|
-
retVal.push(content.text);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
return new TextEncoder().encode(retVal.join(''));
|
|
52
|
-
},
|
|
53
|
-
toDoc: async (buffer: Uint8Array): Promise<Node> => {
|
|
54
|
-
const code = new TextDecoder().decode(buffer);
|
|
55
|
-
const content = {
|
|
56
|
-
'type': 'doc_code',
|
|
57
|
-
'content': [
|
|
58
|
-
{
|
|
59
|
-
'type': 'code_block',
|
|
60
|
-
'attrs': {
|
|
61
|
-
'lang': schema.topNodeType.spec.defaultAttrs?.lang,
|
|
62
|
-
},
|
|
63
|
-
'content': [
|
|
64
|
-
{
|
|
65
|
-
'type': 'text',
|
|
66
|
-
'text': code,
|
|
67
|
-
},
|
|
68
|
-
],
|
|
69
|
-
},
|
|
70
|
-
],
|
|
71
|
-
};
|
|
72
|
-
|
|
73
|
-
return createNodeFromObject(
|
|
74
|
-
content,
|
|
75
|
-
schema,
|
|
76
|
-
{
|
|
77
|
-
errorOnInvalidContent: false,
|
|
78
|
-
},
|
|
79
|
-
);
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
26
|
}
|
package/src/remote-selections.ts
CHANGED
|
@@ -8,7 +8,10 @@ import * as math from 'lib0/math';
|
|
|
8
8
|
import { RemoteSyncConfig, remoteSyncFacet } from './remote-sync.js';
|
|
9
9
|
import type { CoreEditor } from '@kerebron/editor';
|
|
10
10
|
|
|
11
|
-
import
|
|
11
|
+
import {
|
|
12
|
+
type ExtensionRemoteSelection,
|
|
13
|
+
remoteSelectionPluginKey,
|
|
14
|
+
} from '@kerebron/extension-basic-editor/ExtensionRemoteSelection';
|
|
12
15
|
|
|
13
16
|
export const yRemoteSelectionsTheme = cmView.EditorView.baseTheme({
|
|
14
17
|
'.cm-rSelection': {},
|
|
@@ -122,6 +125,7 @@ export class YRemoteSelectionsPluginValue {
|
|
|
122
125
|
this.editor = this.conf.editor;
|
|
123
126
|
this.decorations = cmState.RangeSet.of([]);
|
|
124
127
|
|
|
128
|
+
// TODO refactor to use `meta(remoteSelectionChange)`
|
|
125
129
|
this._remoteSelectionChange = () => {
|
|
126
130
|
view.dispatch({ annotations: [yRemoteSelectionsAnnotation.of([])] });
|
|
127
131
|
};
|
|
@@ -141,11 +145,9 @@ export class YRemoteSelectionsPluginValue {
|
|
|
141
145
|
update(update: cmView.ViewUpdate) {
|
|
142
146
|
const decorations: cmState.Range<cmView.Decoration>[] = [];
|
|
143
147
|
|
|
144
|
-
const
|
|
145
|
-
'remote-selection',
|
|
146
|
-
)!;
|
|
148
|
+
const pluginState = remoteSelectionPluginKey.getState(this.editor.state);
|
|
147
149
|
|
|
148
|
-
const remoteStates =
|
|
150
|
+
const remoteStates = pluginState?.remoteStates || [];
|
|
149
151
|
for (const state of remoteStates) {
|
|
150
152
|
const clientId = state.clientId;
|
|
151
153
|
|