@maif/react-forms 1.0.13 → 1.0.17
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/README.md +3 -3
- package/dist/react-form.js +1 -1
- package/examples/src/Playground.js +6 -7
- package/lib/form.js +38 -41
- package/lib/inputs/CodeInput.js +17 -13
- package/lib/inputs/MarkdownInput.js +33 -8
- package/lib/inputs/SelectInput.js +2 -2
- package/lib/style.d.ts +5 -1
- package/lib/style.js +3 -0
- package/lib/styleContext.d.ts +1 -1
- package/package.json +3 -3
|
@@ -3,13 +3,11 @@ import { Form } from '@maif/react-forms'
|
|
|
3
3
|
import Select from 'react-select';
|
|
4
4
|
import AceEditor from 'react-ace';
|
|
5
5
|
|
|
6
|
-
import '
|
|
7
|
-
import '
|
|
8
|
-
import '
|
|
9
|
-
import '
|
|
10
|
-
import '
|
|
11
|
-
import 'ace-builds/src-noconflict/ext-searchbox'
|
|
12
|
-
import 'ace-builds/src-noconflict/ext-language_tools'
|
|
6
|
+
import Beautify from 'brace/ext/beautify'
|
|
7
|
+
import 'brace/mode/json'
|
|
8
|
+
import 'brace/theme/monokai'
|
|
9
|
+
import 'brace/ext/searchbox'
|
|
10
|
+
import 'brace/ext/language_tools';
|
|
13
11
|
|
|
14
12
|
import './App.css';
|
|
15
13
|
import 'bootstrap/dist/css/bootstrap.min.css'
|
|
@@ -77,6 +75,7 @@ export const Playground = () => {
|
|
|
77
75
|
defaultValue={{ value: basic, label: "basic" }}
|
|
78
76
|
onChange={e => setSchema(JSON.stringify(examples[e.value], null, 4))} />
|
|
79
77
|
<AceEditor
|
|
78
|
+
commands={Beautify.commands}
|
|
80
79
|
style={{ marginTop: '15px', zIndex: 0, isolation: 'isolate', width: '100%' }}
|
|
81
80
|
mode="json"
|
|
82
81
|
theme="monokai"
|
package/lib/form.js
CHANGED
|
@@ -69,7 +69,7 @@ var usePrevious = function usePrevious(value) {
|
|
|
69
69
|
var ref = (0, _react.useRef)(); // Store current value in ref
|
|
70
70
|
|
|
71
71
|
(0, _react.useEffect)(function () {
|
|
72
|
-
ref.current = value;
|
|
72
|
+
ref.current = JSON.parse(JSON.stringify(value));
|
|
73
73
|
}, [value]); // Only re-run if value changes
|
|
74
74
|
// Return previous value (happens before update in useEffect above)
|
|
75
75
|
|
|
@@ -102,7 +102,7 @@ var BasicWrapper = function BasicWrapper(_ref) {
|
|
|
102
102
|
|
|
103
103
|
return /*#__PURE__*/_react["default"].createElement("div", {
|
|
104
104
|
className: "form-group mt-3"
|
|
105
|
-
}, /*#__PURE__*/_react["default"].createElement("label", {
|
|
105
|
+
}, label && /*#__PURE__*/_react["default"].createElement("label", {
|
|
106
106
|
className: "form-label d-flex align-content-center",
|
|
107
107
|
htmlFor: entry
|
|
108
108
|
}, /*#__PURE__*/_react["default"].createElement("span", {
|
|
@@ -282,7 +282,8 @@ var Form = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, ref) {
|
|
|
282
282
|
resolver: function resolver(data, context, options) {
|
|
283
283
|
return (0, _yup.yupResolver)(_resolver(data))(data, context, options);
|
|
284
284
|
},
|
|
285
|
-
defaultValues: cleanInputArray(value || defaultValues)
|
|
285
|
+
defaultValues: cleanInputArray(value || defaultValues),
|
|
286
|
+
shouldFocusError: !options.autosubmit
|
|
286
287
|
});
|
|
287
288
|
var register = methods.register,
|
|
288
289
|
_handleSubmit = methods.handleSubmit,
|
|
@@ -314,7 +315,9 @@ var Form = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, ref) {
|
|
|
314
315
|
}, [data]);
|
|
315
316
|
|
|
316
317
|
if (options.watch) {
|
|
318
|
+
console.group('react-form watch');
|
|
317
319
|
console.log(watch());
|
|
320
|
+
console.groupEnd();
|
|
318
321
|
}
|
|
319
322
|
|
|
320
323
|
(0, _react.useImperativeHandle)(ref, function () {
|
|
@@ -328,7 +331,7 @@ var Form = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, ref) {
|
|
|
328
331
|
};
|
|
329
332
|
});
|
|
330
333
|
return /*#__PURE__*/_react["default"].createElement(_reactHookForm.FormProvider, methods, /*#__PURE__*/_react["default"].createElement("form", {
|
|
331
|
-
className: className || classes.pr_15,
|
|
334
|
+
className: className || "".concat(classes.pr_15, " ").concat(classes.full_width),
|
|
332
335
|
onSubmit: _handleSubmit(function (data) {
|
|
333
336
|
var clean = cleanOutputArray(data);
|
|
334
337
|
onSubmit(clean);
|
|
@@ -345,10 +348,6 @@ var Form = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, ref) {
|
|
|
345
348
|
case 'object':
|
|
346
349
|
var _value = watch(step.visible.ref);
|
|
347
350
|
|
|
348
|
-
console.log({
|
|
349
|
-
value: _value,
|
|
350
|
-
step: step
|
|
351
|
-
});
|
|
352
351
|
return (0, _Option.option)(step.visible.test).map(function (test) {
|
|
353
352
|
return test(_value);
|
|
354
353
|
}).getOrElse(_value);
|
|
@@ -369,7 +368,7 @@ var Form = /*#__PURE__*/_react["default"].forwardRef(function (_ref2, ref) {
|
|
|
369
368
|
key: "".concat(entry, "-").concat(idx),
|
|
370
369
|
entry: entry,
|
|
371
370
|
error: error,
|
|
372
|
-
label: (step === null || step === void 0 ? void 0 : step.label) || entry,
|
|
371
|
+
label: (step === null || step === void 0 ? void 0 : step.label) === null ? null : (step === null || step === void 0 ? void 0 : step.label) || entry,
|
|
373
372
|
help: step === null || step === void 0 ? void 0 : step.help,
|
|
374
373
|
render: inputWrapper
|
|
375
374
|
}, /*#__PURE__*/_react["default"].createElement(Step, {
|
|
@@ -458,11 +457,33 @@ var Step = function Step(_ref4) {
|
|
|
458
457
|
var err = _typeof(en) === 'object' ? undefined : en.split('.').reduce(function (object, key) {
|
|
459
458
|
return object && object[key];
|
|
460
459
|
}, errors);
|
|
460
|
+
var visibleStep = (0, _Option.option)(stp).map(function (s) {
|
|
461
|
+
return s.visible;
|
|
462
|
+
}).map(function (visible) {
|
|
463
|
+
switch (_typeof(visible)) {
|
|
464
|
+
case 'object':
|
|
465
|
+
var value = watch(visible.ref);
|
|
466
|
+
return (0, _Option.option)(visible.test).map(function (test) {
|
|
467
|
+
return test(value);
|
|
468
|
+
}).getOrElse(value);
|
|
469
|
+
|
|
470
|
+
case 'boolean':
|
|
471
|
+
return visible;
|
|
472
|
+
|
|
473
|
+
default:
|
|
474
|
+
return true;
|
|
475
|
+
}
|
|
476
|
+
}).getOrElse(true);
|
|
477
|
+
|
|
478
|
+
if (!visibleStep) {
|
|
479
|
+
return null;
|
|
480
|
+
}
|
|
481
|
+
|
|
461
482
|
return /*#__PURE__*/_react["default"].createElement(BasicWrapper, {
|
|
462
483
|
key: "collapse-".concat(en, "-").concat(entryIdx),
|
|
463
484
|
entry: en,
|
|
464
485
|
error: err,
|
|
465
|
-
label: (stp === null || stp === void 0 ? void 0 : stp.label) || en,
|
|
486
|
+
label: (stp === null || stp === void 0 ? void 0 : stp.label) === null ? null : (stp === null || stp === void 0 ? void 0 : stp.label) || en,
|
|
466
487
|
help: stp === null || stp === void 0 ? void 0 : stp.help,
|
|
467
488
|
render: inputWrapper
|
|
468
489
|
}, /*#__PURE__*/_react["default"].createElement(Step, {
|
|
@@ -477,37 +498,13 @@ var Step = function Step(_ref4) {
|
|
|
477
498
|
getValues: getValues,
|
|
478
499
|
setValue: _setValue,
|
|
479
500
|
watch: watch,
|
|
480
|
-
inputWrapper: inputWrapper
|
|
501
|
+
inputWrapper: inputWrapper,
|
|
502
|
+
httpClient: httpClient,
|
|
503
|
+
defaultValue: stp.defaultValue
|
|
481
504
|
}));
|
|
482
505
|
}));
|
|
483
506
|
}
|
|
484
507
|
|
|
485
|
-
var visibleStep = (0, _Option.option)(step).map(function (s) {
|
|
486
|
-
return s.visible;
|
|
487
|
-
}).map(function (visible) {
|
|
488
|
-
switch (_typeof(visible)) {
|
|
489
|
-
case 'object':
|
|
490
|
-
var value = watch(step.visible.ref);
|
|
491
|
-
console.log({
|
|
492
|
-
value: value,
|
|
493
|
-
step: step
|
|
494
|
-
});
|
|
495
|
-
return (0, _Option.option)(step.visible.test).map(function (test) {
|
|
496
|
-
return test(value);
|
|
497
|
-
}).getOrElse(value);
|
|
498
|
-
|
|
499
|
-
case 'boolean':
|
|
500
|
-
return visible;
|
|
501
|
-
|
|
502
|
-
default:
|
|
503
|
-
return true;
|
|
504
|
-
}
|
|
505
|
-
}).getOrElse(true);
|
|
506
|
-
|
|
507
|
-
if (!visibleStep) {
|
|
508
|
-
return null;
|
|
509
|
-
}
|
|
510
|
-
|
|
511
508
|
if (step.array) {
|
|
512
509
|
return /*#__PURE__*/_react["default"].createElement(ArrayStep, {
|
|
513
510
|
entry: entry,
|
|
@@ -588,13 +585,13 @@ var Step = function Step(_ref4) {
|
|
|
588
585
|
rawValues: getValues()
|
|
589
586
|
}, field),
|
|
590
587
|
error: error
|
|
591
|
-
}, /*#__PURE__*/_react["default"].createElement(_index.CodeInput, _extends({
|
|
588
|
+
}, /*#__PURE__*/_react["default"].createElement(_index.CodeInput, _extends({
|
|
592
589
|
className: (0, _classnames["default"])(_defineProperty({}, classes.input__invalid, error)),
|
|
593
|
-
readOnly: step.disabled ?
|
|
590
|
+
readOnly: step.disabled ? true : false,
|
|
594
591
|
onChange: field.onChange,
|
|
595
592
|
value: field.value,
|
|
596
593
|
defaultValue: defaultValue
|
|
597
|
-
}, step)));
|
|
594
|
+
}, step.props)));
|
|
598
595
|
}
|
|
599
596
|
});
|
|
600
597
|
|
|
@@ -1093,7 +1090,7 @@ var NestedForm = function NestedForm(_ref16) {
|
|
|
1093
1090
|
key: "".concat(entry, ".").concat(idx),
|
|
1094
1091
|
entry: "".concat(parent, ".").concat(entry),
|
|
1095
1092
|
error: realError,
|
|
1096
|
-
label: step.label || entry,
|
|
1093
|
+
label: (step === null || step === void 0 ? void 0 : step.label) === null ? null : (step === null || step === void 0 ? void 0 : step.label) || entry,
|
|
1097
1094
|
help: step.help,
|
|
1098
1095
|
render: inputWrapper
|
|
1099
1096
|
}, /*#__PURE__*/_react["default"].createElement(Step, {
|
package/lib/inputs/CodeInput.js
CHANGED
|
@@ -9,30 +9,32 @@ var _react = _interopRequireDefault(require("react"));
|
|
|
9
9
|
|
|
10
10
|
var _reactAce = _interopRequireDefault(require("react-ace"));
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _beautify = _interopRequireDefault(require("brace/ext/beautify"));
|
|
13
13
|
|
|
14
|
-
require("
|
|
14
|
+
require("brace/mode/html");
|
|
15
15
|
|
|
16
|
-
require("
|
|
16
|
+
require("brace/mode/javascript");
|
|
17
17
|
|
|
18
|
-
require("
|
|
18
|
+
require("brace/mode/json");
|
|
19
19
|
|
|
20
|
-
require("
|
|
20
|
+
require("brace/mode/css");
|
|
21
21
|
|
|
22
|
-
require("
|
|
22
|
+
require("brace/mode/markdown");
|
|
23
23
|
|
|
24
|
-
require("
|
|
24
|
+
require("brace/theme/monokai");
|
|
25
25
|
|
|
26
|
-
require("
|
|
26
|
+
require("brace/theme/tomorrow");
|
|
27
27
|
|
|
28
|
-
require("
|
|
28
|
+
require("brace/ext/searchbox");
|
|
29
29
|
|
|
30
|
-
require("
|
|
30
|
+
require("brace/ext/language_tools");
|
|
31
31
|
|
|
32
32
|
var _excluded = ["onChange", "value", "className", "readOnly", "theme", "mode"];
|
|
33
33
|
|
|
34
34
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
|
35
35
|
|
|
36
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
37
|
+
|
|
36
38
|
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
|
|
37
39
|
|
|
38
40
|
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
|
|
@@ -49,8 +51,8 @@ var CodeInput = function CodeInput(_ref) {
|
|
|
49
51
|
mode = _ref$mode === void 0 ? 'javascript' : _ref$mode,
|
|
50
52
|
props = _objectWithoutProperties(_ref, _excluded);
|
|
51
53
|
|
|
52
|
-
return /*#__PURE__*/_react["default"].createElement(_reactAce["default"], {
|
|
53
|
-
commands:
|
|
54
|
+
return /*#__PURE__*/_react["default"].createElement(_reactAce["default"], _extends({
|
|
55
|
+
commands: _beautify["default"].commands,
|
|
54
56
|
className: className,
|
|
55
57
|
readOnly: readOnly,
|
|
56
58
|
style: {
|
|
@@ -79,7 +81,9 @@ var CodeInput = function CodeInput(_ref) {
|
|
|
79
81
|
highlightActiveLine: true,
|
|
80
82
|
enableBasicAutocompletion: true,
|
|
81
83
|
enableLiveAutocompletion: true
|
|
82
|
-
}
|
|
84
|
+
}, props, {
|
|
85
|
+
ref: props.setRef
|
|
86
|
+
}));
|
|
83
87
|
};
|
|
84
88
|
|
|
85
89
|
exports.CodeInput = CodeInput;
|
|
@@ -19,19 +19,25 @@ require("@fortawesome/fontawesome-free/css/all.css");
|
|
|
19
19
|
|
|
20
20
|
require("highlight.js/styles/monokai.css");
|
|
21
21
|
|
|
22
|
-
require("
|
|
22
|
+
var _beautify = _interopRequireDefault(require("brace/ext/beautify"));
|
|
23
23
|
|
|
24
|
-
require("
|
|
24
|
+
require("brace/mode/html");
|
|
25
25
|
|
|
26
|
-
require("
|
|
26
|
+
require("brace/mode/javascript");
|
|
27
27
|
|
|
28
|
-
require("
|
|
28
|
+
require("brace/mode/json");
|
|
29
29
|
|
|
30
|
-
require("
|
|
30
|
+
require("brace/mode/css");
|
|
31
31
|
|
|
32
|
-
require("
|
|
32
|
+
require("brace/mode/markdown");
|
|
33
33
|
|
|
34
|
-
require("
|
|
34
|
+
require("brace/theme/monokai");
|
|
35
|
+
|
|
36
|
+
require("brace/theme/tomorrow");
|
|
37
|
+
|
|
38
|
+
require("brace/ext/searchbox");
|
|
39
|
+
|
|
40
|
+
require("brace/ext/language_tools");
|
|
35
41
|
|
|
36
42
|
var _highlight = _interopRequireDefault(require("highlight.js"));
|
|
37
43
|
|
|
@@ -316,6 +322,17 @@ var MarkdownInput = function MarkdownInput(props) {
|
|
|
316
322
|
return /*#__PURE__*/_react["default"].createElement("button", {
|
|
317
323
|
type: "button",
|
|
318
324
|
className: "btn-for-descriptionToolbar",
|
|
325
|
+
style: {
|
|
326
|
+
textAlign: "left",
|
|
327
|
+
cursor: "pointer",
|
|
328
|
+
height: "22px",
|
|
329
|
+
padding: "4px",
|
|
330
|
+
border: "none",
|
|
331
|
+
background: "none",
|
|
332
|
+
color: "#242729",
|
|
333
|
+
marginRight: "5px",
|
|
334
|
+
marginLeft: "5px"
|
|
335
|
+
},
|
|
319
336
|
"aria-label": command.name,
|
|
320
337
|
title: command.name,
|
|
321
338
|
key: "toolbar-btn-".concat(idx),
|
|
@@ -373,18 +390,26 @@ var MarkdownInput = function MarkdownInput(props) {
|
|
|
373
390
|
}, "Preview"))), /*#__PURE__*/_react["default"].createElement("div", {
|
|
374
391
|
className: "d-flex flex-row"
|
|
375
392
|
}, injectButtons())), !preview && /*#__PURE__*/_react["default"].createElement(_reactAce["default"], {
|
|
393
|
+
commands: _beautify["default"].commands,
|
|
376
394
|
ref: function ref(r) {
|
|
377
395
|
if (r && r.editor) {
|
|
378
396
|
setEditor(r.editor);
|
|
379
397
|
}
|
|
380
398
|
},
|
|
381
399
|
mode: "markdown",
|
|
382
|
-
theme:
|
|
400
|
+
theme: props.theme | 'monokai',
|
|
383
401
|
style: {
|
|
384
402
|
zIndex: 0,
|
|
385
403
|
isolation: 'isolate'
|
|
386
404
|
},
|
|
387
405
|
onChange: props.onChange,
|
|
406
|
+
onLoad: function onLoad(editorInstance) {
|
|
407
|
+
editorInstance.container.style.resize = "both"; // mouseup = css resize end
|
|
408
|
+
|
|
409
|
+
document.addEventListener("mouseup", function (e) {
|
|
410
|
+
return editorInstance.resize();
|
|
411
|
+
});
|
|
412
|
+
},
|
|
388
413
|
value: props.value,
|
|
389
414
|
name: "scriptParam",
|
|
390
415
|
editorProps: {
|
|
@@ -74,10 +74,10 @@ var valueToSelectOption = function valueToSelectOption(value) {
|
|
|
74
74
|
return maybeValue.getOrElse({
|
|
75
75
|
label: maybeValue.map(function (v) {
|
|
76
76
|
return v.label;
|
|
77
|
-
}).getOrElse(value),
|
|
77
|
+
}).getOrElse((value === null || value === void 0 ? void 0 : value.label) || value),
|
|
78
78
|
value: maybeValue.map(function (v) {
|
|
79
79
|
return v.value;
|
|
80
|
-
}).getOrElse(value)
|
|
80
|
+
}).getOrElse((value === null || value === void 0 ? void 0 : value.value) || value)
|
|
81
81
|
});
|
|
82
82
|
};
|
|
83
83
|
|
package/lib/style.d.ts
CHANGED
|
@@ -123,6 +123,9 @@ export namespace style {
|
|
|
123
123
|
namespace pr_15 {
|
|
124
124
|
const paddingRight: number;
|
|
125
125
|
}
|
|
126
|
+
namespace full_width {
|
|
127
|
+
const width: string;
|
|
128
|
+
}
|
|
126
129
|
namespace d_none {
|
|
127
130
|
const display: string;
|
|
128
131
|
}
|
|
@@ -185,7 +188,8 @@ export namespace style {
|
|
|
185
188
|
const borderColor: string;
|
|
186
189
|
}
|
|
187
190
|
namespace invalid_feedback {
|
|
188
|
-
|
|
191
|
+
const width_1: string;
|
|
192
|
+
export { width_1 as width };
|
|
189
193
|
const marginTop_4: string;
|
|
190
194
|
export { marginTop_4 as marginTop };
|
|
191
195
|
const fontSize_2: string;
|
package/lib/style.js
CHANGED
package/lib/styleContext.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export function useCustomStyle(overrideStyle?: {}): import("jss").Classes<"code" | "flex" | "input" | "btn" | "btn_sm" | "btn_group" | "btn_red" | "btn_green" | "btn_blue" | "btn_grey" | "txt_red" | "ml_5" | "ml_10" | "mt_5" | "mt_10" | "mt_20" | "mb_5" | "p_15" | "pr_15" | "d_none" | "flexColumn" | "justifyContentBetween" | "jc_end" | "ac_center" | "ai_center" | "cursor_pointer" | "collapse" | "collapse_label" | "collapse_error" | "datepicker" | "input__boolean__on" | "input__boolean__off" | "input__invalid" | "invalid_feedback">;
|
|
1
|
+
export function useCustomStyle(overrideStyle?: {}): import("jss").Classes<"code" | "flex" | "input" | "btn" | "btn_sm" | "btn_group" | "btn_red" | "btn_green" | "btn_blue" | "btn_grey" | "txt_red" | "ml_5" | "ml_10" | "mt_5" | "mt_10" | "mt_20" | "mb_5" | "p_15" | "pr_15" | "full_width" | "d_none" | "flexColumn" | "justifyContentBetween" | "jc_end" | "ac_center" | "ai_center" | "cursor_pointer" | "collapse" | "collapse_label" | "collapse_error" | "datepicker" | "input__boolean__on" | "input__boolean__off" | "input__invalid" | "invalid_feedback">;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@maif/react-forms",
|
|
3
3
|
"description": "Build react safe forms as fast as possible",
|
|
4
|
-
"version": "1.0.
|
|
4
|
+
"version": "1.0.17",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"author": "MAIF team",
|
|
7
7
|
"keywords": [
|
|
@@ -105,13 +105,13 @@
|
|
|
105
105
|
"@types/node": "^16.3.0",
|
|
106
106
|
"@types/react": "^17.0.14",
|
|
107
107
|
"@types/react-dom": "^17.0.9",
|
|
108
|
-
"ace-builds": "1.4.12",
|
|
109
108
|
"antd": "4.15.4",
|
|
110
109
|
"bootstrap": "5.0.0",
|
|
110
|
+
"brace": "^0.11.1",
|
|
111
111
|
"classnames": "2.3.0",
|
|
112
112
|
"highlight.js": "11.2.0",
|
|
113
113
|
"moment": "2.29.1",
|
|
114
|
-
"react-ace": "9.
|
|
114
|
+
"react-ace": "9.5.0",
|
|
115
115
|
"react-feather": "2.0.9",
|
|
116
116
|
"react-hook-form": "7.17.1",
|
|
117
117
|
"react-jss": "10.8.2",
|