@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.
Files changed (48) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +0 -0
  3. package/es/code-editor-info-manager.d.ts +8 -0
  4. package/es/code-editor-info-manager.d.ts.map +1 -0
  5. package/es/code-editor-info-manager.js +32 -0
  6. package/es/code-editor-manager.d.ts +60 -0
  7. package/es/code-editor-manager.d.ts.map +1 -0
  8. package/es/code-editor-manager.js +126 -0
  9. package/es/code-editor-model.d.ts +80 -0
  10. package/es/code-editor-model.d.ts.map +1 -0
  11. package/es/code-editor-model.js +108 -0
  12. package/es/code-editor-protocol.d.ts +475 -0
  13. package/es/code-editor-protocol.d.ts.map +1 -0
  14. package/es/code-editor-protocol.js +113 -0
  15. package/es/code-editor-settings.d.ts +34 -0
  16. package/es/code-editor-settings.d.ts.map +1 -0
  17. package/es/code-editor-settings.js +225 -0
  18. package/es/code-editor-state-manager.d.ts +14 -0
  19. package/es/code-editor-state-manager.d.ts.map +1 -0
  20. package/es/code-editor-state-manager.js +82 -0
  21. package/es/code-editor-view.d.ts +123 -0
  22. package/es/code-editor-view.d.ts.map +1 -0
  23. package/es/code-editor-view.js +420 -0
  24. package/es/index.d.ts +9 -0
  25. package/es/index.d.ts.map +1 -0
  26. package/es/index.js +8 -0
  27. package/es/language-specs.d.ts +38 -0
  28. package/es/language-specs.d.ts.map +1 -0
  29. package/es/language-specs.js +58 -0
  30. package/es/mimetype.d.ts +33 -0
  31. package/es/mimetype.d.ts.map +1 -0
  32. package/es/mimetype.js +11 -0
  33. package/es/module.d.ts +3 -0
  34. package/es/module.d.ts.map +1 -0
  35. package/es/module.js +10 -0
  36. package/package.json +60 -0
  37. package/src/code-editor-info-manager.ts +25 -0
  38. package/src/code-editor-manager.ts +71 -0
  39. package/src/code-editor-model.ts +120 -0
  40. package/src/code-editor-protocol.ts +681 -0
  41. package/src/code-editor-settings.ts +214 -0
  42. package/src/code-editor-state-manager.ts +54 -0
  43. package/src/code-editor-view.tsx +434 -0
  44. package/src/index.spec.ts +10 -0
  45. package/src/index.ts +8 -0
  46. package/src/language-specs.ts +69 -0
  47. package/src/mimetype.ts +37 -0
  48. 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
+ }
@@ -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);