@coveord/plasma-mantine 52.26.2 → 52.26.4
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/.turbo/turbo-build.log +3 -3
- package/.turbo/turbo-test.log +33 -127
- package/dist/.tsbuildinfo +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirmButton.d.ts.map +1 -1
- package/dist/cjs/components/inline-confirm/InlineConfirmButton.js +2 -2
- package/dist/cjs/components/inline-confirm/InlineConfirmButton.js.map +1 -1
- package/dist/esm/components/action-icon/ActionIcon.js +29 -80
- package/dist/esm/components/action-icon/ActionIcon.js.map +1 -1
- package/dist/esm/components/action-icon/index.js +1 -1
- package/dist/esm/components/blank-slate/BlankSlate.js +3 -6
- package/dist/esm/components/blank-slate/BlankSlate.js.map +1 -1
- package/dist/esm/components/blank-slate/index.js +1 -1
- package/dist/esm/components/browser-preview/BrowserPreview.js +16 -28
- package/dist/esm/components/browser-preview/BrowserPreview.js.map +1 -1
- package/dist/esm/components/browser-preview/BrowserPreview.styles.js +6 -8
- package/dist/esm/components/browser-preview/BrowserPreview.styles.js.map +1 -1
- package/dist/esm/components/browser-preview/index.js +1 -1
- package/dist/esm/components/button/Button.js +29 -80
- package/dist/esm/components/button/Button.js.map +1 -1
- package/dist/esm/components/button/ButtonWithDisabledTooltip.js +16 -28
- package/dist/esm/components/button/ButtonWithDisabledTooltip.js.map +1 -1
- package/dist/esm/components/button/index.js +1 -1
- package/dist/esm/components/code-editor/CodeEditor.js +76 -144
- package/dist/esm/components/code-editor/CodeEditor.js.map +1 -1
- package/dist/esm/components/code-editor/index.js +1 -1
- package/dist/esm/components/code-editor/languages/xml.js +18 -32
- package/dist/esm/components/code-editor/languages/xml.js.map +1 -1
- package/dist/esm/components/code-editor/search/Search.js +6 -13
- package/dist/esm/components/code-editor/search/Search.js.map +1 -1
- package/dist/esm/components/code-editor/search/index.js +1 -1
- package/dist/esm/components/collection/Collection.js +57 -110
- package/dist/esm/components/collection/Collection.js.map +1 -1
- package/dist/esm/components/collection/Collection.styles.js +7 -9
- package/dist/esm/components/collection/Collection.styles.js.map +1 -1
- package/dist/esm/components/collection/CollectionItem.js +47 -54
- package/dist/esm/components/collection/CollectionItem.js.map +1 -1
- package/dist/esm/components/collection/index.js +1 -1
- package/dist/esm/components/copyToClipboard/CopyToClipboard.js +19 -29
- package/dist/esm/components/copyToClipboard/CopyToClipboard.js.map +1 -1
- package/dist/esm/components/copyToClipboard/index.js +1 -1
- package/dist/esm/components/date-range-picker/DateRangePickerInlineCalendar.js +29 -32
- package/dist/esm/components/date-range-picker/DateRangePickerInlineCalendar.js.map +1 -1
- package/dist/esm/components/date-range-picker/DateRangePickerPopoverCalendar.js +22 -29
- package/dist/esm/components/date-range-picker/DateRangePickerPopoverCalendar.js.map +1 -1
- package/dist/esm/components/date-range-picker/DateRangePickerPresetSelect.js +19 -30
- package/dist/esm/components/date-range-picker/DateRangePickerPresetSelect.js.map +1 -1
- package/dist/esm/components/date-range-picker/EditableDateRangePicker.js +21 -22
- package/dist/esm/components/date-range-picker/EditableDateRangePicker.js.map +1 -1
- package/dist/esm/components/date-range-picker/index.js +3 -3
- package/dist/esm/components/header/Header.js +28 -48
- package/dist/esm/components/header/Header.js.map +1 -1
- package/dist/esm/components/header/Header.styles.js +7 -10
- package/dist/esm/components/header/Header.styles.js.map +1 -1
- package/dist/esm/components/header/HeaderActions/HeaderActions.js +16 -25
- package/dist/esm/components/header/HeaderActions/HeaderActions.js.map +1 -1
- package/dist/esm/components/header/HeaderActions/HeaderActions.styles.js +3 -7
- package/dist/esm/components/header/HeaderActions/HeaderActions.styles.js.map +1 -1
- package/dist/esm/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.js +13 -22
- package/dist/esm/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.js.map +1 -1
- package/dist/esm/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.styles.js +3 -7
- package/dist/esm/components/header/HeaderBreadcrumbs/HeaderBreadcrumbs.styles.js.map +1 -1
- package/dist/esm/components/header/HeaderDocAnchor/HeaderDocAnchor.js +17 -28
- package/dist/esm/components/header/HeaderDocAnchor/HeaderDocAnchor.js.map +1 -1
- package/dist/esm/components/header/HeaderDocAnchor/HeaderDocAnchor.styles.js +4 -8
- package/dist/esm/components/header/HeaderDocAnchor/HeaderDocAnchor.styles.js.map +1 -1
- package/dist/esm/components/header/index.js +1 -1
- package/dist/esm/components/index.js +15 -15
- package/dist/esm/components/inline-confirm/InlineConfirm.js +14 -20
- package/dist/esm/components/inline-confirm/InlineConfirm.js.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirmButton.d.ts.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirmButton.js +11 -17
- package/dist/esm/components/inline-confirm/InlineConfirmButton.js.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirmContext.js +2 -2
- package/dist/esm/components/inline-confirm/InlineConfirmContext.js.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirmMenuItem.js +11 -17
- package/dist/esm/components/inline-confirm/InlineConfirmMenuItem.js.map +1 -1
- package/dist/esm/components/inline-confirm/InlineConfirmPrompt.js +8 -9
- package/dist/esm/components/inline-confirm/InlineConfirmPrompt.js.map +1 -1
- package/dist/esm/components/inline-confirm/index.js +3 -3
- package/dist/esm/components/inline-confirm/useInlineConfirm.js +5 -5
- package/dist/esm/components/inline-confirm/useInlineConfirm.js.map +1 -1
- package/dist/esm/components/menu/Menu.js +13 -21
- package/dist/esm/components/menu/Menu.js.map +1 -1
- package/dist/esm/components/menu/index.js +1 -1
- package/dist/esm/components/modal-wizard/ModalWizard.js +57 -108
- package/dist/esm/components/modal-wizard/ModalWizard.js.map +1 -1
- package/dist/esm/components/modal-wizard/ModalWizardStep.js +1 -4
- package/dist/esm/components/modal-wizard/ModalWizardStep.js.map +1 -1
- package/dist/esm/components/modal-wizard/index.js +1 -1
- package/dist/esm/components/prompt/Prompt.js +29 -41
- package/dist/esm/components/prompt/Prompt.js.map +1 -1
- package/dist/esm/components/prompt/PromptFooter.js +4 -11
- package/dist/esm/components/prompt/PromptFooter.js.map +1 -1
- package/dist/esm/components/prompt/index.js +1 -1
- package/dist/esm/components/sticky-footer/StickyFooter.js +21 -35
- package/dist/esm/components/sticky-footer/StickyFooter.js.map +1 -1
- package/dist/esm/components/sticky-footer/index.js +1 -1
- package/dist/esm/components/table/Table.js +94 -123
- package/dist/esm/components/table/Table.js.map +1 -1
- package/dist/esm/components/table/Table.styles.js +11 -13
- package/dist/esm/components/table/Table.styles.js.map +1 -1
- package/dist/esm/components/table/TableContext.js +5 -5
- package/dist/esm/components/table/TableContext.js.map +1 -1
- package/dist/esm/components/table/index.js +3 -3
- package/dist/esm/components/table/layouts/RowLayout.js +59 -79
- package/dist/esm/components/table/layouts/RowLayout.js.map +1 -1
- package/dist/esm/components/table/layouts/RowLayout.styles.js +27 -28
- package/dist/esm/components/table/layouts/RowLayout.styles.js.map +1 -1
- package/dist/esm/components/table/layouts/TableLayoutControl.js +10 -13
- package/dist/esm/components/table/layouts/TableLayoutControl.js.map +1 -1
- package/dist/esm/components/table/layouts/TableLayouts.js +2 -2
- package/dist/esm/components/table/layouts/TableLayouts.js.map +1 -1
- package/dist/esm/components/table/table-actions/TableActions.js +17 -26
- package/dist/esm/components/table/table-actions/TableActions.js.map +1 -1
- package/dist/esm/components/table/table-actions/TableActions.styles.js +5 -7
- package/dist/esm/components/table/table-actions/TableActions.styles.js.map +1 -1
- package/dist/esm/components/table/table-column/TableCollapsibleColumn.js +19 -23
- package/dist/esm/components/table/table-column/TableCollapsibleColumn.js.map +1 -1
- package/dist/esm/components/table/table-column/TableSelectableColumn.js +9 -13
- package/dist/esm/components/table/table-column/TableSelectableColumn.js.map +1 -1
- package/dist/esm/components/table/table-consumer/TableConsumer.js +1 -4
- package/dist/esm/components/table/table-consumer/TableConsumer.js.map +1 -1
- package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.js +28 -43
- package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.js.map +1 -1
- package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.styles.js +3 -5
- package/dist/esm/components/table/table-date-range-picker/TableDateRangePicker.styles.js.map +1 -1
- package/dist/esm/components/table/table-filter/TableFilter.js +30 -40
- package/dist/esm/components/table/table-filter/TableFilter.js.map +1 -1
- package/dist/esm/components/table/table-filter/TableFilter.styles.js +4 -6
- package/dist/esm/components/table/table-filter/TableFilter.styles.js.map +1 -1
- package/dist/esm/components/table/table-footer/TableFooter.js +5 -13
- package/dist/esm/components/table/table-footer/TableFooter.js.map +1 -1
- package/dist/esm/components/table/table-header/TableHeader.js +20 -29
- package/dist/esm/components/table/table-header/TableHeader.js.map +1 -1
- package/dist/esm/components/table/table-header/TableHeader.styles.js +8 -10
- package/dist/esm/components/table/table-header/TableHeader.styles.js.map +1 -1
- package/dist/esm/components/table/table-header/Th.js +27 -35
- package/dist/esm/components/table/table-header/Th.js.map +1 -1
- package/dist/esm/components/table/table-header/Th.styles.js +13 -16
- package/dist/esm/components/table/table-header/Th.styles.js.map +1 -1
- package/dist/esm/components/table/table-last-updated/TableLastUpdated.js +24 -35
- package/dist/esm/components/table/table-last-updated/TableLastUpdated.js.map +1 -1
- package/dist/esm/components/table/table-last-updated/TableLastUpdated.styles.js +4 -6
- package/dist/esm/components/table/table-last-updated/TableLastUpdated.styles.js.map +1 -1
- package/dist/esm/components/table/table-loading/TableLoading.js +4 -7
- package/dist/esm/components/table/table-loading/TableLoading.js.map +1 -1
- package/dist/esm/components/table/table-pagination/TablePagination.js +21 -25
- package/dist/esm/components/table/table-pagination/TablePagination.js.map +1 -1
- package/dist/esm/components/table/table-per-page/TablePerPage.js +15 -24
- package/dist/esm/components/table/table-per-page/TablePerPage.js.map +1 -1
- package/dist/esm/components/table/table-predicate/TablePredicate.js +25 -35
- package/dist/esm/components/table/table-predicate/TablePredicate.js.map +1 -1
- package/dist/esm/components/table/table-predicate/TablePredicate.styles.js +3 -5
- package/dist/esm/components/table/table-predicate/TablePredicate.styles.js.map +1 -1
- package/dist/esm/form/FormProvider.js +9 -10
- package/dist/esm/form/FormProvider.js.map +1 -1
- package/dist/esm/form/index.js +2 -2
- package/dist/esm/form/useForm.js +18 -25
- package/dist/esm/form/useForm.js.map +1 -1
- package/dist/esm/hooks/index.js +2 -2
- package/dist/esm/hooks/useControlledList.js +24 -30
- package/dist/esm/hooks/useControlledList.js.map +1 -1
- package/dist/esm/hooks/useParentHeight.js +10 -11
- package/dist/esm/hooks/useParentHeight.js.map +1 -1
- package/dist/esm/hooks/useRowSelection.js +33 -44
- package/dist/esm/hooks/useRowSelection.js.map +1 -1
- package/dist/esm/index.js +11 -11
- package/dist/esm/theme/PlasmaColors.js +13 -15
- package/dist/esm/theme/PlasmaColors.js.map +1 -1
- package/dist/esm/theme/Plasmantine.js +3 -6
- package/dist/esm/theme/Plasmantine.js.map +1 -1
- package/dist/esm/theme/Theme.js +142 -171
- package/dist/esm/theme/Theme.js.map +1 -1
- package/dist/esm/theme/index.js +1 -1
- package/dist/esm/utils/createPolymorphicComponent.js +2 -2
- package/dist/esm/utils/createPolymorphicComponent.js.map +1 -1
- package/dist/esm/utils/index.js +2 -2
- package/dist/esm/utils/overrideComponent.js +2 -8
- package/dist/esm/utils/overrideComponent.js.map +1 -1
- package/package.json +4 -4
- package/src/components/inline-confirm/InlineConfirmButton.tsx +1 -2
- package/src/components/inline-confirm/__tests__/InlineConfirm.spec.tsx +20 -0
|
@@ -1,149 +1,100 @@
|
|
|
1
|
-
import { _ as _async_to_generator } from "@swc/helpers/_/_async_to_generator";
|
|
2
|
-
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
3
|
-
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
4
|
-
import { _ as _object_without_properties } from "@swc/helpers/_/_object_without_properties";
|
|
5
|
-
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
6
|
-
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
7
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
-
import { Box, Center, createStyles, Group, Input, Loader, px, Space, Stack, useComponentDefaultProps } from
|
|
9
|
-
import { useUncontrolled } from
|
|
10
|
-
import Editor, { loader } from
|
|
11
|
-
import { useEffect, useRef, useState } from
|
|
12
|
-
import { useParentHeight } from
|
|
13
|
-
import { XML } from
|
|
14
|
-
import { CopyToClipboard } from
|
|
15
|
-
import { Search } from
|
|
16
|
-
|
|
17
|
-
var error = param.error;
|
|
18
|
-
return {
|
|
2
|
+
import { Box, Center, createStyles, Group, Input, Loader, px, Space, Stack, useComponentDefaultProps } from '@mantine/core';
|
|
3
|
+
import { useUncontrolled } from '@mantine/hooks';
|
|
4
|
+
import Editor, { loader } from '@monaco-editor/react';
|
|
5
|
+
import { useEffect, useRef, useState } from 'react';
|
|
6
|
+
import { useParentHeight } from '../../hooks';
|
|
7
|
+
import { XML } from './languages/xml';
|
|
8
|
+
import { CopyToClipboard } from '../copyToClipboard';
|
|
9
|
+
import { Search } from './search';
|
|
10
|
+
const useStyles = createStyles((theme, { error })=>({
|
|
19
11
|
root: {},
|
|
20
12
|
editor: {
|
|
21
|
-
border:
|
|
13
|
+
border: `1px solid ${theme.colors.gray[2]}`,
|
|
22
14
|
borderRadius: theme.defaultRadius,
|
|
23
|
-
backgroundColor: theme.colorScheme ===
|
|
24
|
-
height:
|
|
15
|
+
backgroundColor: theme.colorScheme === 'light' ? theme.white : theme.black,
|
|
16
|
+
height: '100%',
|
|
25
17
|
outlineColor: error ? theme.colors.red[6] : null,
|
|
26
|
-
outlineStyle: error ?
|
|
27
|
-
outlineWidth:
|
|
18
|
+
outlineStyle: error ? 'solid' : 'none',
|
|
19
|
+
outlineWidth: 'thin'
|
|
28
20
|
}
|
|
29
|
-
};
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
defaultValue: "",
|
|
21
|
+
}));
|
|
22
|
+
const defaultProps = {
|
|
23
|
+
language: 'plaintext',
|
|
24
|
+
monacoLoader: 'local',
|
|
25
|
+
defaultValue: '',
|
|
35
26
|
minHeight: 300
|
|
36
27
|
};
|
|
37
|
-
export
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
"descriptionProps",
|
|
53
|
-
"minHeight",
|
|
54
|
-
"maxHeight",
|
|
55
|
-
"disabled",
|
|
56
|
-
"monacoLoader"
|
|
57
|
-
]);
|
|
58
|
-
var _useState = _sliced_to_array(useState(false), 2), loaded = _useState[0], setLoaded = _useState[1];
|
|
59
|
-
var _useUncontrolled = _sliced_to_array(useUncontrolled({
|
|
60
|
-
value: value,
|
|
61
|
-
defaultValue: defaultValue,
|
|
62
|
-
onChange: onChange,
|
|
63
|
-
finalValue: ""
|
|
64
|
-
}), 2), _value = _useUncontrolled[0], handleChange = _useUncontrolled[1];
|
|
65
|
-
var _useParentHeight = _sliced_to_array(useParentHeight(), 2), parentHeight = _useParentHeight[0], ref = _useParentHeight[1];
|
|
66
|
-
var editorRef = useRef(null);
|
|
67
|
-
var loadLocalMonaco = function() {
|
|
68
|
-
var _ref = _async_to_generator(function() {
|
|
69
|
-
var monacoInstance;
|
|
70
|
-
return _ts_generator(this, function(_state) {
|
|
71
|
-
switch(_state.label){
|
|
72
|
-
case 0:
|
|
73
|
-
return [
|
|
74
|
-
4,
|
|
75
|
-
import("monaco-editor")
|
|
76
|
-
];
|
|
77
|
-
case 1:
|
|
78
|
-
monacoInstance = _state.sent();
|
|
79
|
-
loader.config({
|
|
80
|
-
monaco: monacoInstance
|
|
81
|
-
});
|
|
82
|
-
setLoaded(true);
|
|
83
|
-
return [
|
|
84
|
-
2
|
|
85
|
-
];
|
|
86
|
-
}
|
|
87
|
-
});
|
|
28
|
+
export const CodeEditor = (props)=>{
|
|
29
|
+
const { language, defaultValue, onChange, onCopy, onSearch, onFocus, value, label, required, labelProps, error, errorProps, description, descriptionProps, minHeight, maxHeight, disabled, monacoLoader, ...others } = useComponentDefaultProps('CodeEditor', defaultProps, props);
|
|
30
|
+
const [loaded, setLoaded] = useState(false);
|
|
31
|
+
const [_value, handleChange] = useUncontrolled({
|
|
32
|
+
value,
|
|
33
|
+
defaultValue,
|
|
34
|
+
onChange,
|
|
35
|
+
finalValue: ''
|
|
36
|
+
});
|
|
37
|
+
const [parentHeight, ref] = useParentHeight();
|
|
38
|
+
const editorRef = useRef(null);
|
|
39
|
+
const loadLocalMonaco = async ()=>{
|
|
40
|
+
const monacoInstance = await import('monaco-editor');
|
|
41
|
+
loader.config({
|
|
42
|
+
monaco: monacoInstance
|
|
88
43
|
});
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
var registerLanguages = function(monaco) {
|
|
94
|
-
if (monaco && language === "xml") {
|
|
44
|
+
setLoaded(true);
|
|
45
|
+
};
|
|
46
|
+
const registerLanguages = (monaco)=>{
|
|
47
|
+
if (monaco && language === 'xml') {
|
|
95
48
|
XML.register(monaco);
|
|
96
49
|
}
|
|
97
50
|
};
|
|
98
|
-
|
|
51
|
+
const handleSearch = ()=>{
|
|
99
52
|
if (editorRef.current) {
|
|
100
|
-
var _onSearch;
|
|
101
53
|
editorRef.current.focus();
|
|
102
|
-
editorRef.current.trigger(
|
|
103
|
-
|
|
54
|
+
editorRef.current.trigger('editor', 'actions.find', '');
|
|
55
|
+
onSearch?.();
|
|
104
56
|
}
|
|
105
57
|
};
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
58
|
+
const [hasMonacoError, setHasMonacoError] = useState(false);
|
|
59
|
+
const renderErrorOutline = !!error || hasMonacoError;
|
|
60
|
+
const { classes, theme } = useStyles({
|
|
109
61
|
error: renderErrorOutline
|
|
110
62
|
}, {
|
|
111
|
-
name:
|
|
112
|
-
})
|
|
113
|
-
useEffect(
|
|
114
|
-
if (monacoLoader ===
|
|
63
|
+
name: 'CodeEditor'
|
|
64
|
+
});
|
|
65
|
+
useEffect(()=>{
|
|
66
|
+
if (monacoLoader === 'local') {
|
|
115
67
|
loadLocalMonaco();
|
|
116
68
|
} else {
|
|
117
69
|
setLoaded(true);
|
|
118
70
|
}
|
|
119
71
|
}, []);
|
|
120
|
-
|
|
121
|
-
setHasMonacoError(markers.some(
|
|
122
|
-
return marker.severity === loader.__getMonacoInstance().MarkerSeverity.Error;
|
|
123
|
-
}));
|
|
72
|
+
const handleValidate = (markers)=>{
|
|
73
|
+
setHasMonacoError(markers.some((marker)=>marker.severity === loader.__getMonacoInstance().MarkerSeverity.Error));
|
|
124
74
|
};
|
|
125
|
-
|
|
126
|
-
required: required
|
|
127
|
-
|
|
75
|
+
const _label = label ? /*#__PURE__*/ _jsx(Input.Label, {
|
|
76
|
+
required: required,
|
|
77
|
+
...labelProps,
|
|
128
78
|
children: label
|
|
129
|
-
})
|
|
130
|
-
|
|
79
|
+
}) : null;
|
|
80
|
+
const _description = description ? /*#__PURE__*/ _jsx(Input.Description, {
|
|
81
|
+
...descriptionProps,
|
|
131
82
|
children: description
|
|
132
|
-
})
|
|
133
|
-
|
|
134
|
-
mt: "xs"
|
|
135
|
-
|
|
83
|
+
}) : null;
|
|
84
|
+
const _error = error ? /*#__PURE__*/ _jsx(Input.Error, {
|
|
85
|
+
mt: "xs",
|
|
86
|
+
...errorProps,
|
|
136
87
|
children: error
|
|
137
|
-
})
|
|
88
|
+
}) : /*#__PURE__*/ _jsx(Space, {
|
|
138
89
|
h: "xs"
|
|
139
90
|
});
|
|
140
|
-
|
|
91
|
+
const _header = _label || _description ? /*#__PURE__*/ _jsxs(Box, {
|
|
141
92
|
children: [
|
|
142
93
|
_label,
|
|
143
94
|
_description
|
|
144
95
|
]
|
|
145
96
|
}) : null;
|
|
146
|
-
|
|
97
|
+
const _buttons = /*#__PURE__*/ _jsxs(Group, {
|
|
147
98
|
position: "right",
|
|
148
99
|
spacing: 0,
|
|
149
100
|
children: [
|
|
@@ -152,14 +103,11 @@ export var CodeEditor = function(props) {
|
|
|
152
103
|
}),
|
|
153
104
|
/*#__PURE__*/ _jsx(CopyToClipboard, {
|
|
154
105
|
value: _value,
|
|
155
|
-
onCopy:
|
|
156
|
-
var _onCopy;
|
|
157
|
-
return (_onCopy = onCopy) === null || _onCopy === void 0 ? void 0 : _onCopy();
|
|
158
|
-
}
|
|
106
|
+
onCopy: ()=>onCopy?.()
|
|
159
107
|
})
|
|
160
108
|
]
|
|
161
109
|
});
|
|
162
|
-
|
|
110
|
+
const _editor = loaded ? /*#__PURE__*/ _jsx(Box, {
|
|
163
111
|
p: "md",
|
|
164
112
|
pl: "xs",
|
|
165
113
|
className: classes.editor,
|
|
@@ -167,12 +115,12 @@ export var CodeEditor = function(props) {
|
|
|
167
115
|
children: /*#__PURE__*/ _jsx(Editor, {
|
|
168
116
|
onValidate: handleValidate,
|
|
169
117
|
defaultLanguage: language,
|
|
170
|
-
theme: theme.colorScheme ===
|
|
118
|
+
theme: theme.colorScheme === 'light' ? 'light' : 'vs-dark',
|
|
171
119
|
options: {
|
|
172
120
|
minimap: {
|
|
173
121
|
enabled: false
|
|
174
122
|
},
|
|
175
|
-
wordWrap:
|
|
123
|
+
wordWrap: 'on',
|
|
176
124
|
scrollBeyondLastLine: false,
|
|
177
125
|
formatOnPaste: true,
|
|
178
126
|
fontSize: px(theme.fontSizes.xs),
|
|
@@ -181,52 +129,36 @@ export var CodeEditor = function(props) {
|
|
|
181
129
|
},
|
|
182
130
|
value: _value,
|
|
183
131
|
onChange: handleChange,
|
|
184
|
-
onMount:
|
|
132
|
+
onMount: (editor, monaco)=>{
|
|
185
133
|
editorRef.current = editor;
|
|
186
134
|
registerLanguages(monaco);
|
|
187
|
-
editor.onDidFocusEditorText(
|
|
188
|
-
|
|
189
|
-
|
|
135
|
+
editor.onDidFocusEditorText(()=>onFocus?.());
|
|
136
|
+
editor.onDidBlurEditorText(async ()=>{
|
|
137
|
+
await editor.getAction('editor.action.formatDocument').run();
|
|
190
138
|
});
|
|
191
|
-
editor.onDidBlurEditorText(/*#__PURE__*/ _async_to_generator(function() {
|
|
192
|
-
return _ts_generator(this, function(_state) {
|
|
193
|
-
switch(_state.label){
|
|
194
|
-
case 0:
|
|
195
|
-
return [
|
|
196
|
-
4,
|
|
197
|
-
editor.getAction("editor.action.formatDocument").run()
|
|
198
|
-
];
|
|
199
|
-
case 1:
|
|
200
|
-
_state.sent();
|
|
201
|
-
return [
|
|
202
|
-
2
|
|
203
|
-
];
|
|
204
|
-
}
|
|
205
|
-
});
|
|
206
|
-
}));
|
|
207
139
|
}
|
|
208
140
|
})
|
|
209
141
|
}) : /*#__PURE__*/ _jsx(Center, {
|
|
210
142
|
className: classes.editor,
|
|
211
143
|
children: /*#__PURE__*/ _jsx(Loader, {})
|
|
212
144
|
});
|
|
213
|
-
return /*#__PURE__*/ _jsxs(Stack,
|
|
145
|
+
return /*#__PURE__*/ _jsxs(Stack, {
|
|
214
146
|
justify: "flex-start",
|
|
215
147
|
className: classes.root,
|
|
216
148
|
spacing: 0,
|
|
217
149
|
sx: {
|
|
218
150
|
height: Math.max(parentHeight, minHeight),
|
|
219
|
-
maxHeight
|
|
151
|
+
maxHeight
|
|
220
152
|
},
|
|
221
|
-
ref: ref
|
|
222
|
-
|
|
153
|
+
ref: ref,
|
|
154
|
+
...others,
|
|
223
155
|
children: [
|
|
224
156
|
_header,
|
|
225
157
|
_buttons,
|
|
226
158
|
_editor,
|
|
227
159
|
_error
|
|
228
160
|
]
|
|
229
|
-
})
|
|
161
|
+
});
|
|
230
162
|
};
|
|
231
163
|
|
|
232
164
|
//# sourceMappingURL=CodeEditor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/components/code-editor/CodeEditor.tsx"],"sourcesContent":["import {\n Box,\n Center,\n createStyles,\n DefaultProps,\n Group,\n Input,\n InputWrapperBaseProps,\n Loader,\n px,\n Selectors,\n Space,\n Stack,\n useComponentDefaultProps,\n} from '@mantine/core';\nimport {useUncontrolled} from '@mantine/hooks';\nimport {editor as monacoEditor} from 'monaco-editor';\nimport Editor, {loader, Monaco} from '@monaco-editor/react';\nimport {FunctionComponent, useEffect, useRef, useState} from 'react';\n\nimport {useParentHeight} from '../../hooks';\nimport {XML} from './languages/xml';\nimport {CopyToClipboard} from '../copyToClipboard';\nimport {Search} from './search';\n\nconst useStyles = createStyles((theme, {error}: {error?: boolean}) => ({\n root: {},\n editor: {\n border: `1px solid ${theme.colors.gray[2]}`,\n borderRadius: theme.defaultRadius,\n backgroundColor: theme.colorScheme === 'light' ? theme.white : theme.black,\n height: '100%',\n outlineColor: error ? theme.colors.red[6] : null,\n outlineStyle: error ? 'solid' : 'none',\n outlineWidth: 'thin',\n },\n}));\n\ninterface CodeEditorProps\n extends Omit<InputWrapperBaseProps, 'inputContainer' | 'inputWrapperOrder'>,\n DefaultProps<Selectors<typeof useStyles>> {\n /**\n * The language syntax of the editor\n *\n * @default 'plaintext'\n */\n language?: 'plaintext' | 'json' | 'markdown' | 'python' | 'xml' | (string & unknown);\n /** Default value for uncontrolled input */\n defaultValue?: string;\n /** Value for controlled input */\n value?: string;\n /** onChange value for controlled input */\n onChange?(value: string): void;\n /** Called whenever the search icon is clicked */\n onSearch?(): void;\n /** Called whenever the copy icon is clicked */\n onCopy?(): void;\n /** Called whenever the code editor gets the focus */\n onFocus?(): void;\n /**\n * The minimal height of the CodeEditor (label and description included)\n *\n * By default the CodeEditor is adjusted to fill its parent height.\n * In the case where the parent height is too short, it will use this value as minimum.\n *\n * @default 300\n */\n minHeight?: number;\n /**\n * The maximal height of the CodeEditor (label and description included)\n *\n * By default the CodeEditor is adjusted to fill its parent height.\n * In the case where the parent height would be too high for your liking, you can use this prop to set a maximum.\n */\n maxHeight?: number;\n disabled?: boolean;\n /**\n * Defines how the monaco editor files will be loaded.\n * Note that using `'local'` requires [some additional configuration](https://github.com/suren-atoyan/monaco-react#use-monaco-editor-as-an-npm-package).\n *\n * @default 'local'\n */\n monacoLoader?: 'cdn' | 'local';\n}\n\nconst defaultProps: Partial<CodeEditorProps> = {\n language: 'plaintext',\n monacoLoader: 'local',\n defaultValue: '',\n minHeight: 300,\n};\n\nexport const CodeEditor: FunctionComponent<CodeEditorProps> = (props) => {\n const {\n language,\n defaultValue,\n onChange,\n onCopy,\n onSearch,\n onFocus,\n value,\n label,\n required,\n labelProps,\n error,\n errorProps,\n description,\n descriptionProps,\n minHeight,\n maxHeight,\n disabled,\n monacoLoader,\n ...others\n } = useComponentDefaultProps('CodeEditor', defaultProps, props);\n const [loaded, setLoaded] = useState(false);\n const [_value, handleChange] = useUncontrolled<string>({\n value,\n defaultValue,\n onChange,\n finalValue: '',\n });\n const [parentHeight, ref] = useParentHeight();\n const editorRef = useRef(null);\n const loadLocalMonaco = async () => {\n const monacoInstance = await import('monaco-editor');\n loader.config({monaco: monacoInstance});\n setLoaded(true);\n };\n\n const registerLanguages = (monaco: Monaco) => {\n if (monaco && language === 'xml') {\n XML.register(monaco);\n }\n };\n\n const handleSearch = () => {\n if (editorRef.current) {\n editorRef.current.focus();\n editorRef.current.trigger('editor', 'actions.find', '');\n onSearch?.();\n }\n };\n\n const [hasMonacoError, setHasMonacoError] = useState(false);\n const renderErrorOutline = !!error || hasMonacoError;\n const {classes, theme} = useStyles({error: renderErrorOutline}, {name: 'CodeEditor'});\n\n useEffect(() => {\n if (monacoLoader === 'local') {\n loadLocalMonaco();\n } else {\n setLoaded(true);\n }\n }, []);\n\n const handleValidate = (markers: monacoEditor.IMarker[]) => {\n setHasMonacoError(\n markers.some((marker) => marker.severity === loader.__getMonacoInstance().MarkerSeverity.Error),\n );\n };\n\n const _label = label ? (\n <Input.Label required={required} {...labelProps}>\n {label}\n </Input.Label>\n ) : null;\n\n const _description = description ? (\n <Input.Description {...descriptionProps}>{description}</Input.Description>\n ) : null;\n\n const _error = error ? (\n <Input.Error mt=\"xs\" {...errorProps}>\n {error}\n </Input.Error>\n ) : (\n <Space h=\"xs\" />\n );\n\n const _header =\n _label || _description ? (\n <Box>\n {_label}\n {_description}\n </Box>\n ) : null;\n\n const _buttons = (\n <Group position=\"right\" spacing={0}>\n <Search handleSearch={handleSearch} />\n <CopyToClipboard value={_value} onCopy={() => onCopy?.()} />\n </Group>\n );\n\n const _editor = loaded ? (\n <Box p=\"md\" pl=\"xs\" className={classes.editor} data-testid=\"editor-wrapper\">\n <Editor\n onValidate={handleValidate}\n defaultLanguage={language}\n theme={theme.colorScheme === 'light' ? 'light' : 'vs-dark'}\n options={{\n minimap: {enabled: false},\n wordWrap: 'on',\n scrollBeyondLastLine: false,\n formatOnPaste: true,\n fontSize: px(theme.fontSizes.xs),\n readOnly: disabled,\n tabSize: 2,\n }}\n value={_value}\n onChange={handleChange}\n onMount={(editor, monaco) => {\n editorRef.current = editor;\n registerLanguages(monaco);\n editor.onDidFocusEditorText(() => onFocus?.());\n editor.onDidBlurEditorText(async () => {\n await editor.getAction('editor.action.formatDocument').run();\n });\n }}\n />\n </Box>\n ) : (\n <Center className={classes.editor}>\n <Loader />\n </Center>\n );\n\n return (\n <Stack\n justify=\"flex-start\"\n className={classes.root}\n spacing={0}\n sx={{height: Math.max(parentHeight, minHeight), maxHeight}}\n ref={ref}\n {...others}\n >\n {_header}\n {_buttons}\n {_editor}\n {_error}\n </Stack>\n );\n};\n"],"names":["Box","Center","createStyles","Group","Input","Loader","px","Space","Stack","useComponentDefaultProps","useUncontrolled","Editor","loader","useEffect","useRef","useState","useParentHeight","XML","CopyToClipboard","Search","useStyles","theme","error","root","editor","border","colors","gray","borderRadius","defaultRadius","backgroundColor","colorScheme","white","black","height","outlineColor","red","outlineStyle","outlineWidth","defaultProps","language","monacoLoader","defaultValue","minHeight","CodeEditor","props","onChange","onCopy","onSearch","onFocus","value","label","required","labelProps","errorProps","description","descriptionProps","maxHeight","disabled","others","loaded","setLoaded","finalValue","_value","handleChange","parentHeight","ref","editorRef","loadLocalMonaco","monacoInstance","config","monaco","registerLanguages","register","handleSearch","current","focus","trigger","hasMonacoError","setHasMonacoError","renderErrorOutline","name","classes","handleValidate","markers","some","marker","severity","__getMonacoInstance","MarkerSeverity","Error","_label","Label","_description","Description","_error","mt","h","_header","_buttons","position","spacing","_editor","p","pl","className","data-testid","onValidate","defaultLanguage","options","minimap","enabled","wordWrap","scrollBeyondLastLine","formatOnPaste","fontSize","fontSizes","xs","readOnly","tabSize","onMount","onDidFocusEditorText","onDidBlurEditorText","getAction","run","justify","sx","Math","max"],"mappings":";;;;;;;AAAA,SACIA,GAAG,EACHC,MAAM,EACNC,YAAY,EAEZC,KAAK,EACLC,KAAK,EAELC,MAAM,EACNC,EAAE,EAEFC,KAAK,EACLC,KAAK,EACLC,wBAAwB,QACrB,gBAAgB;AACvB,SAAQC,eAAe,QAAO,iBAAiB;AAE/C,OAAOC,UAASC,MAAM,QAAe,uBAAuB;AAC5D,SAA2BC,SAAS,EAAEC,MAAM,EAAEC,QAAQ,QAAO,QAAQ;AAErE,SAAQC,eAAe,QAAO,cAAc;AAC5C,SAAQC,GAAG,QAAO,kBAAkB;AACpC,SAAQC,eAAe,QAAO,qBAAqB;AACnD,SAAQC,MAAM,QAAO,WAAW;AAEhC,IAAMC,YAAYlB,aAAa,SAACmB;QAAQC,cAAAA;WAA+B;QACnEC,MAAM,CAAC;QACPC,QAAQ;YACJC,QAAQ,AAAC,aAAiC,OAArBJ,MAAMK,MAAM,CAACC,IAAI,CAAC,EAAE;YACzCC,cAAcP,MAAMQ,aAAa;YACjCC,iBAAiBT,MAAMU,WAAW,KAAK,UAAUV,MAAMW,KAAK,GAAGX,MAAMY,KAAK;YAC1EC,QAAQ;YACRC,cAAcb,QAAQD,MAAMK,MAAM,CAACU,GAAG,CAAC,EAAE,GAAG;YAC5CC,cAAcf,QAAQ,UAAU;YAChCgB,cAAc;QAClB;IACJ;;AAiDA,IAAMC,eAAyC;IAC3CC,UAAU;IACVC,cAAc;IACdC,cAAc;IACdC,WAAW;AACf;AAEA,OAAO,IAAMC,aAAiD,SAACC;IAC3D,IAoBIpC,4BAAAA,yBAAyB,cAAc8B,cAAcM,QAnBrDL,WAmBA/B,0BAnBA+B,UACAE,eAkBAjC,0BAlBAiC,cACAI,WAiBArC,0BAjBAqC,UACAC,SAgBAtC,0BAhBAsC,QACAC,WAeAvC,0BAfAuC,UACAC,UAcAxC,0BAdAwC,SACAC,QAaAzC,0BAbAyC,OACAC,QAYA1C,0BAZA0C,OACAC,WAWA3C,0BAXA2C,UACAC,aAUA5C,0BAVA4C,YACA/B,QASAb,0BATAa,OACAgC,aAQA7C,0BARA6C,YACAC,cAOA9C,0BAPA8C,aACAC,mBAMA/C,0BANA+C,kBACAb,YAKAlC,0BALAkC,WACAc,YAIAhD,0BAJAgD,WACAC,WAGAjD,0BAHAiD,UACAjB,eAEAhC,0BAFAgC,cACGkB,oCACHlD;QAnBA+B;QACAE;QACAI;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACA/B;QACAgC;QACAC;QACAC;QACAb;QACAc;QACAC;QACAjB;;IAGJ,IAA4B1B,6BAAAA,SAAS,YAA9B6C,SAAqB7C,cAAb8C,YAAa9C;IAC5B,IAA+BL,oCAAAA,gBAAwB;QACnDwC,OAAAA;QACAR,cAAAA;QACAI,UAAAA;QACAgB,YAAY;IAChB,QALOC,SAAwBrD,qBAAhBsD,eAAgBtD;IAM/B,IAA4BM,oCAAAA,uBAArBiD,eAAqBjD,qBAAPkD,MAAOlD;IAC5B,IAAMmD,YAAYrD,OAAO;IACzB,IAAMsD;mBAAkB,oBAAA;gBACdC;;;;wBAAiB;;4BAAM,MAAM,CAAC;;;wBAA9BA,iBAAiB;wBACvBzD,OAAO0D,MAAM,CAAC;4BAACC,QAAQF;wBAAc;wBACrCR,UAAU;;;;;;QACd;wBAJMO;;;;IAMN,IAAMI,oBAAoB,SAACD;QACvB,IAAIA,UAAU/B,aAAa,OAAO;YAC9BvB,IAAIwD,QAAQ,CAACF;QACjB;IACJ;IAEA,IAAMG,eAAe;QACjB,IAAIP,UAAUQ,OAAO,EAAE;gBAGnB3B;YAFAmB,UAAUQ,OAAO,CAACC,KAAK;YACvBT,UAAUQ,OAAO,CAACE,OAAO,CAAC,UAAU,gBAAgB;aACpD7B,YAAAA,sBAAAA,gCAAAA;QACJ;IACJ;IAEA,IAA4CjC,8BAAAA,SAAS,YAA9C+D,iBAAqC/D,eAArBgE,oBAAqBhE;IAC5C,IAAMiE,qBAAqB,CAAC,CAAC1D,SAASwD;IACtC,IAAyB1D,aAAAA,UAAU;QAACE,OAAO0D;IAAkB,GAAG;QAACC,MAAM;IAAY,IAA5EC,UAAkB9D,WAAlB8D,SAAS7D,QAASD,WAATC;IAEhBR,UAAU;QACN,IAAI4B,iBAAiB,SAAS;YAC1B2B;QACJ,OAAO;YACHP,UAAU;QACd;IACJ,GAAG,EAAE;IAEL,IAAMsB,iBAAiB,SAACC;QACpBL,kBACIK,QAAQC,IAAI,CAAC,SAACC;mBAAWA,OAAOC,QAAQ,KAAK3E,OAAO4E,mBAAmB,GAAGC,cAAc,CAACC,KAAK;;IAEtG;IAEA,IAAMC,SAASxC,sBACX,KAAC/C,MAAMwF,KAAK;QAACxC,UAAUA;OAAcC;kBAChCF;UAEL;IAEJ,IAAM0C,eAAetC,4BACjB,KAACnD,MAAM0F,WAAW,0CAAKtC;kBAAmBD;UAC1C;IAEJ,IAAMwC,SAASzE,sBACX,KAAClB,MAAMsF,KAAK;QAACM,IAAG;OAAS1C;kBACpBhC;wBAGL,KAACf;QAAM0F,GAAE;;IAGb,IAAMC,UACFP,UAAUE,6BACN,MAAC7F;;YACI2F;YACAE;;SAEL;IAER,IAAMM,yBACF,MAAChG;QAAMiG,UAAS;QAAQC,SAAS;;0BAC7B,KAAClF;gBAAOuD,cAAcA;;0BACtB,KAACxD;gBAAgBgC,OAAOa;gBAAQhB,QAAQ;wBAAMA;4BAAAA,UAAAA,oBAAAA,8BAAAA;;;;;IAItD,IAAMuD,UAAU1C,uBACZ,KAAC5D;QAAIuG,GAAE;QAAKC,IAAG;QAAKC,WAAWvB,QAAQ1D,MAAM;QAAEkF,eAAY;kBACvD,cAAA,KAAC/F;YACGgG,YAAYxB;YACZyB,iBAAiBpE;YACjBnB,OAAOA,MAAMU,WAAW,KAAK,UAAU,UAAU;YACjD8E,SAAS;gBACLC,SAAS;oBAACC,SAAS;gBAAK;gBACxBC,UAAU;gBACVC,sBAAsB;gBACtBC,eAAe;gBACfC,UAAU7G,GAAGe,MAAM+F,SAAS,CAACC,EAAE;gBAC/BC,UAAU5D;gBACV6D,SAAS;YACb;YACArE,OAAOa;YACPjB,UAAUkB;YACVwD,SAAS,SAAChG,QAAQ+C;gBACdJ,UAAUQ,OAAO,GAAGnD;gBACpBgD,kBAAkBD;gBAClB/C,OAAOiG,oBAAoB,CAAC;wBAAMxE;4BAAAA,WAAAA,qBAAAA,+BAAAA;;gBAClCzB,OAAOkG,mBAAmB,eAAC,oBAAA;;;;gCACvB;;oCAAMlG,OAAOmG,SAAS,CAAC,gCAAgCC,GAAG;;;gCAA1D;;;;;;gBACJ;YACJ;;uBAIR,KAAC3H;QAAOwG,WAAWvB,QAAQ1D,MAAM;kBAC7B,cAAA,KAACnB;;IAIT,qBACI,MAACG;QACGqH,SAAQ;QACRpB,WAAWvB,QAAQ3D,IAAI;QACvB8E,SAAS;QACTyB,IAAI;YAAC5F,QAAQ6F,KAAKC,GAAG,CAAC/D,cAActB;YAAYc,WAAAA;QAAS;QACzDS,KAAKA;OACDP;;YAEHuC;YACAC;YACAG;YACAP;;;AAGb,EAAE"}
|
|
1
|
+
{"version":3,"sources":["../../../../src/components/code-editor/CodeEditor.tsx"],"sourcesContent":["import {\n Box,\n Center,\n createStyles,\n DefaultProps,\n Group,\n Input,\n InputWrapperBaseProps,\n Loader,\n px,\n Selectors,\n Space,\n Stack,\n useComponentDefaultProps,\n} from '@mantine/core';\nimport {useUncontrolled} from '@mantine/hooks';\nimport {editor as monacoEditor} from 'monaco-editor';\nimport Editor, {loader, Monaco} from '@monaco-editor/react';\nimport {FunctionComponent, useEffect, useRef, useState} from 'react';\n\nimport {useParentHeight} from '../../hooks';\nimport {XML} from './languages/xml';\nimport {CopyToClipboard} from '../copyToClipboard';\nimport {Search} from './search';\n\nconst useStyles = createStyles((theme, {error}: {error?: boolean}) => ({\n root: {},\n editor: {\n border: `1px solid ${theme.colors.gray[2]}`,\n borderRadius: theme.defaultRadius,\n backgroundColor: theme.colorScheme === 'light' ? theme.white : theme.black,\n height: '100%',\n outlineColor: error ? theme.colors.red[6] : null,\n outlineStyle: error ? 'solid' : 'none',\n outlineWidth: 'thin',\n },\n}));\n\ninterface CodeEditorProps\n extends Omit<InputWrapperBaseProps, 'inputContainer' | 'inputWrapperOrder'>,\n DefaultProps<Selectors<typeof useStyles>> {\n /**\n * The language syntax of the editor\n *\n * @default 'plaintext'\n */\n language?: 'plaintext' | 'json' | 'markdown' | 'python' | 'xml' | (string & unknown);\n /** Default value for uncontrolled input */\n defaultValue?: string;\n /** Value for controlled input */\n value?: string;\n /** onChange value for controlled input */\n onChange?(value: string): void;\n /** Called whenever the search icon is clicked */\n onSearch?(): void;\n /** Called whenever the copy icon is clicked */\n onCopy?(): void;\n /** Called whenever the code editor gets the focus */\n onFocus?(): void;\n /**\n * The minimal height of the CodeEditor (label and description included)\n *\n * By default the CodeEditor is adjusted to fill its parent height.\n * In the case where the parent height is too short, it will use this value as minimum.\n *\n * @default 300\n */\n minHeight?: number;\n /**\n * The maximal height of the CodeEditor (label and description included)\n *\n * By default the CodeEditor is adjusted to fill its parent height.\n * In the case where the parent height would be too high for your liking, you can use this prop to set a maximum.\n */\n maxHeight?: number;\n disabled?: boolean;\n /**\n * Defines how the monaco editor files will be loaded.\n * Note that using `'local'` requires [some additional configuration](https://github.com/suren-atoyan/monaco-react#use-monaco-editor-as-an-npm-package).\n *\n * @default 'local'\n */\n monacoLoader?: 'cdn' | 'local';\n}\n\nconst defaultProps: Partial<CodeEditorProps> = {\n language: 'plaintext',\n monacoLoader: 'local',\n defaultValue: '',\n minHeight: 300,\n};\n\nexport const CodeEditor: FunctionComponent<CodeEditorProps> = (props) => {\n const {\n language,\n defaultValue,\n onChange,\n onCopy,\n onSearch,\n onFocus,\n value,\n label,\n required,\n labelProps,\n error,\n errorProps,\n description,\n descriptionProps,\n minHeight,\n maxHeight,\n disabled,\n monacoLoader,\n ...others\n } = useComponentDefaultProps('CodeEditor', defaultProps, props);\n const [loaded, setLoaded] = useState(false);\n const [_value, handleChange] = useUncontrolled<string>({\n value,\n defaultValue,\n onChange,\n finalValue: '',\n });\n const [parentHeight, ref] = useParentHeight();\n const editorRef = useRef(null);\n const loadLocalMonaco = async () => {\n const monacoInstance = await import('monaco-editor');\n loader.config({monaco: monacoInstance});\n setLoaded(true);\n };\n\n const registerLanguages = (monaco: Monaco) => {\n if (monaco && language === 'xml') {\n XML.register(monaco);\n }\n };\n\n const handleSearch = () => {\n if (editorRef.current) {\n editorRef.current.focus();\n editorRef.current.trigger('editor', 'actions.find', '');\n onSearch?.();\n }\n };\n\n const [hasMonacoError, setHasMonacoError] = useState(false);\n const renderErrorOutline = !!error || hasMonacoError;\n const {classes, theme} = useStyles({error: renderErrorOutline}, {name: 'CodeEditor'});\n\n useEffect(() => {\n if (monacoLoader === 'local') {\n loadLocalMonaco();\n } else {\n setLoaded(true);\n }\n }, []);\n\n const handleValidate = (markers: monacoEditor.IMarker[]) => {\n setHasMonacoError(\n markers.some((marker) => marker.severity === loader.__getMonacoInstance().MarkerSeverity.Error),\n );\n };\n\n const _label = label ? (\n <Input.Label required={required} {...labelProps}>\n {label}\n </Input.Label>\n ) : null;\n\n const _description = description ? (\n <Input.Description {...descriptionProps}>{description}</Input.Description>\n ) : null;\n\n const _error = error ? (\n <Input.Error mt=\"xs\" {...errorProps}>\n {error}\n </Input.Error>\n ) : (\n <Space h=\"xs\" />\n );\n\n const _header =\n _label || _description ? (\n <Box>\n {_label}\n {_description}\n </Box>\n ) : null;\n\n const _buttons = (\n <Group position=\"right\" spacing={0}>\n <Search handleSearch={handleSearch} />\n <CopyToClipboard value={_value} onCopy={() => onCopy?.()} />\n </Group>\n );\n\n const _editor = loaded ? (\n <Box p=\"md\" pl=\"xs\" className={classes.editor} data-testid=\"editor-wrapper\">\n <Editor\n onValidate={handleValidate}\n defaultLanguage={language}\n theme={theme.colorScheme === 'light' ? 'light' : 'vs-dark'}\n options={{\n minimap: {enabled: false},\n wordWrap: 'on',\n scrollBeyondLastLine: false,\n formatOnPaste: true,\n fontSize: px(theme.fontSizes.xs),\n readOnly: disabled,\n tabSize: 2,\n }}\n value={_value}\n onChange={handleChange}\n onMount={(editor, monaco) => {\n editorRef.current = editor;\n registerLanguages(monaco);\n editor.onDidFocusEditorText(() => onFocus?.());\n editor.onDidBlurEditorText(async () => {\n await editor.getAction('editor.action.formatDocument').run();\n });\n }}\n />\n </Box>\n ) : (\n <Center className={classes.editor}>\n <Loader />\n </Center>\n );\n\n return (\n <Stack\n justify=\"flex-start\"\n className={classes.root}\n spacing={0}\n sx={{height: Math.max(parentHeight, minHeight), maxHeight}}\n ref={ref}\n {...others}\n >\n {_header}\n {_buttons}\n {_editor}\n {_error}\n </Stack>\n );\n};\n"],"names":["Box","Center","createStyles","Group","Input","Loader","px","Space","Stack","useComponentDefaultProps","useUncontrolled","Editor","loader","useEffect","useRef","useState","useParentHeight","XML","CopyToClipboard","Search","useStyles","theme","error","root","editor","border","colors","gray","borderRadius","defaultRadius","backgroundColor","colorScheme","white","black","height","outlineColor","red","outlineStyle","outlineWidth","defaultProps","language","monacoLoader","defaultValue","minHeight","CodeEditor","props","onChange","onCopy","onSearch","onFocus","value","label","required","labelProps","errorProps","description","descriptionProps","maxHeight","disabled","others","loaded","setLoaded","_value","handleChange","finalValue","parentHeight","ref","editorRef","loadLocalMonaco","monacoInstance","config","monaco","registerLanguages","register","handleSearch","current","focus","trigger","hasMonacoError","setHasMonacoError","renderErrorOutline","classes","name","handleValidate","markers","some","marker","severity","__getMonacoInstance","MarkerSeverity","Error","_label","Label","_description","Description","_error","mt","h","_header","_buttons","position","spacing","_editor","p","pl","className","data-testid","onValidate","defaultLanguage","options","minimap","enabled","wordWrap","scrollBeyondLastLine","formatOnPaste","fontSize","fontSizes","xs","readOnly","tabSize","onMount","onDidFocusEditorText","onDidBlurEditorText","getAction","run","justify","sx","Math","max"],"mappings":"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"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
3
|
-
var format = function(xml) {
|
|
1
|
+
const format = (xml)=>{
|
|
4
2
|
// https://stackoverflow.com/questions/57039218/doesnt-monaco-editor-support-xml-language-by-default
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
xml = xml.replace(reg,
|
|
9
|
-
return xml.split(
|
|
10
|
-
|
|
3
|
+
const PADDING = ' '.repeat(2);
|
|
4
|
+
const reg = /(>)(<)(\/*)/g;
|
|
5
|
+
let pad = 0;
|
|
6
|
+
xml = xml.replace(reg, '$1\r\n$2$3');
|
|
7
|
+
return xml.split('\r\n').map((node)=>{
|
|
8
|
+
let indent = 0;
|
|
11
9
|
if (node.match(/.+<\/\w[^>]*>$/)) {
|
|
12
10
|
indent = 0;
|
|
13
11
|
} else if (node.match(/^<\/\w/) && pad > 0) {
|
|
@@ -19,32 +17,20 @@ var format = function(xml) {
|
|
|
19
17
|
}
|
|
20
18
|
pad += indent;
|
|
21
19
|
return PADDING.repeat(pad - indent) + node;
|
|
22
|
-
}).join(
|
|
20
|
+
}).join('\r\n');
|
|
23
21
|
};
|
|
24
|
-
|
|
25
|
-
monaco.languages.registerDocumentFormattingEditProvider(
|
|
26
|
-
provideDocumentFormattingEdits:
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
{
|
|
33
|
-
range: model.getFullModelRange(),
|
|
34
|
-
text: format(model.getValue())
|
|
35
|
-
}
|
|
36
|
-
]
|
|
37
|
-
];
|
|
38
|
-
});
|
|
39
|
-
});
|
|
40
|
-
return function(model) {
|
|
41
|
-
return _ref.apply(this, arguments);
|
|
42
|
-
};
|
|
43
|
-
}()
|
|
22
|
+
const register = (monaco)=>{
|
|
23
|
+
monaco.languages.registerDocumentFormattingEditProvider('xml', {
|
|
24
|
+
provideDocumentFormattingEdits: async (model)=>[
|
|
25
|
+
{
|
|
26
|
+
range: model.getFullModelRange(),
|
|
27
|
+
text: format(model.getValue())
|
|
28
|
+
}
|
|
29
|
+
]
|
|
44
30
|
});
|
|
45
31
|
};
|
|
46
|
-
export
|
|
47
|
-
register
|
|
32
|
+
export const XML = {
|
|
33
|
+
register
|
|
48
34
|
};
|
|
49
35
|
|
|
50
36
|
//# sourceMappingURL=xml.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/code-editor/languages/xml.ts"],"sourcesContent":["import {Monaco} from '@monaco-editor/react';\n\nconst format = (xml: string): string => {\n // https://stackoverflow.com/questions/57039218/doesnt-monaco-editor-support-xml-language-by-default\n const PADDING = ' '.repeat(2);\n const reg = /(>)(<)(\\/*)/g;\n let pad = 0;\n\n xml = xml.replace(reg, '$1\\r\\n$2$3');\n\n return xml\n .split('\\r\\n')\n .map((node) => {\n let indent = 0;\n if (node.match(/.+<\\/\\w[^>]*>$/)) {\n indent = 0;\n } else if (node.match(/^<\\/\\w/) && pad > 0) {\n pad -= 1;\n } else if (node.match(/^<\\w[^>]*[^/]>.*$/)) {\n indent = 1;\n } else {\n indent = 0;\n }\n\n pad += indent;\n\n return PADDING.repeat(pad - indent) + node;\n })\n .join('\\r\\n');\n};\n\nconst register = (monaco: Monaco): void => {\n monaco.languages.registerDocumentFormattingEditProvider('xml', {\n provideDocumentFormattingEdits: async (model) => [\n {\n range: model.getFullModelRange(),\n text: format(model.getValue()),\n },\n ],\n });\n};\n\nexport const XML = {register};\n"],"names":["format","xml","PADDING","repeat","reg","pad","replace","split","map","node","indent","match","join","register","monaco","languages","registerDocumentFormattingEditProvider","provideDocumentFormattingEdits","model","range","getFullModelRange","text","getValue","XML"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/code-editor/languages/xml.ts"],"sourcesContent":["import {Monaco} from '@monaco-editor/react';\n\nconst format = (xml: string): string => {\n // https://stackoverflow.com/questions/57039218/doesnt-monaco-editor-support-xml-language-by-default\n const PADDING = ' '.repeat(2);\n const reg = /(>)(<)(\\/*)/g;\n let pad = 0;\n\n xml = xml.replace(reg, '$1\\r\\n$2$3');\n\n return xml\n .split('\\r\\n')\n .map((node) => {\n let indent = 0;\n if (node.match(/.+<\\/\\w[^>]*>$/)) {\n indent = 0;\n } else if (node.match(/^<\\/\\w/) && pad > 0) {\n pad -= 1;\n } else if (node.match(/^<\\w[^>]*[^/]>.*$/)) {\n indent = 1;\n } else {\n indent = 0;\n }\n\n pad += indent;\n\n return PADDING.repeat(pad - indent) + node;\n })\n .join('\\r\\n');\n};\n\nconst register = (monaco: Monaco): void => {\n monaco.languages.registerDocumentFormattingEditProvider('xml', {\n provideDocumentFormattingEdits: async (model) => [\n {\n range: model.getFullModelRange(),\n text: format(model.getValue()),\n },\n ],\n });\n};\n\nexport const XML = {register};\n"],"names":["format","xml","PADDING","repeat","reg","pad","replace","split","map","node","indent","match","join","register","monaco","languages","registerDocumentFormattingEditProvider","provideDocumentFormattingEdits","model","range","getFullModelRange","text","getValue","XML"],"mappings":"AAEA,MAAMA,SAAS,CAACC;IACZ,oGAAoG;IACpG,MAAMC,UAAU,IAAIC,MAAM,CAAC;IAC3B,MAAMC,MAAM;IACZ,IAAIC,MAAM;IAEVJ,MAAMA,IAAIK,OAAO,CAACF,KAAK;IAEvB,OAAOH,IACFM,KAAK,CAAC,QACNC,GAAG,CAAC,CAACC;QACF,IAAIC,SAAS;QACb,IAAID,KAAKE,KAAK,CAAC,mBAAmB;YAC9BD,SAAS;QACb,OAAO,IAAID,KAAKE,KAAK,CAAC,aAAaN,MAAM,GAAG;YACxCA,OAAO;QACX,OAAO,IAAII,KAAKE,KAAK,CAAC,sBAAsB;YACxCD,SAAS;QACb,OAAO;YACHA,SAAS;QACb;QAEAL,OAAOK;QAEP,OAAOR,QAAQC,MAAM,CAACE,MAAMK,UAAUD;IAC1C,GACCG,IAAI,CAAC;AACd;AAEA,MAAMC,WAAW,CAACC;IACdA,OAAOC,SAAS,CAACC,sCAAsC,CAAC,OAAO;QAC3DC,gCAAgC,OAAOC,QAAU;gBAC7C;oBACIC,OAAOD,MAAME,iBAAiB;oBAC9BC,MAAMrB,OAAOkB,MAAMI,QAAQ;gBAC/B;aACH;IACL;AACJ;AAEA,OAAO,MAAMC,MAAM;IAACV;AAAQ,EAAE"}
|
|
@@ -1,21 +1,14 @@
|
|
|
1
|
-
import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
2
|
-
import { _ as _object_destructuring_empty } from "@swc/helpers/_/_object_destructuring_empty";
|
|
3
|
-
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
4
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
-
import { SearchSize16Px } from
|
|
6
|
-
import { ActionIcon } from
|
|
7
|
-
|
|
8
|
-
var handleSearch = param.handleSearch;
|
|
9
|
-
return /*#__PURE__*/ _jsx(ActionIcon, {
|
|
2
|
+
import { SearchSize16Px } from '@coveord/plasma-react-icons';
|
|
3
|
+
import { ActionIcon } from '@mantine/core';
|
|
4
|
+
const SearchButton = ({ handleSearch })=>/*#__PURE__*/ _jsx(ActionIcon, {
|
|
10
5
|
onClick: handleSearch,
|
|
11
6
|
children: /*#__PURE__*/ _jsx(SearchSize16Px, {
|
|
12
7
|
height: 16
|
|
13
8
|
})
|
|
14
9
|
});
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
return _jsx(SearchButton, _object_spread({}, params));
|
|
19
|
-
};
|
|
10
|
+
export const Search = ({ ...params })=>/*#__PURE__*/ _jsx(SearchButton, {
|
|
11
|
+
...params
|
|
12
|
+
});
|
|
20
13
|
|
|
21
14
|
//# sourceMappingURL=Search.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../src/components/code-editor/search/Search.tsx"],"sourcesContent":["import {SearchSize16Px} from '@coveord/plasma-react-icons';\nimport {ActionIcon} from '@mantine/core';\n\nexport interface SearchProps {\n handleSearch: () => void;\n}\n\nconst SearchButton: React.FunctionComponent<SearchProps> = ({handleSearch}) => (\n <ActionIcon onClick={handleSearch}>\n <SearchSize16Px height={16}></SearchSize16Px>\n </ActionIcon>\n);\n\nexport const Search: React.FunctionComponent<SearchProps> = ({...params}) => <SearchButton {...params} />;\n"],"names":["SearchSize16Px","ActionIcon","SearchButton","handleSearch","onClick","height","Search","params"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../../../src/components/code-editor/search/Search.tsx"],"sourcesContent":["import {SearchSize16Px} from '@coveord/plasma-react-icons';\nimport {ActionIcon} from '@mantine/core';\n\nexport interface SearchProps {\n handleSearch: () => void;\n}\n\nconst SearchButton: React.FunctionComponent<SearchProps> = ({handleSearch}) => (\n <ActionIcon onClick={handleSearch}>\n <SearchSize16Px height={16}></SearchSize16Px>\n </ActionIcon>\n);\n\nexport const Search: React.FunctionComponent<SearchProps> = ({...params}) => <SearchButton {...params} />;\n"],"names":["SearchSize16Px","ActionIcon","SearchButton","handleSearch","onClick","height","Search","params"],"mappings":";AAAA,SAAQA,cAAc,QAAO,8BAA8B;AAC3D,SAAQC,UAAU,QAAO,gBAAgB;AAMzC,MAAMC,eAAqD,CAAC,EAACC,YAAY,EAAC,iBACtE,KAACF;QAAWG,SAASD;kBACjB,cAAA,KAACH;YAAeK,QAAQ;;;AAIhC,OAAO,MAAMC,SAA+C,CAAC,EAAC,GAAGC,QAAO,iBAAK,KAACL;QAAc,GAAGK,MAAM;OAAK"}
|