@yuntijs/ui 1.0.0-beta.8 → 1.0.0-beta.80

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 (239) hide show
  1. package/es/Alert/index.d.ts +13 -0
  2. package/es/Alert/index.js +25 -0
  3. package/es/Alert/style.d.ts +4 -0
  4. package/es/Alert/style.js +13 -0
  5. package/es/App/index.d.ts +7 -0
  6. package/es/App/index.js +19 -0
  7. package/es/ButtonGroup/index.d.ts +24 -0
  8. package/es/ButtonGroup/index.js +66 -0
  9. package/es/Card/index.d.ts +1 -0
  10. package/es/Card/index.js +1 -0
  11. package/es/CardList/Item/index.d.ts +4 -0
  12. package/es/CardList/Item/index.js +43 -0
  13. package/es/CardList/Item/style.d.ts +0 -0
  14. package/es/CardList/Item/style.js +0 -0
  15. package/es/CardList/index.d.ts +2 -0
  16. package/es/CardList/index.js +39 -0
  17. package/es/ChatInputArea/desktop/ChatInputArea.d.ts +19 -0
  18. package/es/ChatInputArea/desktop/ChatInputArea.js +72 -0
  19. package/es/ChatInputArea/index.d.ts +6 -0
  20. package/es/ChatInputArea/index.js +6 -0
  21. package/es/ChatItem/components/MessageContent.d.ts +21 -0
  22. package/es/ChatItem/components/MessageContent.js +59 -0
  23. package/es/ChatItem/index.d.ts +4 -0
  24. package/es/ChatItem/index.js +120 -0
  25. package/es/ChatItem/style.d.ts +24 -0
  26. package/es/ChatItem/style.js +38 -0
  27. package/es/ChatItem/type.d.ts +82 -0
  28. package/es/ChatItem/type.js +1 -0
  29. package/es/CollapseGroup/index.d.ts +4 -0
  30. package/es/CollapseGroup/index.js +23 -0
  31. package/es/CollapseGroup/style.d.ts +3 -0
  32. package/es/CollapseGroup/style.js +11 -0
  33. package/es/ConfigProvider/index.d.ts +3 -0
  34. package/es/ConfigProvider/index.js +17 -11
  35. package/es/Descriptions/index.d.ts +14 -0
  36. package/es/Descriptions/index.js +31 -0
  37. package/es/Descriptions/style.d.ts +4 -0
  38. package/es/Descriptions/style.js +24 -0
  39. package/es/Divider/index.d.ts +38 -0
  40. package/es/Divider/index.js +66 -0
  41. package/es/Divider/style.d.ts +3 -0
  42. package/es/Divider/style.js +12 -0
  43. package/es/DragPanel/index.d.ts +10 -0
  44. package/es/DragPanel/index.js +97 -0
  45. package/es/DragPanel/style.d.ts +7 -0
  46. package/es/DragPanel/style.js +15 -0
  47. package/es/Drawer/index.d.ts +13 -0
  48. package/es/Drawer/index.js +20 -0
  49. package/es/Drawer/style.d.ts +4 -0
  50. package/es/Drawer/style.js +16 -0
  51. package/es/Dropdown/index.d.ts +14 -0
  52. package/es/Dropdown/index.js +59 -0
  53. package/es/Dropdown/style.d.ts +7 -0
  54. package/es/Dropdown/style.js +13 -0
  55. package/es/EditableMessage/index.d.ts +75 -0
  56. package/es/EditableMessage/index.js +99 -0
  57. package/es/Form/collapse-list/index.d.ts +40 -0
  58. package/es/Form/collapse-list/index.js +209 -0
  59. package/es/Form/collapse-list/style.d.ts +5 -0
  60. package/es/Form/collapse-list/style.js +13 -0
  61. package/es/Form/index.d.ts +8 -0
  62. package/es/Form/index.js +5 -0
  63. package/es/FormHelper/autoFocus.d.ts +10 -0
  64. package/es/FormHelper/autoFocus.js +38 -0
  65. package/es/FormHelper/index.d.ts +13 -0
  66. package/es/FormHelper/index.js +41 -0
  67. package/es/Highlighter/FullFeatured.d.ts +18 -0
  68. package/es/Highlighter/FullFeatured.js +102 -0
  69. package/es/Highlighter/SyntaxHighlighter/index.d.ts +7 -0
  70. package/es/Highlighter/SyntaxHighlighter/index.js +51 -0
  71. package/es/Highlighter/SyntaxHighlighter/style.d.ts +5 -0
  72. package/es/Highlighter/SyntaxHighlighter/style.js +16 -0
  73. package/es/Highlighter/index.d.ts +50 -0
  74. package/es/Highlighter/index.js +77 -0
  75. package/es/Highlighter/style.d.ts +9 -0
  76. package/es/Highlighter/style.js +23 -0
  77. package/es/Highlighter/theme.d.ts +1 -0
  78. package/es/Highlighter/theme.js +1661 -0
  79. package/es/LogViewer/index.d.ts +10 -0
  80. package/es/LogViewer/index.js +141 -0
  81. package/es/LogViewer/style.d.ts +6 -0
  82. package/es/LogViewer/style.js +16 -0
  83. package/es/LogViewer/types.d.ts +235 -0
  84. package/es/LogViewer/types.js +1 -0
  85. package/es/Mentions/constants.d.ts +6 -0
  86. package/es/Mentions/constants.js +28 -0
  87. package/es/Mentions/hooks.d.ts +20 -0
  88. package/es/Mentions/hooks.js +133 -0
  89. package/es/Mentions/index.d.ts +19 -0
  90. package/es/Mentions/index.js +136 -0
  91. package/es/Mentions/plugins/custom-text/node.d.ts +11 -0
  92. package/es/Mentions/plugins/custom-text/node.js +72 -0
  93. package/es/Mentions/plugins/mention-node/component.d.ts +6 -0
  94. package/es/Mentions/plugins/mention-node/component.js +64 -0
  95. package/es/Mentions/plugins/mention-node/index.d.ts +9 -0
  96. package/es/Mentions/plugins/mention-node/index.js +32 -0
  97. package/es/Mentions/plugins/mention-node/node.d.ts +23 -0
  98. package/es/Mentions/plugins/mention-node/node.js +97 -0
  99. package/es/Mentions/plugins/mention-node/replacement.d.ts +5 -0
  100. package/es/Mentions/plugins/mention-node/replacement.js +42 -0
  101. package/es/Mentions/plugins/mention-node/style.d.ts +8 -0
  102. package/es/Mentions/plugins/mention-node/style.js +47 -0
  103. package/es/Mentions/plugins/mention-node/utils.d.ts +4 -0
  104. package/es/Mentions/plugins/mention-node/utils.js +5 -0
  105. package/es/Mentions/plugins/mention-picker/hooks.d.ts +5 -0
  106. package/es/Mentions/plugins/mention-picker/hooks.js +39 -0
  107. package/es/Mentions/plugins/mention-picker/index.d.ts +36 -0
  108. package/es/Mentions/plugins/mention-picker/index.js +87 -0
  109. package/es/Mentions/plugins/mention-picker/menu-item.d.ts +11 -0
  110. package/es/Mentions/plugins/mention-picker/menu-item.js +71 -0
  111. package/es/Mentions/plugins/mention-picker/menu.d.ts +9 -0
  112. package/es/Mentions/plugins/mention-picker/menu.js +30 -0
  113. package/es/Mentions/plugins/mention-picker/style.d.ts +11 -0
  114. package/es/Mentions/plugins/mention-picker/style.js +19 -0
  115. package/es/Mentions/plugins/mention-picker/utils.d.ts +22 -0
  116. package/es/Mentions/plugins/mention-picker/utils.js +39 -0
  117. package/es/Mentions/plugins/on-blur-or-focus-block.d.ts +7 -0
  118. package/es/Mentions/plugins/on-blur-or-focus-block.js +36 -0
  119. package/es/Mentions/provider.d.ts +12 -0
  120. package/es/Mentions/provider.js +15 -0
  121. package/es/Mentions/style.d.ts +11 -0
  122. package/es/Mentions/style.js +22 -0
  123. package/es/Mentions/types.d.ts +17 -0
  124. package/es/Mentions/types.js +1 -0
  125. package/es/Mentions/utils.d.ts +9 -0
  126. package/es/Mentions/utils.js +95 -0
  127. package/es/Modal/index.d.ts +19 -0
  128. package/es/Modal/index.js +36 -0
  129. package/es/Modal/style.d.ts +4 -0
  130. package/es/Modal/style.js +17 -0
  131. package/es/MonacoEditor/base/controller.d.ts +17 -0
  132. package/es/MonacoEditor/base/controller.js +49 -0
  133. package/es/MonacoEditor/base/helper.d.ts +65 -0
  134. package/es/MonacoEditor/base/helper.js +324 -0
  135. package/es/MonacoEditor/base/index.d.ts +35 -0
  136. package/es/MonacoEditor/base/index.js +236 -0
  137. package/es/MonacoEditor/base/monaco.d.ts +6 -0
  138. package/es/MonacoEditor/base/monaco.js +64 -0
  139. package/es/MonacoEditor/base/style.d.ts +12 -0
  140. package/es/MonacoEditor/base/style.js +26 -0
  141. package/es/MonacoEditor/index.d.ts +2 -4
  142. package/es/MonacoEditor/index.js +26 -62
  143. package/es/MonacoEditor/style.js +3 -2
  144. package/es/Page/Breadcrumb/index.d.ts +9 -0
  145. package/es/Page/Breadcrumb/index.js +56 -0
  146. package/es/Page/Content/index.d.ts +4 -0
  147. package/es/Page/Content/index.js +59 -0
  148. package/es/Page/Content/style.d.ts +3 -0
  149. package/es/Page/Content/style.js +12 -0
  150. package/es/Page/Footer/index.d.ts +2 -0
  151. package/es/Page/Footer/index.js +6 -0
  152. package/es/Page/Header/Icon.d.ts +17 -0
  153. package/es/Page/Header/Icon.js +42 -0
  154. package/es/Page/Header/index.d.ts +43 -0
  155. package/es/Page/Header/index.js +202 -0
  156. package/es/Page/Header/style.d.ts +12 -0
  157. package/es/Page/Header/style.js +21 -0
  158. package/es/Page/Page.d.ts +9 -0
  159. package/es/Page/Page.js +49 -0
  160. package/es/Page/PageContext.d.ts +15 -0
  161. package/es/Page/PageContext.js +21 -0
  162. package/es/Page/Title/index.d.ts +5 -0
  163. package/es/Page/Title/index.js +18 -0
  164. package/es/Page/Title/style.d.ts +3 -0
  165. package/es/Page/Title/style.js +10 -0
  166. package/es/Page/index.d.ts +18 -0
  167. package/es/Page/index.js +15 -0
  168. package/es/Page/style.d.ts +3 -0
  169. package/es/Page/style.js +10 -0
  170. package/es/ProCard/Card/index.d.ts +6 -0
  171. package/es/ProCard/Card/index.js +25 -0
  172. package/es/ProCard/Card/style.d.ts +7 -0
  173. package/es/ProCard/Card/style.js +15 -0
  174. package/es/ProCard/Content/index.d.ts +4 -0
  175. package/es/ProCard/Content/index.js +24 -0
  176. package/es/ProCard/Content/style.d.ts +3 -0
  177. package/es/ProCard/Content/style.js +10 -0
  178. package/es/ProCard/Descriptions/index.d.ts +4 -0
  179. package/es/ProCard/Descriptions/index.js +28 -0
  180. package/es/ProCard/Descriptions/style.d.ts +3 -0
  181. package/es/ProCard/Descriptions/style.js +12 -0
  182. package/es/ProCard/Header/index.d.ts +15 -0
  183. package/es/ProCard/Header/index.js +86 -0
  184. package/es/ProCard/Header/style.d.ts +12 -0
  185. package/es/ProCard/Header/style.js +21 -0
  186. package/es/ProCard/index.d.ts +13 -0
  187. package/es/ProCard/index.js +8 -0
  188. package/es/Radio/index.d.ts +36 -0
  189. package/es/Radio/index.js +26 -0
  190. package/es/Radio/style.d.ts +4 -0
  191. package/es/Radio/style.js +66 -0
  192. package/es/SelectCard/index.d.ts +33 -0
  193. package/es/SelectCard/index.js +132 -0
  194. package/es/SelectCard/style.d.ts +10 -0
  195. package/es/SelectCard/style.js +42 -0
  196. package/es/SliderInput/index.js +2 -2
  197. package/es/Status/index.d.ts +7 -0
  198. package/es/Status/index.js +39 -0
  199. package/es/Status/style.d.ts +4 -0
  200. package/es/Status/style.js +14 -0
  201. package/es/Table/collapse/index.d.ts +8 -0
  202. package/es/Table/collapse/index.js +39 -0
  203. package/es/Table/collapse/style.d.ts +3 -0
  204. package/es/Table/collapse/style.js +11 -0
  205. package/es/Table/index.d.ts +20 -0
  206. package/es/Table/index.js +56 -0
  207. package/es/Typography/index.d.ts +32 -0
  208. package/es/Typography/index.js +77 -0
  209. package/es/WaveformIcon/index.d.ts +9 -0
  210. package/es/WaveformIcon/index.js +51 -0
  211. package/es/hooks/languageMap.d.ts +1 -0
  212. package/es/hooks/languageMap.js +1 -0
  213. package/es/hooks/useHighlight.d.ts +5 -0
  214. package/es/hooks/useHighlight.js +78 -0
  215. package/es/index.d.ts +38 -1
  216. package/es/index.js +52 -1
  217. package/es/notification/index.d.ts +24 -0
  218. package/es/notification/index.js +237 -0
  219. package/es/notification/style.d.ts +2 -0
  220. package/es/notification/style.js +28 -0
  221. package/es/styles/colors/colors.d.ts +39 -0
  222. package/es/styles/colors/colors.js +86 -0
  223. package/es/styles/colors/generateColorPalette.d.ts +11 -0
  224. package/es/styles/colors/generateColorPalette.js +31 -0
  225. package/es/styles/colors/neutralColors.d.ts +9 -0
  226. package/es/styles/colors/neutralColors.js +32 -0
  227. package/es/styles/index.d.ts +4 -0
  228. package/es/styles/index.js +4 -0
  229. package/es/useSpeechSynthes/const/polyfill.d.ts +3 -0
  230. package/es/useSpeechSynthes/const/polyfill.js +21 -0
  231. package/es/useSpeechSynthes/index.d.ts +13 -0
  232. package/es/useSpeechSynthes/index.js +69 -0
  233. package/es/utils/constants.d.ts +1 -0
  234. package/es/utils/constants.js +1 -0
  235. package/es/utils/tools.d.ts +1 -0
  236. package/es/utils/tools.js +1 -0
  237. package/package.json +30 -9
  238. package/umd/index.min.js +1 -1
  239. package/umd/index.min.js.map +1 -1
