@difizen/libro-code-editor 0.0.0-snapshot-20241017072317
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/LICENSE +21 -0
- package/README.md +0 -0
- package/es/code-editor-info-manager.d.ts +8 -0
- package/es/code-editor-info-manager.d.ts.map +1 -0
- package/es/code-editor-info-manager.js +32 -0
- package/es/code-editor-manager.d.ts +60 -0
- package/es/code-editor-manager.d.ts.map +1 -0
- package/es/code-editor-manager.js +126 -0
- package/es/code-editor-model.d.ts +80 -0
- package/es/code-editor-model.d.ts.map +1 -0
- package/es/code-editor-model.js +108 -0
- package/es/code-editor-protocol.d.ts +475 -0
- package/es/code-editor-protocol.d.ts.map +1 -0
- package/es/code-editor-protocol.js +113 -0
- package/es/code-editor-settings.d.ts +34 -0
- package/es/code-editor-settings.d.ts.map +1 -0
- package/es/code-editor-settings.js +225 -0
- package/es/code-editor-state-manager.d.ts +14 -0
- package/es/code-editor-state-manager.d.ts.map +1 -0
- package/es/code-editor-state-manager.js +82 -0
- package/es/code-editor-view.d.ts +123 -0
- package/es/code-editor-view.d.ts.map +1 -0
- package/es/code-editor-view.js +420 -0
- package/es/index.d.ts +9 -0
- package/es/index.d.ts.map +1 -0
- package/es/index.js +8 -0
- package/es/language-specs.d.ts +38 -0
- package/es/language-specs.d.ts.map +1 -0
- package/es/language-specs.js +58 -0
- package/es/mimetype.d.ts +33 -0
- package/es/mimetype.d.ts.map +1 -0
- package/es/mimetype.js +11 -0
- package/es/module.d.ts +3 -0
- package/es/module.d.ts.map +1 -0
- package/es/module.js +10 -0
- package/package.json +60 -0
- package/src/code-editor-info-manager.ts +25 -0
- package/src/code-editor-manager.ts +71 -0
- package/src/code-editor-model.ts +120 -0
- package/src/code-editor-protocol.ts +681 -0
- package/src/code-editor-settings.ts +214 -0
- package/src/code-editor-state-manager.ts +54 -0
- package/src/code-editor-view.tsx +434 -0
- package/src/index.spec.ts +10 -0
- package/src/index.ts +8 -0
- package/src/language-specs.ts +69 -0
- package/src/mimetype.ts +37 -0
- package/src/module.ts +22 -0
package/src/index.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './code-editor-manager.js';
|
|
2
|
+
export * from './code-editor-model.js';
|
|
3
|
+
export * from './code-editor-protocol.js';
|
|
4
|
+
export * from './code-editor-settings.js';
|
|
5
|
+
export * from './code-editor-view.js';
|
|
6
|
+
export * from './mimetype.js';
|
|
7
|
+
export * from './module.js';
|
|
8
|
+
export * from './language-specs.js';
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import type { Contribution } from '@difizen/mana-app';
|
|
2
|
+
import { ApplicationContribution } from '@difizen/mana-app';
|
|
3
|
+
import { contrib, singleton, Syringe } from '@difizen/mana-app';
|
|
4
|
+
|
|
5
|
+
export const LanguageSpecContribution = Syringe.defineToken('LanguageSpecContribution');
|
|
6
|
+
export interface LanguageSpecContribution {
|
|
7
|
+
registerLanguageSpec: (register: LanguageSpecRegistry) => void;
|
|
8
|
+
}
|
|
9
|
+
export interface LanguageSpec {
|
|
10
|
+
/**
|
|
11
|
+
* language name
|
|
12
|
+
*/
|
|
13
|
+
name: string;
|
|
14
|
+
/**
|
|
15
|
+
* https://code.visualstudio.com/docs/languages/identifiers
|
|
16
|
+
*/
|
|
17
|
+
language: string;
|
|
18
|
+
/**
|
|
19
|
+
* https://www.iana.org/assignments/media-types/media-types.xhtml
|
|
20
|
+
*/
|
|
21
|
+
mime: string;
|
|
22
|
+
/**
|
|
23
|
+
* file extension
|
|
24
|
+
*/
|
|
25
|
+
ext: string[];
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
@singleton({ contrib: [ApplicationContribution] })
|
|
29
|
+
export class LanguageSpecRegistry implements ApplicationContribution {
|
|
30
|
+
get languageSpecs(): LanguageSpec[] {
|
|
31
|
+
return this.languageSpecsData;
|
|
32
|
+
}
|
|
33
|
+
protected languageSpecsData: LanguageSpec[] = [];
|
|
34
|
+
|
|
35
|
+
protected readonly languageSpecProvider: Contribution.Provider<LanguageSpecContribution>;
|
|
36
|
+
|
|
37
|
+
constructor(
|
|
38
|
+
@contrib(LanguageSpecContribution)
|
|
39
|
+
languageSpecProvider: Contribution.Provider<LanguageSpecContribution>,
|
|
40
|
+
) {
|
|
41
|
+
this.languageSpecProvider = languageSpecProvider;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
initialize() {
|
|
45
|
+
this.languageSpecProvider.getContributions().forEach((item) => {
|
|
46
|
+
item.registerLanguageSpec(this);
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* 注册语言元信息,代码编辑器根据这些信息来设置语言;使用代码编辑器的cell一般需要注册语言元信息
|
|
52
|
+
*/
|
|
53
|
+
registerLanguageSpec(spec: LanguageSpec) {
|
|
54
|
+
const index = this.languageSpecsData.findIndex(
|
|
55
|
+
(item) => item.language === spec.language,
|
|
56
|
+
);
|
|
57
|
+
if (index >= 0) {
|
|
58
|
+
this.languageSpecsData.splice(index, 1, spec);
|
|
59
|
+
} else {
|
|
60
|
+
this.languageSpecsData.push(spec);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
hasLanguage(spec: LanguageSpec) {
|
|
65
|
+
return (
|
|
66
|
+
this.languageSpecsData.findIndex((item) => item.language === spec.language) > 0
|
|
67
|
+
);
|
|
68
|
+
}
|
|
69
|
+
}
|
package/src/mimetype.ts
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Copyright (c) Jupyter Development Team.
|
|
2
|
+
// Distributed under the terms of the Modified BSD License.
|
|
3
|
+
|
|
4
|
+
import type { ILanguageInfoMetadata } from '@difizen/libro-common';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* The mime type service of a code editor.
|
|
8
|
+
*/
|
|
9
|
+
export interface IEditorMimeTypeService {
|
|
10
|
+
/**
|
|
11
|
+
* Get a mime type for the given language info.
|
|
12
|
+
*
|
|
13
|
+
* @param info - The language information.
|
|
14
|
+
*
|
|
15
|
+
* @returns A valid mimetype.
|
|
16
|
+
*
|
|
17
|
+
* #### Notes
|
|
18
|
+
* If a mime type cannot be found returns the default mime type `text/plain`, never `null`.
|
|
19
|
+
*/
|
|
20
|
+
getMimeTypeByLanguage: (info: ILanguageInfoMetadata) => string;
|
|
21
|
+
/**
|
|
22
|
+
* Get a mime type for the given file path.
|
|
23
|
+
*
|
|
24
|
+
* @param filePath - The full path to the file.
|
|
25
|
+
*
|
|
26
|
+
* @returns A valid mimetype.
|
|
27
|
+
*
|
|
28
|
+
* #### Notes
|
|
29
|
+
* If a mime type cannot be found returns the default mime type `text/plain`, never `null`.
|
|
30
|
+
*/
|
|
31
|
+
getMimeTypeByFilePath: (filePath: string) => string;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The default mime type.
|
|
36
|
+
*/
|
|
37
|
+
export const defaultMimeType = 'text/plain';
|
package/src/module.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { ManaModule } from '@difizen/mana-app';
|
|
2
|
+
|
|
3
|
+
import { CodeEditorInfoManager } from './code-editor-info-manager.js';
|
|
4
|
+
import { CodeEditorManager } from './code-editor-manager.js';
|
|
5
|
+
import { Model } from './code-editor-model.js';
|
|
6
|
+
import { CodeEditorContribution } from './code-editor-protocol.js';
|
|
7
|
+
import { CodeEditorSettings } from './code-editor-settings.js';
|
|
8
|
+
import { CodeEditorStateManager } from './code-editor-state-manager.js';
|
|
9
|
+
import { CodeEditorView } from './code-editor-view.js';
|
|
10
|
+
import { LanguageSpecContribution, LanguageSpecRegistry } from './language-specs.js';
|
|
11
|
+
|
|
12
|
+
export const CodeEditorModule = ManaModule.create()
|
|
13
|
+
.register(
|
|
14
|
+
CodeEditorInfoManager,
|
|
15
|
+
CodeEditorView,
|
|
16
|
+
CodeEditorManager,
|
|
17
|
+
Model,
|
|
18
|
+
CodeEditorSettings,
|
|
19
|
+
CodeEditorStateManager,
|
|
20
|
+
LanguageSpecRegistry,
|
|
21
|
+
)
|
|
22
|
+
.contribution(CodeEditorContribution, LanguageSpecContribution);
|