@journeyapps-labs/reactor-mod-editor 1.0.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.
Files changed (170) hide show
  1. package/README.md +10 -0
  2. package/dist/@types/EditorModule.d.ts +7 -0
  3. package/dist/@types/MonacoCommandPalletSearchEngine.d.ts +21 -0
  4. package/dist/@types/actions/ChangeEditorThemeAction.d.ts +9 -0
  5. package/dist/@types/index.d.ts +16 -0
  6. package/dist/@types/languages/languages.d.ts +39 -0
  7. package/dist/@types/languages/logs.d.ts +3 -0
  8. package/dist/@types/providers/EditorThemeProvider.d.ts +14 -0
  9. package/dist/@types/settings/StoredThemesSettings.d.ts +13 -0
  10. package/dist/@types/settings/VimSupportSetting.d.ts +7 -0
  11. package/dist/@types/shortcuts/MonacoShortcut.d.ts +9 -0
  12. package/dist/@types/shortcuts/MonacoShortcutHandler.d.ts +17 -0
  13. package/dist/@types/shortcuts/MonacoShortcutMap.d.ts +83 -0
  14. package/dist/@types/stores/MonacoStore.d.ts +38 -0
  15. package/dist/@types/stores/MonacoThemeStore.d.ts +34 -0
  16. package/dist/@types/stores/keybindings/KeybindingsRegistry.d.ts +46 -0
  17. package/dist/@types/stores/keybindings/MonacoKeybindingStore.d.ts +27 -0
  18. package/dist/@types/stores/keybindings/definitions.d.ts +21 -0
  19. package/dist/@types/stores/keybindings/utils.d.ts +2 -0
  20. package/dist/@types/theme/EditorThemePreferencesWidget.d.ts +26 -0
  21. package/dist/@types/theme/SmartEditorThemePreferencesWidget.d.ts +8 -0
  22. package/dist/@types/theme/UploadVSIXThemeBtnWidget.d.ts +12 -0
  23. package/dist/@types/theme/patchThemeService.d.ts +9 -0
  24. package/dist/@types/theme/theme-utils.d.ts +61 -0
  25. package/dist/@types/theme-reactor/editor-theme-fragment.d.ts +41 -0
  26. package/dist/@types/utils/paths.d.ts +23 -0
  27. package/dist/@types/utils/useEditorStickyHeader.d.ts +8 -0
  28. package/dist/@types/widgets/DualEditorWidget.d.ts +7 -0
  29. package/dist/@types/widgets/EditorWidget.d.ts +15 -0
  30. package/dist/@types/widgets/MonacoEditorWidget.d.ts +10 -0
  31. package/dist/@types/widgets/SimpleEditorWidget.d.ts +8 -0
  32. package/dist/EditorModule.js +73 -0
  33. package/dist/EditorModule.js.map +1 -0
  34. package/dist/MonacoCommandPalletSearchEngine.js +52 -0
  35. package/dist/MonacoCommandPalletSearchEngine.js.map +1 -0
  36. package/dist/actions/ChangeEditorThemeAction.js +43 -0
  37. package/dist/actions/ChangeEditorThemeAction.js.map +1 -0
  38. package/dist/index.js +33 -0
  39. package/dist/index.js.map +1 -0
  40. package/dist/languages/languages.js +155 -0
  41. package/dist/languages/languages.js.map +1 -0
  42. package/dist/languages/logs.js +110 -0
  43. package/dist/languages/logs.js.map +1 -0
  44. package/dist/providers/EditorThemeProvider.js +26 -0
  45. package/dist/providers/EditorThemeProvider.js.map +1 -0
  46. package/dist/settings/StoredThemesSettings.js +45 -0
  47. package/dist/settings/StoredThemesSettings.js.map +1 -0
  48. package/dist/settings/VimSupportSetting.js +19 -0
  49. package/dist/settings/VimSupportSetting.js.map +1 -0
  50. package/dist/shortcuts/MonacoShortcut.js +27 -0
  51. package/dist/shortcuts/MonacoShortcut.js.map +1 -0
  52. package/dist/shortcuts/MonacoShortcutHandler.js +119 -0
  53. package/dist/shortcuts/MonacoShortcutHandler.js.map +1 -0
  54. package/dist/shortcuts/MonacoShortcutMap.js +84 -0
  55. package/dist/shortcuts/MonacoShortcutMap.js.map +1 -0
  56. package/dist/stores/MonacoStore.js +119 -0
  57. package/dist/stores/MonacoStore.js.map +1 -0
  58. package/dist/stores/MonacoThemeStore.js +143 -0
  59. package/dist/stores/MonacoThemeStore.js.map +1 -0
  60. package/dist/stores/keybindings/KeybindingsRegistry.js +131 -0
  61. package/dist/stores/keybindings/KeybindingsRegistry.js.map +1 -0
  62. package/dist/stores/keybindings/MonacoKeybindingStore.js +105 -0
  63. package/dist/stores/keybindings/MonacoKeybindingStore.js.map +1 -0
  64. package/dist/stores/keybindings/definitions.js +5 -0
  65. package/dist/stores/keybindings/definitions.js.map +1 -0
  66. package/dist/stores/keybindings/utils.js +12 -0
  67. package/dist/stores/keybindings/utils.js.map +1 -0
  68. package/dist/theme/EditorThemePreferencesWidget.js +160 -0
  69. package/dist/theme/EditorThemePreferencesWidget.js.map +1 -0
  70. package/dist/theme/SmartEditorThemePreferencesWidget.js +62 -0
  71. package/dist/theme/SmartEditorThemePreferencesWidget.js.map +1 -0
  72. package/dist/theme/UploadVSIXThemeBtnWidget.js +93 -0
  73. package/dist/theme/UploadVSIXThemeBtnWidget.js.map +1 -0
  74. package/dist/theme/patchThemeService.js +146 -0
  75. package/dist/theme/patchThemeService.js.map +1 -0
  76. package/dist/theme/theme-utils.js +65 -0
  77. package/dist/theme/theme-utils.js.map +1 -0
  78. package/dist/theme-reactor/editor-theme-fragment.js +70 -0
  79. package/dist/theme-reactor/editor-theme-fragment.js.map +1 -0
  80. package/dist/tsconfig.tsbuildinfo +1 -0
  81. package/dist/utils/paths.js +110 -0
  82. package/dist/utils/paths.js.map +1 -0
  83. package/dist/utils/useEditorStickyHeader.js +45 -0
  84. package/dist/utils/useEditorStickyHeader.js.map +1 -0
  85. package/dist/widgets/DualEditorWidget.js +79 -0
  86. package/dist/widgets/DualEditorWidget.js.map +1 -0
  87. package/dist/widgets/EditorWidget.js +85 -0
  88. package/dist/widgets/EditorWidget.js.map +1 -0
  89. package/dist/widgets/MonacoEditorWidget.js +29 -0
  90. package/dist/widgets/MonacoEditorWidget.js.map +1 -0
  91. package/dist/widgets/SimpleEditorWidget.js +71 -0
  92. package/dist/widgets/SimpleEditorWidget.js.map +1 -0
  93. package/dist-module/00a5102416a37050fa62.tmLanguage +1282 -0
  94. package/dist-module/092ac75109eb363dd826.tmLanguage +424 -0
  95. package/dist-module/100.bundle.js +1 -0
  96. package/dist-module/116.bundle.js +1 -0
  97. package/dist-module/173.bundle.js +1 -0
  98. package/dist-module/179.bundle.js +1 -0
  99. package/dist-module/18358219dee0ad14cc0c.tmLanguage +765 -0
  100. package/dist-module/195.bundle.js +1 -0
  101. package/dist-module/277.bundle.js +1 -0
  102. package/dist-module/299.bundle.js +1 -0
  103. package/dist-module/306.bundle.js +1 -0
  104. package/dist-module/344.bundle.js +1 -0
  105. package/dist-module/399345f371a7cb9eb1ba.tmLanguage +629 -0
  106. package/dist-module/404.bundle.js +4 -0
  107. package/dist-module/404.bundle.js.LICENSE.txt +6 -0
  108. package/dist-module/404.bundle.js.map +1 -0
  109. package/dist-module/43.bundle.js +1 -0
  110. package/dist-module/438.bundle.js +3 -0
  111. package/dist-module/438.bundle.js.map +1 -0
  112. package/dist-module/479.bundle.js +1 -0
  113. package/dist-module/491.bundle.js +1 -0
  114. package/dist-module/513.bundle.js +1 -0
  115. package/dist-module/549.bundle.js +1 -0
  116. package/dist-module/5e221c90a0dcbd4af855.tmLanguage +237 -0
  117. package/dist-module/6486a2df9ca5896c2cb6.tmLanguage +5739 -0
  118. package/dist-module/65.bundle.js +1 -0
  119. package/dist-module/66.bundle.js +1 -0
  120. package/dist-module/685.bundle.js +1 -0
  121. package/dist-module/6e3d5ec6699a8d147d29.wasm +0 -0
  122. package/dist-module/7.bundle.js +1 -0
  123. package/dist-module/703774d50b4d4526a465.tmLanguage +386 -0
  124. package/dist-module/717.bundle.js +2 -0
  125. package/dist-module/728.bundle.js +1 -0
  126. package/dist-module/77a7afbe329083ed0f59.tmLanguage +1183 -0
  127. package/dist-module/78.bundle.js +1 -0
  128. package/dist-module/829.bundle.js +1 -0
  129. package/dist-module/831968f77a9412d07cc2.tmLanguage +506 -0
  130. package/dist-module/862.bundle.js +1 -0
  131. package/dist-module/87.bundle.js +1 -0
  132. package/dist-module/923.bundle.js +1 -0
  133. package/dist-module/931.bundle.js +1 -0
  134. package/dist-module/933.bundle.js +3 -0
  135. package/dist-module/933.bundle.js.map +1 -0
  136. package/dist-module/970.bundle.js +1 -0
  137. package/dist-module/984.bundle.js +1 -0
  138. package/dist-module/992.bundle.js +1 -0
  139. package/dist-module/996.bundle.js +1 -0
  140. package/dist-module/9c8494157d226e95da5e.tmLanguage +1377 -0
  141. package/dist-module/a3e215de85a86294de8a.tmLanguage +385 -0
  142. package/dist-module/ba5650c2a0269a236153.tmLanguage +9349 -0
  143. package/dist-module/bundle.js +97 -0
  144. package/dist-module/bundle.js.LICENSE.txt +27 -0
  145. package/dist-module/bundle.js.map +1 -0
  146. package/dist-module/editor.worker.bundle.js +1 -0
  147. package/dist-module/f6283f7ccaed1249d9eb.ttf +0 -0
  148. package/dist-module/json.worker.bundle.js +2 -0
  149. package/dist-module/json.worker.bundle.js.LICENSE.txt +6 -0
  150. package/dist-module/yaml.worker.bundle.js +1 -0
  151. package/media/css.tmLanguage +1183 -0
  152. package/media/handlebars.tmLanguage +1282 -0
  153. package/media/html.tmLanguage +506 -0
  154. package/media/javascript.tmLanguage +5739 -0
  155. package/media/json.tmLanguage +386 -0
  156. package/media/jxml.tmLanguage +424 -0
  157. package/media/markdown.tmLanguage +1377 -0
  158. package/media/regularExpressions.tmLanguage +237 -0
  159. package/media/sql.tmLanguage +765 -0
  160. package/media/themes/ayu-light.json5 +847 -0
  161. package/media/themes/ayu-mirage.json5 +846 -0
  162. package/media/themes/journey.json5 +1061 -0
  163. package/media/themes/oxide.json5 +579 -0
  164. package/media/themes/reactor.json5 +775 -0
  165. package/media/themes/scarlet.json5 +836 -0
  166. package/media/typescript.tmLanguage +9349 -0
  167. package/media/xml.tmLanguage +385 -0
  168. package/media/yaml.tmLanguage +629 -0
  169. package/package.json +45 -0
  170. package/reactor.config.json +4 -0