@@ -0,0 +1,49 @@
1
+ import _classCallCheck from "@babel/runtime/helpers/esm/classCallCheck";
2
+ import _createClass from "@babel/runtime/helpers/esm/createClass";
3
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
4
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
+ import { isBrowser } from "../../utils/tools";
7
+ export var Controller = /*#__PURE__*/function () {
8
+ function Controller() {
9
+ _classCallCheck(this, Controller);
10
+ _defineProperty(this, "methodMap", void 0);
11
+ _defineProperty(this, "meta", void 0);
12
+ this.methodMap = {};
13
+ this.meta = {
14
+ singleton: false
15
+ };
16
+ }
17
+ _createClass(Controller, [{
18
+ key: "registerMethod",
19
+ value: function registerMethod(name, fn) {
20
+ this.methodMap[name] = fn;
21
+ }
22
+ }, {
23
+ key: "call",
24
+ value: function call(name) {
25
+ var _this$methodMap$name, _this$methodMap;
26
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
27
+ args[_key - 1] = arguments[_key];
28
+ }
29
+ return (_this$methodMap$name = (_this$methodMap = this.methodMap)[name]) === null || _this$methodMap$name === void 0 ? void 0 : _this$methodMap$name.call.apply(_this$methodMap$name, [_this$methodMap].concat(args));
30
+ }
31
+ }, {
32
+ key: "updateMeta",
33
+ value: function updateMeta(obj) {
34
+ Object.assign(this.meta, obj);
35
+ }
36
+ }, {
37
+ key: "getMeta",
38
+ value: function getMeta() {
39
+ return Object.freeze(_objectSpread({}, this.meta));
40
+ }
41
+ }]);
42
+ return Controller;
43
+ }();
44
+ var CONFIGURE_KEY = '__base_monaco_editor_controller__';
45
+ var fakeWindow = isBrowser && window;
46
+ if (fakeWindow && !fakeWindow[CONFIGURE_KEY]) {
47
+ fakeWindow[CONFIGURE_KEY] = new Controller();
48
+ }
49
+ export var controller = fakeWindow[CONFIGURE_KEY];
@@ -0,0 +1,65 @@
1
+ import { Monaco } from '@monaco-editor/loader';
2
+ import type { editor as IEditor } from 'monaco-editor';
3
+ import React, { CSSProperties } from 'react';
4
+ /**
5
+ * @see https://microsoft.github.io/monaco-editor/api/index.html
6
+ */
7
+ export type IEditorInstance = IEditor.IStandaloneCodeEditor | IEditor.IStandaloneDiffEditor;
8
+ export type EditorEnhancer = (monaco: Monaco, editorIns: IEditorInstance) => any;
9
+ export interface IGeneralManacoEditorProps {
10
+ /** [Monaco editor options](https://microsoft.github.io/monaco-editor/) */
11
+ options?: Record<string, any>;
12
+ /** callback after monaco's loaded and after editor's loaded */
13
+ editorDidMount?: (monaco: Monaco, editor: IEditorInstance) => void;
14
+ /** callback after monaco's loaded and before editor's loaded */
15
+ editorWillMount?: (monaco: Monaco) => void;
16
+ /** path of the current model, useful when creating a multi-model editor */
17
+ path?: string;
18
+ /** whether to save the models' view states between model changes or not */
19
+ saveViewState?: boolean;
20
+ /** language of the editor @see https://microsoft.github.io/monaco-editor/ for available languages */
21
+ language?: string;
22
+ /** theme of the editor, "light" | "vs-dark" */
23
+ theme?: string;
24
+ /** [config passing to require](https://github.com/suren-atoyan/monaco-react#loader-config), can be used to upgrade monaco-editor */
25
+ requireConfig?: Record<string, any>;
26
+ /** value, controlled */
27
+ value?: string;
28
+ /** defaultValue for creating model, uncontrolled */
29
+ defaultValue?: string;
30
+ /** className of wrapper */
31
+ className?: string;
32
+ /** width of wrapper */
33
+ width?: number | string;
34
+ /** height of wrapper */
35
+ height?: number | string;
36
+ /** whether to enable outline of wrapper or not */
37
+ enableOutline?: boolean;
38
+ /** style of wrapper */
39
+ style?: CSSProperties;
40
+ enhancers?: EditorEnhancer[];
41
+ }
42
+ export interface ISingleMonacoEditorProps extends IGeneralManacoEditorProps {
43
+ onChange?: (input: string, event: IEditor.IModelContentChangedEvent) => void;
44
+ supportFullScreen?: boolean;
45
+ }
46
+ export interface IDiffMonacoEditorProps extends IGeneralManacoEditorProps {
47
+ onChange?: (input: string, event: IEditor.IModelContentChangedEvent) => void;
48
+ supportFullScreen?: boolean;
49
+ original?: string;
50
+ }
51
+ export declare const WORD_EDITOR_INITIALIZING: string;
52
+ export declare const INITIAL_OPTIONS: IEditor.IStandaloneEditorConstructionOptions;
53
+ export declare const useEditor: <T = IEditorInstance>(type: 'single' | 'diff', props: IGeneralManacoEditorProps) => {
54
+ readonly isEditorReady: boolean;
55
+ readonly focused: boolean;
56
+ readonly loading: boolean;
57
+ readonly containerRef: React.MutableRefObject<HTMLDivElement | undefined>;
58
+ readonly monacoRef: React.MutableRefObject<typeof import("monaco-editor") | undefined>;
59
+ readonly editorRef: React.MutableRefObject<T>;
60
+ readonly valueRef: React.MutableRefObject<string | undefined>;
61
+ };
62
+ export declare const useFullScreen: (editor?: IEditor.IStandaloneCodeEditor) => {
63
+ isFullScreen: boolean;
64
+ fullScreen: () => void;
65
+ };
@@ -0,0 +1,324 @@
1
+ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
+ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
3
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
+ /* eslint-disable no-empty */
6
+
7
+ import { useEffect, useRef, useState } from 'react';
8
+ import { isBrowser } from "../../utils/tools";
9
+ import { getMonaco } from "./monaco";
10
+
11
+ // @todo fill type def for monaco editor without refering monaco editor
12
+ /**
13
+ * @see https://microsoft.github.io/monaco-editor/api/index.html
14
+ */
15
+
16
+ var CURRENT_LANGUAGE = isBrowser ? (window.locale || window.localStorage.getItem('vdev-locale') || '').replace(/_/, '-') || 'zh-CN' : 'zh-CN';
17
+ export var WORD_EDITOR_INITIALIZING = CURRENT_LANGUAGE === 'en-US' ? 'Initializing Editor' : '编辑器初始化中';
18
+ export var INITIAL_OPTIONS = {
19
+ fontSize: 12,
20
+ tabSize: 2,
21
+ fontFamily: 'Menlo, Monaco, Courier New, monospace',
22
+ folding: true,
23
+ minimap: {
24
+ enabled: false
25
+ },
26
+ autoIndent: 'advanced',
27
+ contextmenu: true,
28
+ useTabStops: true,
29
+ // wordBasedSuggestions: true,
30
+ formatOnPaste: true,
31
+ automaticLayout: true,
32
+ lineNumbers: 'on',
33
+ wordWrap: 'off',
34
+ scrollBeyondLastLine: false,
35
+ fixedOverflowWidgets: false,
36
+ snippetSuggestions: 'top',
37
+ scrollbar: {
38
+ vertical: 'auto',
39
+ horizontal: 'auto',
40
+ verticalScrollbarSize: 10,
41
+ horizontalScrollbarSize: 10
42
+ }
43
+ };
44
+ var DIFF_EDITOR_INITIAL_OPTIONS = {
45
+ fontSize: 12,
46
+ fontFamily: 'Menlo, Monaco, Courier New, monospace',
47
+ folding: true,
48
+ minimap: {
49
+ enabled: false
50
+ },
51
+ autoIndent: 'advanced',
52
+ contextmenu: true,
53
+ useTabStops: true,
54
+ formatOnPaste: true,
55
+ automaticLayout: true,
56
+ lineNumbers: 'on',
57
+ wordWrap: 'off',
58
+ scrollBeyondLastLine: false,
59
+ fixedOverflowWidgets: false,
60
+ snippetSuggestions: 'top',
61
+ scrollbar: {
62
+ vertical: 'auto',
63
+ horizontal: 'auto',
64
+ verticalScrollbarSize: 10,
65
+ horizontalScrollbarSize: 10
66
+ }
67
+ };
68
+ function usePrevious(value) {
69
+ var ref = useRef();
70
+ useEffect(function () {
71
+ ref.current = value;
72
+ }, [value]);
73
+ return ref.current;
74
+ }
75
+ function getOrCreateModel(monaco, value, language, path) {
76
+ if (path) {
77
+ var prevModel = monaco.editor.getModel(monaco.Uri.parse(path));
78
+ if (prevModel) {
79
+ return prevModel;
80
+ }
81
+ }
82
+ return monaco.editor.createModel(value, language, path ? monaco.Uri.parse(path) : undefined);
83
+ }
84
+ export var useEditor = function useEditor(type, props) {
85
+ var editorDidMount = props.editorDidMount,
86
+ editorWillMount = props.editorWillMount,
87
+ theme = props.theme,
88
+ value = props.value,
89
+ path = props.path,
90
+ language = props.language,
91
+ saveViewState = props.saveViewState,
92
+ defaultValue = props.defaultValue,
93
+ enhancers = props.enhancers;
94
+ var _useState = useState(false),
95
+ _useState2 = _slicedToArray(_useState, 2),
96
+ isEditorReady = _useState2[0],
97
+ setIsEditorReady = _useState2[1];
98
+ var _useState3 = useState(false),
99
+ _useState4 = _slicedToArray(_useState3, 2),
100
+ focused = _useState4[0],
101
+ setFocused = _useState4[1];
102
+ var _useState5 = useState(false),
103
+ _useState6 = _slicedToArray(_useState5, 2),
104
+ loading = _useState6[0],
105
+ setLoading = _useState6[1];
106
+ var defaultValueRef = useRef(defaultValue);
107
+ var valueRef = useRef(value);
108
+ var languageRef = useRef(language || 'text');
109
+ var pathRef = useRef(path);
110
+ var previousPath = usePrevious(path);
111
+ var requireConfigRef = useRef(props.requireConfig);
112
+ var optionRef = useRef(props.options);
113
+ var monacoRef = useRef();
114
+ var editorRef = useRef();
115
+ var containerRef = useRef();
116
+ var typeRef = useRef(type);
117
+ var editorDidMountRef = useRef();
118
+ var editorWillMountRef = useRef();
119
+ var decomposeRef = useRef(false);
120
+ var viewStatusRef = useRef(new Map());
121
+ var enhancersRef = useRef({});
122
+ useEffect(function () {
123
+ enhancersRef.current.enhancers = enhancers;
124
+ }, [enhancers]);
125
+ useEffect(function () {
126
+ editorDidMountRef.current = editorDidMount;
127
+ }, [editorDidMount]);
128
+ useEffect(function () {
129
+ editorWillMountRef.current = editorWillMount;
130
+ }, [editorWillMount]);
131
+ useEffect(function () {
132
+ valueRef.current = value;
133
+ }, [value]);
134
+ useEffect(function () {
135
+ languageRef.current = language;
136
+ }, [language]);
137
+ useEffect(function () {
138
+ defaultValueRef.current = defaultValue;
139
+ }, [defaultValue]);
140
+
141
+ // make sure loader / editor only init once
142
+ useEffect(function () {
143
+ setLoading(true);
144
+ getMonaco(requireConfigRef.current).then(function (monaco) {
145
+ var _enhancersRef$current;
146
+ // 兼容旧版本 monaco-editor 写死 MonacoEnvironment 的问题
147
+ window.MonacoEnvironment = undefined;
148
+ if (typeof window.define === 'function' && window.define.amd) {
149
+ // make monaco-editor's loader work with webpack's umd loader
150
+ // @see https://github.com/microsoft/monaco-editor/issues/2283
151
+ delete window.define.amd;
152
+ }
153
+ monacoRef.current = monaco;
154
+ try {
155
+ var _editorWillMountRef$c;
156
+ (_editorWillMountRef$c = editorWillMountRef.current) === null || _editorWillMountRef$c === void 0 || _editorWillMountRef$c.call(editorWillMountRef, monaco);
157
+ } catch (_unused) {}
158
+ if (!containerRef.current) {
159
+ return;
160
+ }
161
+ var editor;
162
+ if (typeRef.current === 'single') {
163
+ var _ref, _valueRef$current;
164
+ var model = getOrCreateModel(monaco, (_ref = (_valueRef$current = valueRef.current) !== null && _valueRef$current !== void 0 ? _valueRef$current : defaultValueRef.current) !== null && _ref !== void 0 ? _ref : '', languageRef.current, pathRef.current);
165
+ editor = monaco.editor.create(containerRef.current, _objectSpread(_objectSpread({
166
+ automaticLayout: true
167
+ }, INITIAL_OPTIONS), optionRef.current));
168
+ editor.setModel(model);
169
+ } else {
170
+ var originalModel = monaco.editor.createModel(valueRef.current, languageRef.current);
171
+ var modifiedModel = monaco.editor.createModel(valueRef.current, languageRef.current);
172
+ editor = monaco.editor.createDiffEditor(containerRef.current, _objectSpread(_objectSpread({
173
+ automaticLayout: true
174
+ }, DIFF_EDITOR_INITIAL_OPTIONS), optionRef.current));
175
+ editor.setModel({
176
+ original: originalModel,
177
+ modified: modifiedModel
178
+ });
179
+ }
180
+ editorRef.current = editor;
181
+ (_enhancersRef$current = enhancersRef.current.enhancers) === null || _enhancersRef$current === void 0 || _enhancersRef$current.forEach(function (en) {
182
+ return en(monaco, editor);
183
+ });
184
+ try {
185
+ var _editorDidMountRef$cu;
186
+ (_editorDidMountRef$cu = editorDidMountRef.current) === null || _editorDidMountRef$cu === void 0 || _editorDidMountRef$cu.call(editorDidMountRef, monaco, editor);
187
+ } catch (_unused2) {}
188
+ if (!decomposeRef.current) {
189
+ setIsEditorReady(true);
190
+ }
191
+ }).catch(function (error) {
192
+ // eslint-disable-next-line no-console
193
+ console.error('Monaco Editor Load Error!', error);
194
+ }).then(function () {
195
+ if (!decomposeRef.current) {
196
+ setLoading(false);
197
+ }
198
+ });
199
+ }, []);
200
+ useEffect(function () {
201
+ var _monacoRef$current;
202
+ if (!isEditorReady) {
203
+ return;
204
+ }
205
+ (_monacoRef$current = monacoRef.current) === null || _monacoRef$current === void 0 || _monacoRef$current.editor.setTheme(theme);
206
+ }, [isEditorReady, theme]);
207
+
208
+ // focus status
209
+ useEffect(function () {
210
+ if (!isEditorReady) {
211
+ return;
212
+ }
213
+ var editor = type === 'diff' ? editorRef.current.getModifiedEditor() : editorRef.current;
214
+ editor === null || editor === void 0 || editor.onDidFocusEditorText(function () {
215
+ if (!decomposeRef.current) {
216
+ setFocused(true);
217
+ }
218
+ });
219
+ editor === null || editor === void 0 || editor.onDidBlurEditorText(function () {
220
+ if (!decomposeRef.current) {
221
+ setFocused(false);
222
+ }
223
+ });
224
+ }, [isEditorReady, type]);
225
+
226
+ // decomposing status
227
+ useEffect(function () {
228
+ return function () {
229
+ decomposeRef.current = true;
230
+ };
231
+ }, []);
232
+
233
+ // controlled value -- diff mode / without path only
234
+ useEffect(function () {
235
+ var _ref2, _monacoRef$current2, _editor$getOption;
236
+ if (!isEditorReady) {
237
+ return;
238
+ }
239
+ if (type !== 'diff' && !!path) {
240
+ return;
241
+ }
242
+ var editor = type === 'diff' ? editorRef.current.getModifiedEditor() : editorRef.current;
243
+ var nextValue = (_ref2 = value !== null && value !== void 0 ? value : defaultValueRef.current) !== null && _ref2 !== void 0 ? _ref2 : '';
244
+ var readOnly = (_monacoRef$current2 = monacoRef.current) === null || _monacoRef$current2 === void 0 ? void 0 : _monacoRef$current2.editor.EditorOption.readOnly;
245
+ if (readOnly && editor !== null && editor !== void 0 && (_editor$getOption = editor.getOption) !== null && _editor$getOption !== void 0 && _editor$getOption.call(editor, readOnly)) {
246
+ editor === null || editor === void 0 || editor.setValue(nextValue);
247
+ } else if (value !== (editor === null || editor === void 0 ? void 0 : editor.getValue())) {
248
+ editor === null || editor === void 0 || editor.executeEdits('', [{
249
+ range: editor === null || editor === void 0 ? void 0 : editor.getModel().getFullModelRange(),
250
+ text: nextValue,
251
+ forceMoveMarkers: true
252
+ }]);
253
+ editor === null || editor === void 0 || editor.pushUndoStop();
254
+ }
255
+ }, [isEditorReady, path, type, value]);
256
+
257
+ // multi-model && controlled value (shouldn't be diff mode)
258
+ useEffect(function () {
259
+ var _valueRef$current2, _editorRef$current;
260
+ if (!isEditorReady) {
261
+ return;
262
+ }
263
+ if (type === 'diff') {
264
+ return;
265
+ }
266
+ if (path === previousPath) {
267
+ return;
268
+ }
269
+ var model = getOrCreateModel(monacoRef.current, (_valueRef$current2 = valueRef.current) !== null && _valueRef$current2 !== void 0 ? _valueRef$current2 : defaultValueRef.current, languageRef.current, path);
270
+ var editor = editorRef.current;
271
+ if (valueRef.current !== null && valueRef.current !== undefined && model.getValue() !== valueRef.current) {
272
+ model.setValue(valueRef.current);
273
+ }
274
+ if (model !== ((_editorRef$current = editorRef.current) === null || _editorRef$current === void 0 ? void 0 : _editorRef$current.getModel())) {
275
+ if (saveViewState) {
276
+ viewStatusRef.current.set(previousPath, editor.saveViewState());
277
+ }
278
+ editor.setModel(model);
279
+ if (saveViewState) {
280
+ editor.restoreViewState(viewStatusRef.current.get(path));
281
+ }
282
+ }
283
+ }, [isEditorReady, value, path, previousPath, type, saveViewState]);
284
+ var retEditorRef = editorRef;
285
+ return {
286
+ isEditorReady: isEditorReady,
287
+ focused: focused,
288
+ loading: loading,
289
+ containerRef: containerRef,
290
+ monacoRef: monacoRef,
291
+ editorRef: retEditorRef,
292
+ valueRef: valueRef
293
+ };
294
+ };
295
+ export var useFullScreen = function useFullScreen(editor) {
296
+ var _useState7 = useState(false),
297
+ _useState8 = _slicedToArray(_useState7, 2),
298
+ isFullScreen = _useState8[0],
299
+ setIsFullScreen = _useState8[1];
300
+ var fullScreen = function fullScreen() {
301
+ if (isFullScreen) {
302
+ setIsFullScreen(false);
303
+ editor === null || editor === void 0 || editor.updateOptions(_objectSpread(_objectSpread({}, editor === null || editor === void 0 ? void 0 : editor.getOptions()), {}, {
304
+ minimap: {
305
+ enabled: false
306
+ }
307
+ }));
308
+ editor === null || editor === void 0 || editor.layout();
309
+ return;
310
+ }
311
+ setIsFullScreen(true);
312
+ // 更新小地图配置
313
+ editor === null || editor === void 0 || editor.updateOptions(_objectSpread(_objectSpread({}, editor === null || editor === void 0 ? void 0 : editor.getOptions()), {}, {
314
+ minimap: {
315
+ enabled: true
316
+ }
317
+ }));
318
+ editor === null || editor === void 0 || editor.layout();
319
+ };
320
+ return {
321
+ isFullScreen: isFullScreen,
322
+ fullScreen: fullScreen
323
+ };
324
+ };
@@ -0,0 +1,35 @@
1
+ import type { editor } from 'monaco-editor';
2
+ import React from 'react';
3
+ import { IDiffMonacoEditorProps, ISingleMonacoEditorProps } from './helper';
4
+ export * from './controller';
5
+ export * from './monaco';
6
+ declare function noop(): void;
7
+ export declare const SingleMonacoEditorComponent: React.FC<ISingleMonacoEditorProps> & {
8
+ displayName: string;
9
+ defaultProps: {
10
+ width: string;
11
+ height: number;
12
+ defaultValue: string;
13
+ language: string;
14
+ options: editor.IStandaloneEditorConstructionOptions;
15
+ editorDidMount: typeof noop;
16
+ editorWillMount: typeof noop;
17
+ onChange: typeof noop;
18
+ requireConfig: {};
19
+ };
20
+ MonacoDiffEditor: React.FC<IDiffMonacoEditorProps> & {
21
+ displayName: string;
22
+ defaultProps: {
23
+ width: string;
24
+ height: number;
25
+ defaultValue: string;
26
+ language: string;
27
+ options: editor.IStandaloneEditorConstructionOptions;
28
+ editorDidMount: typeof noop;
29
+ editorWillMount: typeof noop;
30
+ onChange: typeof noop;
31
+ requireConfig: {};
32
+ };
33
+ };
34
+ };
35
+ export default SingleMonacoEditorComponent;