1 | "use strict";
|
2 |
|
3 | function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
4 |
|
5 | Object.defineProperty(exports, "__esModule", {
|
6 | value: true
|
7 | });
|
8 | exports.default = void 0;
|
9 |
|
10 | var _react = _interopRequireWildcard(require("react"));
|
11 |
|
12 | var _hooks = require("./hooks");
|
13 |
|
14 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
15 |
|
16 | var _utils = require("./base/utils");
|
17 |
|
18 | var _asField = require("./base/asField");
|
19 |
|
20 | var _parser = _interopRequireDefault(require("./base/parser"));
|
21 |
|
22 | var _resolve = _interopRequireDefault(require("./base/resolve"));
|
23 |
|
24 | var _validate = require("./base/validate");
|
25 |
|
26 | var _fetcher = _interopRequireDefault(require("./HOC/fetcher"));
|
27 |
|
28 | require("./atom.css");
|
29 |
|
30 | require("./index.css");
|
31 |
|
32 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
33 |
|
34 | function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }
|
35 |
|
36 | function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
37 |
|
38 | 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); }
|
39 |
|
40 | 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; }
|
41 |
|
42 | 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; }
|
43 |
|
44 | function RenderField(_ref) {
|
45 | var fields = _ref.fields,
|
46 | onChange = _ref.onChange,
|
47 | settings = _objectWithoutProperties(_ref, ["fields", "onChange"]);
|
48 |
|
49 | var _parse = (0, _parser.default)(settings, fields),
|
50 | Field = _parse.Field,
|
51 | props = _parse.props;
|
52 |
|
53 | if (!Field) {
|
54 | return null;
|
55 | }
|
56 |
|
57 | return _react.default.createElement(Field, _extends({
|
58 | isRoot: true
|
59 | }, props, {
|
60 | value: settings.data,
|
61 | onChange: onChange,
|
62 | formData: settings.formData
|
63 | }));
|
64 | }
|
65 |
|
66 |
|
67 | var Wrapper = function Wrapper(_ref2) {
|
68 | var schema = _ref2.schema,
|
69 | _ref2$propsSchema = _ref2.propsSchema,
|
70 | propsSchema = _ref2$propsSchema === void 0 ? {} : _ref2$propsSchema,
|
71 | _ref2$uiSchema = _ref2.uiSchema,
|
72 | uiSchema = _ref2$uiSchema === void 0 ? {} : _ref2$uiSchema,
|
73 | readOnly = _ref2.readOnly,
|
74 | showValidate = _ref2.showValidate,
|
75 | rest = _objectWithoutProperties(_ref2, ["schema", "propsSchema", "uiSchema", "readOnly", "showValidate"]);
|
76 |
|
77 | var _schema = {};
|
78 | var jsonSchema = schema || propsSchema;
|
79 |
|
80 |
|
81 | _schema = (0, _utils.combineSchema)(jsonSchema, uiSchema);
|
82 | return _react.default.createElement(FormRender, _extends({
|
83 | readOnly: readOnly,
|
84 | showValidate: !readOnly && showValidate
|
85 |
|
86 | }, rest, {
|
87 | schema: _schema
|
88 | }));
|
89 | };
|
90 |
|
91 | function FormRender(_ref3) {
|
92 | var _ref3$name = _ref3.name,
|
93 | name = _ref3$name === void 0 ? '$form' : _ref3$name,
|
94 | _ref3$column = _ref3.column,
|
95 | column = _ref3$column === void 0 ? 1 : _ref3$column,
|
96 | className = _ref3.className,
|
97 | _ref3$schema = _ref3.schema,
|
98 | schema = _ref3$schema === void 0 ? {} : _ref3$schema,
|
99 | _ref3$formData = _ref3.formData,
|
100 | formData = _ref3$formData === void 0 ? {} : _ref3$formData,
|
101 | _ref3$widgets = _ref3.widgets,
|
102 | widgets = _ref3$widgets === void 0 ? {} : _ref3$widgets,
|
103 | _ref3$FieldUI = _ref3.FieldUI,
|
104 | FieldUI = _ref3$FieldUI === void 0 ? _asField.DefaultFieldUI : _ref3$FieldUI,
|
105 | _ref3$fields = _ref3.fields,
|
106 | fields = _ref3$fields === void 0 ? {} : _ref3$fields,
|
107 | _ref3$mapping = _ref3.mapping,
|
108 | mapping = _ref3$mapping === void 0 ? {} : _ref3$mapping,
|
109 | _ref3$showDescIcon = _ref3.showDescIcon,
|
110 | showDescIcon = _ref3$showDescIcon === void 0 ? false : _ref3$showDescIcon,
|
111 | _ref3$showValidate = _ref3.showValidate,
|
112 | showValidate = _ref3$showValidate === void 0 ? true : _ref3$showValidate,
|
113 | _ref3$displayType = _ref3.displayType,
|
114 | displayType = _ref3$displayType === void 0 ? 'column' : _ref3$displayType,
|
115 | _ref3$onChange = _ref3.onChange,
|
116 | onChange = _ref3$onChange === void 0 ? function () {} : _ref3$onChange,
|
117 | _ref3$onValidate = _ref3.onValidate,
|
118 | onValidate = _ref3$onValidate === void 0 ? function () {} : _ref3$onValidate,
|
119 | onMount = _ref3.onMount,
|
120 | _ref3$readOnly = _ref3.readOnly,
|
121 | readOnly = _ref3$readOnly === void 0 ? false : _ref3$readOnly,
|
122 | _ref3$labelWidth = _ref3.labelWidth,
|
123 | labelWidth = _ref3$labelWidth === void 0 ? 110 : _ref3$labelWidth,
|
124 | _ref3$useLogger = _ref3.useLogger,
|
125 | useLogger = _ref3$useLogger === void 0 ? false : _ref3$useLogger;
|
126 | var isUserInput = (0, _react.useRef)(false);
|
127 |
|
128 | var originWidgets = (0, _react.useRef)();
|
129 | var generatedFields = (0, _react.useRef)({});
|
130 | var previousSchema = (0, _hooks.usePrevious)(schema);
|
131 | var previousData = (0, _hooks.usePrevious)(formData);
|
132 | var data = (0, _react.useMemo)(function () {
|
133 | return (0, _resolve.default)(schema, formData);
|
134 | }, [schema, formData]);
|
135 | (0, _react.useEffect)(function () {
|
136 | if (onMount) {
|
137 | onMount(data);
|
138 | } else {
|
139 | onChange(data);
|
140 | }
|
141 |
|
142 | onValidate((0, _validate.getValidateList)(data, schema));
|
143 | }, []);
|
144 | (0, _react.useEffect)(function () {
|
145 | if (isUserInput.current) {
|
146 | isUserInput.current = false;
|
147 | return;
|
148 | }
|
149 |
|
150 | if (!(0, _utils.isDeepEqual)(previousSchema, schema)) {
|
151 | onChange(data);
|
152 | }
|
153 |
|
154 | if (!(0, _utils.isDeepEqual)(previousData, formData)) {
|
155 | updateValidation();
|
156 | }
|
157 | }, [schema, formData]);
|
158 | var debouncedValidate = (0, _hooks.useDebounce)(onValidate);
|
159 |
|
160 | var handleChange = function handleChange(key, val) {
|
161 | isUserInput.current = true;
|
162 | onChange(val);
|
163 | debouncedValidate((0, _validate.getValidateList)(val, schema));
|
164 | };
|
165 |
|
166 | var updateValidation = function updateValidation() {
|
167 | onValidate((0, _validate.getValidateList)(data, schema));
|
168 | };
|
169 |
|
170 | var generated = {};
|
171 |
|
172 | if (!originWidgets.current) {
|
173 | originWidgets.current = widgets;
|
174 | }
|
175 |
|
176 | Object.keys(widgets).forEach(function (key) {
|
177 | var oWidget = originWidgets.current[key];
|
178 | var nWidget = widgets[key];
|
179 | var gField = generatedFields.current[key];
|
180 |
|
181 | if (!gField || oWidget !== nWidget) {
|
182 | if (oWidget !== nWidget) {
|
183 | originWidgets.current[key] = nWidget;
|
184 | }
|
185 |
|
186 | gField = (0, _asField.asField)({
|
187 | FieldUI: FieldUI,
|
188 | Widget: nWidget
|
189 | });
|
190 | generatedFields.current[key] = gField;
|
191 | }
|
192 |
|
193 | generated[key] = gField;
|
194 | });
|
195 | var settings = {
|
196 | schema: schema,
|
197 | data: data,
|
198 | name: name,
|
199 | column: column,
|
200 | showDescIcon: showDescIcon,
|
201 | showValidate: showValidate,
|
202 | displayType: displayType,
|
203 | readOnly: readOnly,
|
204 | labelWidth: labelWidth,
|
205 | useLogger: useLogger,
|
206 | formData: data
|
207 | };
|
208 | var _fields = {
|
209 |
|
210 | generated: generated,
|
211 |
|
212 | customized: fields,
|
213 |
|
214 | mapping: mapping
|
215 | };
|
216 | return _react.default.createElement("div", {
|
217 | className: "".concat(className, " fr-wrapper")
|
218 | }, _react.default.createElement(RenderField, _extends({}, settings, {
|
219 | fields: _fields,
|
220 | onChange: handleChange
|
221 | })));
|
222 | }
|
223 |
|
224 | FormRender.propTypes = {
|
225 | name: _propTypes.default.string,
|
226 | column: _propTypes.default.number,
|
227 | schema: _propTypes.default.object,
|
228 | formData: _propTypes.default.object,
|
229 | widgets: _propTypes.default.objectOf(_propTypes.default.func),
|
230 | FieldUI: _propTypes.default.elementType,
|
231 | fields: _propTypes.default.objectOf(_propTypes.default.element),
|
232 | mapping: _propTypes.default.object,
|
233 | showDescIcon: _propTypes.default.bool,
|
234 | showValidate: _propTypes.default.bool,
|
235 | displayType: _propTypes.default.string,
|
236 | onChange: _propTypes.default.func,
|
237 | onMount: _propTypes.default.func,
|
238 | onValidate: _propTypes.default.func,
|
239 | readOnly: _propTypes.default.bool,
|
240 | labelWidth: _propTypes.default.number,
|
241 | useLogger: _propTypes.default.bool
|
242 | };
|
243 |
|
244 | var _default = (0, _fetcher.default)(Wrapper);
|
245 |
|
246 | exports.default = _default; |
\ | No newline at end of file |