@@ -0,0 +1,110 @@
1
+ const LOCAL_URI_PREFIX = 'file:///';
2
+ import * as _ from 'lodash';
3
+ import { extname } from 'path';
4
+ // file:///12341-234-1234/test3_-4.1234/1234/1234/1234/1234
5
+ // file:///<app_id>/<branch>/<path>
6
+ const pathRegex = /^\/([\w|\d|-]*)\/([^\/]*)\/(.*)$/;
7
+ const _uriToPath = _.memoize((path) => {
8
+ const matches = pathRegex.exec(path);
9
+ if (matches) {
10
+ return {
11
+ appID: matches[1],
12
+ branch: decodeURIComponent(matches[2]),
13
+ path: matches[3]
14
+ };
15
+ }
16
+ });
17
+ /**
18
+ * Take a Monaco model URI, and covert it to a path in the local repo.
19
+ * If the URI does not reference a valid local path, null is returned.
20
+ * No checks are performed on whether or not the referenced file exists.
21
+ */
22
+ export const uriToPath = (uri) => {
23
+ // monaco.Uri#toString() is broken - a path of "%2F" in uri.path is turned into "%252F".
24
+ // `uri.path` bypasses that.
25
+ if (uri.toString().startsWith(LOCAL_URI_PREFIX)) {
26
+ return _uriToPath(uri.path);
27
+ }
28
+ else {
29
+ return null;
30
+ }
31
+ };
32
+ /**
33
+ * Given a local filename, return a monaco Uri.
34
+ * @param path The local path, e.g. schema.xml or mobile/main.js
35
+ */
36
+ export function pathToUri(path, _monaco) {
37
+ // monaco.Uri.parse is broken, and won't be fixed. A URL of "file:///some%2Fbranch" is turned into { path: "/some/branch" }.
38
+ // monaco.Uri.file avoids keeps the path intact.
39
+ // https://github.com/microsoft/vscode/issues/45515
40
+ return _monaco.Uri.file(`/${path.appID}/${encodeURIComponent(path.branch)}/${path.path}`);
41
+ }
42
+ const getIdealLanguageFromPath = _.memoize((path) => {
43
+ const ext = extname(path);
44
+ switch (ext) {
45
+ case '.html':
46
+ case '.htm': {
47
+ return 'html';
48
+ }
49
+ case '.js': {
50
+ return 'javascript';
51
+ }
52
+ case '.json': {
53
+ return 'json';
54
+ }
55
+ case '.md': {
56
+ return 'markdown';
57
+ }
58
+ case '.ts': {
59
+ return 'typescript';
60
+ }
61
+ case '.tsx': {
62
+ return 'typescript';
63
+ }
64
+ case '.jsx': {
65
+ return 'typescript';
66
+ }
67
+ case '.css': {
68
+ return 'css';
69
+ }
70
+ case '.scss': {
71
+ // This mapping is not perfect, but it's decent at least.
72
+ return 'css';
73
+ }
74
+ case '.handlebars': {
75
+ return 'handlebars';
76
+ }
77
+ case '.xml': {
78
+ if (path.endsWith('.view.xml') || path.endsWith('schema.xml')) {
79
+ return 'jxml';
80
+ }
81
+ return 'xml';
82
+ }
83
+ case '.py': {
84
+ return 'python';
85
+ }
86
+ case '.yml':
87
+ case '.yaml':
88
+ case '.lock': {
89
+ return 'yaml';
90
+ }
91
+ default: {
92
+ return 'text';
93
+ }
94
+ }
95
+ });
96
+ /**
97
+ * Given a path or filename return a language based on the file extension. Optionally accepts a file_length
98
+ * parameter (1 char = 2 bytes) which, if too large, will result in 'text' being returned regardless of
99
+ * language
100
+ */
101
+ export function getLanguageFromFile(file, file_length) {
102
+ const mime = getIdealLanguageFromPath(file);
103
+ // html can be impossibly large to parse
104
+ const MAX_CONTENT_LENGTH = 250 * 1024;
105
+ if (mime === 'html' && file_length && file_length * 2 > MAX_CONTENT_LENGTH) {
106
+ return 'text';
107
+ }
108
+ return mime;
109
+ }
110
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { useEffect, useState } from 'react';
2
+ import * as _ from 'lodash';
3
+ export const useEditorStickyHeader = (props) => {
4
+ const [zIndex, setZIndex] = useState();
5
+ const [lines, setLines] = useState(0);
6
+ useEffect(() => {
7
+ if (props.editor) {
8
+ const compute = _.debounce(() => {
9
+ let element = props.editor.getContainerDomNode().querySelector('.sticky-widget');
10
+ if (element) {
11
+ _.defer(() => {
12
+ var _a, _b;
13
+ let lines = ((_a = element.querySelector('.sticky-widget-lines')) === null || _a === void 0 ? void 0 : _a.childNodes) || [];
14
+ setZIndex((_b = element.computedStyleMap().get('z-index')) === null || _b === void 0 ? void 0 : _b.value);
15
+ setLines(lines.length);
16
+ });
17
+ }
18
+ }, 200);
19
+ // could already be on scrolled sticky state
20
+ let res = setTimeout(() => {
21
+ compute();
22
+ res = null;
23
+ }, 500);
24
+ const l1 = props.editor.onDidScrollChange(() => {
25
+ compute();
26
+ });
27
+ const l2 = props.editor.onDidDispose(() => {
28
+ l1.dispose();
29
+ l2.dispose();
30
+ });
31
+ return () => {
32
+ l1.dispose();
33
+ l2.dispose();
34
+ if (res) {
35
+ clearTimeout(res);
36
+ }
37
+ };
38
+ }
39
+ }, [props.editor]);
40
+ return {
41
+ zIndex,
42
+ lines
43
+ };
44
+ };
45
+ //# sourceMappingURL=useEditorStickyHeader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useEditorStickyHeader.js","sourceRoot":"","sources":["../../src/utils/useEditorStickyHeader.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAM5B,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAmC,EAAE,EAAE;IAC3E,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,EAAU,CAAC;IAC/C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAEtC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,EAAE;gBAC9B,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC;gBACjF,IAAI,OAAO,EAAE,CAAC;oBACZ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;;wBACX,IAAI,KAAK,GAAG,CAAA,MAAA,OAAO,CAAC,aAAa,CAAC,sBAAsB,CAAC,0CAAE,UAAU,KAAI,EAAE,CAAC;wBAC5E,SAAS,CAAC,MAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAS,0CAAE,KAAK,CAAC,CAAC;wBACrE,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;oBACzB,CAAC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;YAER,4CAA4C;YAC5C,IAAI,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE;gBACxB,OAAO,EAAE,CAAC;gBACV,GAAG,GAAG,IAAI,CAAC;YACb,CAAC,EAAE,GAAG,CAAC,CAAC;YAER,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE;gBAC7C,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC,CAAC;YACH,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE;gBACxC,EAAE,CAAC,OAAO,EAAE,CAAC;gBACb,EAAE,CAAC,OAAO,EAAE,CAAC;YACf,CAAC,CAAC,CAAC;YAEH,OAAO,GAAG,EAAE;gBACV,EAAE,CAAC,OAAO,EAAE,CAAC;gBACb,EAAE,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,GAAG,EAAE,CAAC;oBACR,YAAY,CAAC,GAAG,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnB,OAAO;QACL,MAAM;QACN,KAAK;KACN,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,79 @@
1
+ import * as React from 'react';
2
+ import { useEffect, useRef, useState } from 'react';
3
+ import { MonacoDiffEditor } from 'react-monaco-editor';
4
+ import { styled } from '@journeyapps-labs/reactor-mod';
5
+ import { DARK_THEME } from '../theme/theme-utils';
6
+ export const DualEditorWidget = (props) => {
7
+ var _a, _b;
8
+ const [listener, setListener] = useState();
9
+ const leftRef = useRef(null);
10
+ const ref = React.useRef(null);
11
+ const [compactMode, setCompactMode] = useState(false);
12
+ useEffect(() => {
13
+ return () => {
14
+ listener === null || listener === void 0 ? void 0 : listener.dispose();
15
+ };
16
+ }, []);
17
+ return (React.createElement(S.Container, null,
18
+ !compactMode ? (React.createElement(S.Header, null,
19
+ React.createElement(S.Part, { ref: leftRef }, (_a = props.getLeftHeaderContent) === null || _a === void 0 ? void 0 : _a.call(props)),
20
+ React.createElement(S.Part2, null, (_b = props.getRightHeaderContent) === null || _b === void 0 ? void 0 : _b.call(props)))) : null,
21
+ React.createElement(S.EditorContainer, { ref: ref },
22
+ React.createElement(MonacoDiffEditor, Object.assign({}, props, { options: Object.assign(Object.assign({}, props.options), { renderSideBySide: true, automaticLayout: true }), theme: DARK_THEME, editorDidMount: (editor, monaco) => {
23
+ var _a;
24
+ (_a = props.editorDidMount) === null || _a === void 0 ? void 0 : _a.call(props, editor, monaco);
25
+ const doLayout = () => {
26
+ const info = editor.getOriginalEditor().getLayoutInfo();
27
+ // this is the only way i can see to detect if it's changed to an inline mode
28
+ setCompactMode(info.viewportColumn === 1);
29
+ if (!leftRef.current) {
30
+ return;
31
+ }
32
+ leftRef.current.style.width = `${info.width}px`;
33
+ };
34
+ const dispose1 = editor.getOriginalEditor().onDidLayoutChange((e) => {
35
+ doLayout();
36
+ });
37
+ doLayout();
38
+ setListener(dispose1);
39
+ } })))));
40
+ };
41
+ var S;
42
+ (function (S) {
43
+ S.EditorContainer = styled.div `
44
+ position: relative;
45
+ flex-grow: 1;
46
+ overflow: hidden;
47
+ `;
48
+ S.Container = styled.div `
49
+ width: 100%;
50
+ height: 100%;
51
+ display: flex;
52
+ flex-direction: column;
53
+ position: absolute;
54
+
55
+ .monaco-editor {
56
+ outline: none;
57
+ }
58
+ `;
59
+ S.Header = styled.div `
60
+ display: flex;
61
+ align-items: center;
62
+ flex-grow: 0;
63
+ color: ${(p) => p.theme.panels.titleBackground};
64
+ `;
65
+ S.Part = styled.div `
66
+ display: flex;
67
+ align-items: center;
68
+ box-sizing: border-box;
69
+ border-right: solid 2px ${(p) => p.theme.panels.divider};
70
+
71
+ &:last-of-type {
72
+ border-right: 0;
73
+ }
74
+ `;
75
+ S.Part2 = styled(S.Part) `
76
+ flex-grow: 1;
77
+ `;
78
+ })(S || (S = {}));
79
+ //# sourceMappingURL=DualEditorWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DualEditorWidget.js","sourceRoot":"","sources":["../../src/widgets/DualEditorWidget.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ import * as React from 'react';
2
+ import { useEffect, useState } from 'react';
3
+ import { ioc, ThemeStore } from '@journeyapps-labs/reactor-mod';
4
+ import { MonacoStore } from '../stores/MonacoStore';
5
+ import { EnableVimSetting } from '../settings/VimSupportSetting';
6
+ import { observer } from 'mobx-react';
7
+ import * as vim from 'monaco-vim';
8
+ import { theme, themed } from '../theme-reactor/editor-theme-fragment';
9
+ import { MonacoEditorWidget } from './MonacoEditorWidget';
10
+ var S;
11
+ (function (S) {
12
+ S.Background = themed.div `
13
+ display: flex;
14
+ height: 100%;
15
+ width: 100%;
16
+ flex-direction: column;
17
+ position: relative;
18
+ overflow: hidden;
19
+ `;
20
+ S.Monaco = themed.div `
21
+ position: absolute;
22
+ top: 0;
23
+ left: 0;
24
+ right: 0;
25
+ bottom: 0;
26
+ background: ${(p) => p.background};
27
+
28
+ // note: there is really no other way to do this
29
+ // note: we have this code since we have the monaco editor background
30
+ // set as transparent for a plethora of other reasons not listed here
31
+ .sticky-widget,.monaco-quick-open-widget {
32
+ background-color: ${(p) => p.theme.editor.backgroundSticky} !important;
33
+ }
34
+ `;
35
+ })(S || (S = {}));
36
+ export const EditorWidget = observer((props) => {
37
+ const monacoStore = ioc.get(MonacoStore);
38
+ const ref = props.forwardRef || React.useRef(null);
39
+ const [focusDisposer, setFocusDisposer] = useState(null);
40
+ const e = React.useRef(null);
41
+ useEffect(() => {
42
+ return () => {
43
+ if (e.current) {
44
+ monacoStore.deregisterEditor(e.current);
45
+ }
46
+ focusDisposer === null || focusDisposer === void 0 ? void 0 : focusDisposer.dispose();
47
+ };
48
+ }, []);
49
+ return (React.createElement(S.Background, { ref: ref },
50
+ React.createElement(S.Monaco, { background: props.backgroundColor || ioc.get(ThemeStore).getCurrentTheme(theme).editor.background },
51
+ React.createElement(MonacoEditorWidget, { model: props.model, options: Object.assign({ minimap: {
52
+ enabled: false
53
+ }, automaticLayout: true,
54
+ // https://github.com/microsoft/monaco-editor/issues/1993
55
+ // this was default true, which caused the model drift monitor to kick in and report errors (correctly)
56
+ trimAutoWhitespace: false,
57
+ // autoIndent is required for XML files, not necessarily for others
58
+ autoIndent: 'full', fixedOverflowWidgets: true }, (props.options || {})), editorDidMount: (editor) => {
59
+ e.current = editor;
60
+ // !------ react-monaco fixes their API (it broke after upgrade) -----
61
+ requestAnimationFrame(() => {
62
+ var _a, _b, _c;
63
+ /**
64
+ * There are certain conditions where patching the monaco shortcuts is not required.
65
+ * (patching shortcuts also introduces a slight overhead, which is why we allow this to be configurable)
66
+ * furthermore: some editors will always be readonly such as search previews and dont need these shortcuts
67
+ */
68
+ if (props.patchOxideShortcuts == null || props.patchOxideShortcuts === true) {
69
+ monacoStore.registerEditor(editor);
70
+ }
71
+ (_b = (_a = props.events) === null || _a === void 0 ? void 0 : _a.getEditor) === null || _b === void 0 ? void 0 : _b.call(_a, editor);
72
+ // !------------------------------------------------------------------
73
+ if ((_c = props.events) === null || _c === void 0 ? void 0 : _c.gotFocus) {
74
+ const focusDisposer = editor.onDidFocusEditorWidget(() => {
75
+ props.events.gotFocus(editor);
76
+ });
77
+ setFocusDisposer(focusDisposer);
78
+ }
79
+ if (EnableVimSetting.enabled()) {
80
+ vim.initVimMode(editor);
81
+ }
82
+ });
83
+ } }))));
84
+ });
85
+ //# sourceMappingURL=EditorWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EditorWidget.js","sourceRoot":"","sources":["../../src/widgets/EditorWidget.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import * as React from 'react';
2
+ import { editor } from 'monaco-editor';
3
+ import styled from '@emotion/styled';
4
+ import { useEffect, useRef } from 'react';
5
+ import { DARK_THEME } from '../theme/theme-utils';
6
+ export const MonacoEditorWidget = (props) => {
7
+ const ref = useRef(null);
8
+ useEffect(() => {
9
+ var _a;
10
+ const editorRef = editor.create(ref.current, Object.assign(Object.assign({}, props.options), { model: props.model, value: null, theme: DARK_THEME }));
11
+ (_a = props.editorDidMount) === null || _a === void 0 ? void 0 : _a.call(props, editorRef);
12
+ return () => {
13
+ editorRef.dispose();
14
+ };
15
+ }, []);
16
+ return React.createElement(S.Container, { className: props.className, ref: ref });
17
+ };
18
+ var S;
19
+ (function (S) {
20
+ S.Container = styled.div `
21
+ width: 100%;
22
+ height: 100%;
23
+
24
+ .monaco-editor {
25
+ outline: none;
26
+ }
27
+ `;
28
+ })(S || (S = {}));
29
+ //# sourceMappingURL=MonacoEditorWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MonacoEditorWidget.js","sourceRoot":"","sources":["../../src/widgets/MonacoEditorWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AACvC,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AASlD,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,KAAK,EAAE,EAAE;IAC7E,MAAM,GAAG,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzC,SAAS,CAAC,GAAG,EAAE;;QACb,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,kCACtC,KAAK,CAAC,OAAO,KAChB,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,KAAK,EAAE,IAAI,EACX,KAAK,EAAE,UAAU,IACjB,CAAC;QACH,MAAA,KAAK,CAAC,cAAc,sDAAG,SAAS,CAAC,CAAC;QAClC,OAAO,GAAG,EAAE;YACV,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,oBAAC,CAAC,CAAC,SAAS,IAAC,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,GAAgB,CAAC;AAC3E,CAAC,CAAC;AACF,IAAU,CAAC,CASV;AATD,WAAU,CAAC;IACI,WAAS,GAAG,MAAM,CAAC,GAAG,CAAA;;;;;;;GAOlC,CAAC;AACJ,CAAC,EATS,CAAC,KAAD,CAAC,QASV"}
@@ -0,0 +1,71 @@
1
+ import * as React from 'react';
2
+ import { useEffect, useState } from 'react';
3
+ import styled from '@emotion/styled';
4
+ import { EditorWidget } from './EditorWidget';
5
+ import { editor, Uri } from 'monaco-editor';
6
+ var createModel = editor.createModel;
7
+ import { v4 } from 'uuid';
8
+ export const SimpleEditorWidget = (props) => {
9
+ const [height, setHeight] = useState(0);
10
+ const [model] = useState(() => {
11
+ // For simple read-only editors: we add entropy here to allow panels to be moved around which would otherwise cause
12
+ // race conditions with 'model already exists' errors.
13
+ // good to know: this problem is solved for shared models in other ways with more complex panel lifecycle logic
14
+ const uri = Uri.parse(`${v4()}/${props.path}`);
15
+ return createModel(props.text, props.lang, uri);
16
+ });
17
+ useEffect(() => {
18
+ return () => {
19
+ model.dispose();
20
+ };
21
+ }, [model]);
22
+ return (React.createElement(S.Container, { height: height, className: props.className },
23
+ React.createElement(EditorWidget, { options: {
24
+ readOnly: true,
25
+ scrollBeyondLastLine: false,
26
+ glyphMargin: false,
27
+ minimap: {
28
+ enabled: false
29
+ },
30
+ guides: {
31
+ indentation: false
32
+ },
33
+ scrollbar: {
34
+ horizontal: 'hidden',
35
+ vertical: 'hidden',
36
+ alwaysConsumeMouseWheel: false
37
+ },
38
+ overviewRulerLanes: 0,
39
+ occurrencesHighlight: 'off'
40
+ }, model: model, events: {
41
+ getEditor: (editor) => {
42
+ setHeight(editor.getContentHeight());
43
+ }
44
+ } })));
45
+ };
46
+ var S;
47
+ (function (S) {
48
+ S.Container = styled.div `
49
+ height: ${(p) => p.height}px;
50
+ box-sizing: border-box;
51
+ overflow: hidden;
52
+
53
+ .monaco-editor {
54
+ background-color: transparent !important;
55
+ outline: none;
56
+
57
+ .monaco-editor-background {
58
+ background-color: transparent !important;
59
+ }
60
+
61
+ .margin {
62
+ background-color: transparent !important;
63
+ }
64
+
65
+ .cursors-layer .cursor {
66
+ display: none;
67
+ }
68
+ }
69
+ `;
70
+ })(S || (S = {}));
71
+ //# sourceMappingURL=SimpleEditorWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SimpleEditorWidget.js","sourceRoot":"","sources":["../../src/widgets/SimpleEditorWidget.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC5C,OAAO,MAAM,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAC5C,IAAO,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;AAExC,OAAO,EAAE,EAAE,EAAE,MAAM,MAAM,CAAC;AAS1B,MAAM,CAAC,MAAM,kBAAkB,GAAsC,CAAC,KAAK,EAAE,EAAE;IAC7E,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE;QAC5B,mHAAmH;QACnH,sDAAsD;QACtD,+GAA+G;QAC/G,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QAC/C,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IACH,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,EAAE;YACV,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,OAAO,CACL,oBAAC,CAAC,CAAC,SAAS,IAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS;QACrD,oBAAC,YAAY,IACX,OAAO,EAAE;gBACP,QAAQ,EAAE,IAAI;gBACd,oBAAoB,EAAE,KAAK;gBAC3B,WAAW,EAAE,KAAK;gBAClB,OAAO,EAAE;oBACP,OAAO,EAAE,KAAK;iBACf;gBACD,MAAM,EAAE;oBACN,WAAW,EAAE,KAAK;iBACnB;gBACD,SAAS,EAAE;oBACT,UAAU,EAAE,QAAQ;oBACpB,QAAQ,EAAE,QAAQ;oBAClB,uBAAuB,EAAE,KAAK;iBAC/B;gBACD,kBAAkB,EAAE,CAAC;gBACrB,oBAAoB,EAAE,KAAK;aAC5B,EACD,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE;gBACN,SAAS,EAAE,CAAC,MAA6B,EAAE,EAAE;oBAC3C,SAAS,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAC;gBACvC,CAAC;aACF,GACD,CACU,CACf,CAAC;AACJ,CAAC,CAAC;AACF,IAAU,CAAC,CAuBV;AAvBD,WAAU,CAAC;IACI,WAAS,GAAG,MAAM,CAAC,GAAG,CAAoB;cAC3C,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM;;;;;;;;;;;;;;;;;;;;GAoB1B,CAAC;AACJ,CAAC,EAvBS,CAAC,KAAD,CAAC,QAuBV"}