graphql-form 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/FormToCode/gql.d.ts +12 -0
- package/lib/FormToCode/gql.js +91 -0
- package/lib/FormToCode/gql.js.map +1 -0
- package/lib/FormToCode/zeus.d.ts +12 -0
- package/lib/FormToCode/zeus.js +101 -0
- package/lib/FormToCode/zeus.js.map +1 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.js +71 -0
- package/lib/index.js.map +1 -0
- package/lib/models.d.ts +69 -0
- package/lib/models.js +3 -0
- package/lib/models.js.map +1 -0
- package/lib/renderer/fields.d.ts +3 -0
- package/lib/renderer/fields.js +65 -0
- package/lib/renderer/fields.js.map +1 -0
- package/lib/renderer/index.d.ts +3 -0
- package/lib/renderer/index.js +67 -0
- package/lib/renderer/index.js.map +1 -0
- package/lib/renderer/widgets/models.d.ts +14 -0
- package/lib/renderer/widgets/models.js +15 -0
- package/lib/renderer/widgets/models.js.map +1 -0
- package/package.json +33 -0
- package/src/FormToCode/gql.tsx +95 -0
- package/src/FormToCode/zeus.tsx +110 -0
- package/src/index.tsx +58 -0
- package/src/models.ts +93 -0
- package/src/renderer/fields.tsx +61 -0
- package/src/renderer/index.tsx +40 -0
- package/src/renderer/widgets/models.ts +22 -0
- package/tsconfig.build.json +36 -0
- package/tsconfig.json +20 -0
@@ -0,0 +1,12 @@
|
|
1
|
+
import { FormObject, FormValue } from "../models";
|
2
|
+
import { ParserField } from 'graphql-js-tree';
|
3
|
+
export declare const fieldsToReductor: (toggledFields: Record<string, FormObject>) => Reductor;
|
4
|
+
export declare const reduceQl: (o: Reductor, nodes: ParserField[], tabs?: string) => string;
|
5
|
+
declare type ReductorValue = {
|
6
|
+
node: Reductor;
|
7
|
+
value?: FormValue;
|
8
|
+
};
|
9
|
+
declare type Reductor = {
|
10
|
+
[key: string]: ReductorValue;
|
11
|
+
};
|
12
|
+
export {};
|
@@ -0,0 +1,91 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.reduceQl = exports.fieldsToReductor = void 0;
|
4
|
+
var graphql_js_tree_1 = require("graphql-js-tree");
|
5
|
+
var fieldsToReductor = function (toggledFields) {
|
6
|
+
return Object.entries(toggledFields).reduce(function (a, _a) {
|
7
|
+
var key = _a[0], value = _a[1];
|
8
|
+
var pathElements = key.split('.');
|
9
|
+
var start = a;
|
10
|
+
pathElements.forEach(function (el, index) {
|
11
|
+
var _a;
|
12
|
+
if (index === 0 && !!((_a = value.node.type.operations) === null || _a === void 0 ? void 0 : _a.length)) {
|
13
|
+
el = value.node.type.operations[0];
|
14
|
+
}
|
15
|
+
start[el] = start[el] || {};
|
16
|
+
start[el].node = start[el].node || {};
|
17
|
+
if (index === pathElements.length - 1) {
|
18
|
+
if (value.value && Object.keys(value.value).length > 0) {
|
19
|
+
start[el].value = value.value;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
start = start[el].node;
|
23
|
+
});
|
24
|
+
return a;
|
25
|
+
}, {});
|
26
|
+
};
|
27
|
+
exports.fieldsToReductor = fieldsToReductor;
|
28
|
+
var reduceQl = function (o, nodes, tabs) {
|
29
|
+
if (tabs === void 0) { tabs = ''; }
|
30
|
+
return Object.entries(o)
|
31
|
+
.map(function (_a) {
|
32
|
+
var k = _a[0], v = _a[1];
|
33
|
+
var kName = v.value && Object.keys(v.value).length > 0
|
34
|
+
? "".concat(k, "(").concat(resolveQlValue(v.value, nodes, tabs), "\n").concat(tabs, ")")
|
35
|
+
: k;
|
36
|
+
var kObject = Object.keys(v.node).length > 0
|
37
|
+
? "".concat(tabs).concat(kName, "{\n").concat((0, exports.reduceQl)(v.node, nodes, tabs + '\t')).concat(tabs, "}\n")
|
38
|
+
: "".concat(tabs).concat(kName, "\n");
|
39
|
+
return kObject;
|
40
|
+
})
|
41
|
+
.join('');
|
42
|
+
};
|
43
|
+
exports.reduceQl = reduceQl;
|
44
|
+
var resolveSingularValue = function (v, nodes, tabs) {
|
45
|
+
if (tabs === void 0) { tabs = ''; }
|
46
|
+
if (v.value === null) {
|
47
|
+
return 'null';
|
48
|
+
}
|
49
|
+
if (Array.isArray(v.value)) {
|
50
|
+
return "[".concat(v.value
|
51
|
+
.map(function (subVal) { return resolveSingularValue({ node: v.node, value: subVal.value }, nodes, tabs); })
|
52
|
+
.join(', '), "]");
|
53
|
+
}
|
54
|
+
var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(v.node.type.fieldType); });
|
55
|
+
if ((seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.EnumTypeDefinition) {
|
56
|
+
return v.value;
|
57
|
+
}
|
58
|
+
if ((seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.ScalarTypeDefinition) {
|
59
|
+
return v.value;
|
60
|
+
}
|
61
|
+
if (seekNode) {
|
62
|
+
return "{".concat(resolveQlValue(v.value, nodes, tabs + '\t'), "\n").concat(tabs, "\t}");
|
63
|
+
}
|
64
|
+
return (0, graphql_js_tree_1.getTypeName)(v.node.type.fieldType) === graphql_js_tree_1.ScalarTypes.String ? "\"".concat(v.value, "\"") : "".concat(v.value);
|
65
|
+
};
|
66
|
+
var resolveQlValue = function (v, nodes, tabs) {
|
67
|
+
if (tabs === void 0) { tabs = ''; }
|
68
|
+
if (typeof v === 'undefined' || v === null) {
|
69
|
+
return '';
|
70
|
+
}
|
71
|
+
return Object.entries(v).reduce(function (a, _a) {
|
72
|
+
var key = _a[0], v = _a[1];
|
73
|
+
if (typeof v.value === 'undefined' || v.value === '') {
|
74
|
+
return a;
|
75
|
+
}
|
76
|
+
if (Array.isArray(v.value) && v.value.length === 0) {
|
77
|
+
return a;
|
78
|
+
}
|
79
|
+
if (typeof v.value === 'object' &&
|
80
|
+
v.value !== null &&
|
81
|
+
!Object.values(v.value).some(function (val) {
|
82
|
+
return typeof val === 'object' && val !== null && 'value' in val && (!!val.value || val.value === false);
|
83
|
+
})) {
|
84
|
+
return a;
|
85
|
+
}
|
86
|
+
var resolvedValue = resolveSingularValue(v, nodes, tabs);
|
87
|
+
a = "".concat(a, "\n\t").concat(tabs).concat(key, ": ").concat(resolvedValue);
|
88
|
+
return a;
|
89
|
+
}, '');
|
90
|
+
};
|
91
|
+
//# sourceMappingURL=gql.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"gql.js","sourceRoot":"","sources":["../../src/FormToCode/gql.tsx"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
import { FormObject, FormValue } from "../models";
|
2
|
+
import { ParserField } from 'graphql-js-tree';
|
3
|
+
export declare const zeusFieldsToReductor: (toggledFields: Record<string, FormObject>) => Reductor;
|
4
|
+
export declare const zeusReduceQl: (o: Reductor, nodes: ParserField[], tabs?: string, level?: number) => string;
|
5
|
+
declare type ReductorValue = {
|
6
|
+
node: Reductor;
|
7
|
+
value?: FormValue;
|
8
|
+
};
|
9
|
+
declare type Reductor = {
|
10
|
+
[key: string]: ReductorValue;
|
11
|
+
};
|
12
|
+
export {};
|
@@ -0,0 +1,101 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.zeusReduceQl = exports.zeusFieldsToReductor = void 0;
|
4
|
+
var graphql_js_tree_1 = require("graphql-js-tree");
|
5
|
+
var zeusFieldsToReductor = function (toggledFields) {
|
6
|
+
var r = Object.entries(toggledFields).reduce(function (a, _a) {
|
7
|
+
var key = _a[0], value = _a[1];
|
8
|
+
var pathElements = key.split('.');
|
9
|
+
var start = a;
|
10
|
+
pathElements.forEach(function (el, index) {
|
11
|
+
var _a;
|
12
|
+
if (index === 0 && !!((_a = value.node.type.operations) === null || _a === void 0 ? void 0 : _a.length)) {
|
13
|
+
el = value.node.type.operations[0];
|
14
|
+
return;
|
15
|
+
}
|
16
|
+
start[el] = start[el] || {};
|
17
|
+
start[el].node = start[el].node || {};
|
18
|
+
if (index === pathElements.length - 1) {
|
19
|
+
if (value.value && Object.keys(value.value).length > 0) {
|
20
|
+
start[el].value = value.value;
|
21
|
+
}
|
22
|
+
}
|
23
|
+
start = start[el].node;
|
24
|
+
});
|
25
|
+
return a;
|
26
|
+
}, {});
|
27
|
+
return r;
|
28
|
+
};
|
29
|
+
exports.zeusFieldsToReductor = zeusFieldsToReductor;
|
30
|
+
var zeusReduceQl = function (o, nodes, tabs, level) {
|
31
|
+
if (tabs === void 0) { tabs = ''; }
|
32
|
+
if (level === void 0) { level = 0; }
|
33
|
+
var lUP = level + 1;
|
34
|
+
return Object.entries(o)
|
35
|
+
.map(function (_a) {
|
36
|
+
var _b, _c;
|
37
|
+
var k = _a[0], v = _a[1];
|
38
|
+
if (v.value && Object.keys(v.value).length > 0) {
|
39
|
+
return Object.keys(v.node).length > 0
|
40
|
+
? "".concat(tabs).concat(k, ":[{").concat(resolveQlValue(v.value, nodes, tabs), "\n").concat(tabs, "}, {\n").concat((0, exports.zeusReduceQl)(v.node, nodes, tabs + '\t', lUP)).concat(tabs, "}]\n")
|
41
|
+
: "".concat(tabs).concat(k, ":[{").concat(resolveQlValue(v.value, nodes, tabs), "\n").concat(tabs, "}, true]");
|
42
|
+
}
|
43
|
+
if (level === 0) {
|
44
|
+
return "const result = await api(\"".concat((_c = (_b = nodes.find(function (n) { return n.name === k; })) === null || _b === void 0 ? void 0 : _b.type.operations) === null || _c === void 0 ? void 0 : _c[0], "\")({\n").concat((0, exports.zeusReduceQl)(v.node, nodes, tabs + '\t', lUP), "})");
|
45
|
+
}
|
46
|
+
var kObject = Object.keys(v.node).length > 0
|
47
|
+
? "".concat(tabs).concat(k, ":{\n").concat((0, exports.zeusReduceQl)(v.node, nodes, tabs + '\t', lUP)).concat(tabs, "}\n")
|
48
|
+
: "".concat(tabs).concat(k, ": true\n");
|
49
|
+
return kObject;
|
50
|
+
})
|
51
|
+
.join('');
|
52
|
+
};
|
53
|
+
exports.zeusReduceQl = zeusReduceQl;
|
54
|
+
var resolveSingularValue = function (v, nodes, tabs) {
|
55
|
+
if (tabs === void 0) { tabs = ''; }
|
56
|
+
if (v.value === null) {
|
57
|
+
return 'null';
|
58
|
+
}
|
59
|
+
if (Array.isArray(v.value)) {
|
60
|
+
return "[".concat(v.value
|
61
|
+
.map(function (subVal) { return resolveSingularValue({ node: v.node, value: subVal.value }, nodes, tabs); })
|
62
|
+
.join(', '), "]");
|
63
|
+
}
|
64
|
+
var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(v.node.type.fieldType); });
|
65
|
+
if ((seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.EnumTypeDefinition) {
|
66
|
+
return v.value;
|
67
|
+
}
|
68
|
+
if ((seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.ScalarTypeDefinition) {
|
69
|
+
return v.value;
|
70
|
+
}
|
71
|
+
if (seekNode) {
|
72
|
+
return "{".concat(resolveQlValue(v.value, nodes, tabs + '\t'), "\n").concat(tabs, "\t}");
|
73
|
+
}
|
74
|
+
return (0, graphql_js_tree_1.getTypeName)(v.node.type.fieldType) === graphql_js_tree_1.ScalarTypes.String ? "\"".concat(v.value, "\"") : "".concat(v.value);
|
75
|
+
};
|
76
|
+
var resolveQlValue = function (v, nodes, tabs) {
|
77
|
+
if (tabs === void 0) { tabs = ''; }
|
78
|
+
if (typeof v === 'undefined' || v === null) {
|
79
|
+
return '';
|
80
|
+
}
|
81
|
+
return Object.entries(v).reduce(function (a, _a) {
|
82
|
+
var key = _a[0], v = _a[1];
|
83
|
+
if (typeof v.value === 'undefined' || v.value === '') {
|
84
|
+
return a;
|
85
|
+
}
|
86
|
+
if (Array.isArray(v.value) && v.value.length === 0) {
|
87
|
+
return a;
|
88
|
+
}
|
89
|
+
if (typeof v.value === 'object' &&
|
90
|
+
v.value !== null &&
|
91
|
+
!Object.values(v.value).some(function (val) {
|
92
|
+
return typeof val === 'object' && val !== null && 'value' in val && (!!val.value || val.value === false);
|
93
|
+
})) {
|
94
|
+
return a;
|
95
|
+
}
|
96
|
+
var resolvedValue = resolveSingularValue(v, nodes, tabs);
|
97
|
+
a = "".concat(a, "\n\t").concat(tabs).concat(key, ": ").concat(resolvedValue);
|
98
|
+
return a;
|
99
|
+
}, '');
|
100
|
+
};
|
101
|
+
//# sourceMappingURL=zeus.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"zeus.js","sourceRoot":"","sources":["../../src/FormToCode/zeus.tsx"],"names":[],"mappings":"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"}
|
package/lib/index.d.ts
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
import { FormDisplayerProps, MainRendererProps } from "./models";
|
2
|
+
import { Renderer } from "./renderer";
|
3
|
+
import React from 'react';
|
4
|
+
export * from "./models";
|
5
|
+
export { Renderer };
|
6
|
+
export declare const FormRenderer: React.FC<MainRendererProps>;
|
7
|
+
export declare const FormDisplayer: React.FC<FormDisplayerProps>;
|
package/lib/index.js
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
14
|
+
if (k2 === undefined) k2 = k;
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
18
|
+
}
|
19
|
+
Object.defineProperty(o, k2, desc);
|
20
|
+
}) : (function(o, m, k, k2) {
|
21
|
+
if (k2 === undefined) k2 = k;
|
22
|
+
o[k2] = m[k];
|
23
|
+
}));
|
24
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
25
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
26
|
+
};
|
27
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
28
|
+
var t = {};
|
29
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
30
|
+
t[p] = s[p];
|
31
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
32
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
33
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
34
|
+
t[p[i]] = s[p[i]];
|
35
|
+
}
|
36
|
+
return t;
|
37
|
+
};
|
38
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
39
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
40
|
+
};
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
42
|
+
exports.FormDisplayer = exports.FormRenderer = exports.Renderer = void 0;
|
43
|
+
var renderer_1 = require("./renderer");
|
44
|
+
Object.defineProperty(exports, "Renderer", { enumerable: true, get: function () { return renderer_1.Renderer; } });
|
45
|
+
var react_1 = __importDefault(require("react"));
|
46
|
+
__exportStar(require("./models"), exports);
|
47
|
+
var FormRenderer = function (_a) {
|
48
|
+
var formFields = _a.formFields, onChange = _a.onChange, widgetsOnChange = _a.widgetsOnChange, props = __rest(_a, ["formFields", "onChange", "widgetsOnChange"]);
|
49
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, Object.keys(formFields).map(function (key) {
|
50
|
+
return (react_1.default.createElement(renderer_1.Renderer, __assign({}, props, { changeWidget: function (props, path) {
|
51
|
+
widgetsOnChange(path, props);
|
52
|
+
}, currentPath: '', formObject: formFields[key], onChange: function (changedForm) {
|
53
|
+
var _a;
|
54
|
+
onChange(__assign(__assign({}, formFields), (_a = {}, _a[key] = changedForm, _a)));
|
55
|
+
}, f: formFields[key].node })));
|
56
|
+
})));
|
57
|
+
};
|
58
|
+
exports.FormRenderer = FormRenderer;
|
59
|
+
var FormDisplayer = function (_a) {
|
60
|
+
var formFields = _a.formFields, onChange = _a.onChange, props = __rest(_a, ["formFields", "onChange"]);
|
61
|
+
return (react_1.default.createElement(react_1.default.Fragment, null, Object.keys(formFields).map(function (key) {
|
62
|
+
return (react_1.default.createElement(renderer_1.Renderer, __assign({}, props, { changeWidget: function () {
|
63
|
+
return;
|
64
|
+
}, currentPath: '', formObject: formFields[key], onChange: function (changedForm) {
|
65
|
+
var _a;
|
66
|
+
onChange(__assign(__assign({}, formFields), (_a = {}, _a[key] = changedForm, _a)));
|
67
|
+
}, f: formFields[key].node })));
|
68
|
+
})));
|
69
|
+
};
|
70
|
+
exports.FormDisplayer = FormDisplayer;
|
71
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,uCAAsC;AAI7B,yFAJA,mBAAQ,OAIA;AAHjB,gDAA0B;AAE1B,2CAAyB;AAGlB,IAAM,YAAY,GAAgC,UAAC,EAAmD;IAAjD,IAAA,UAAU,gBAAA,EAAE,QAAQ,cAAA,EAAE,eAAe,qBAAA,EAAK,KAAK,cAAjD,6CAAmD,CAAF;IACvG,OAAO,CACH,8DACK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG;QAC7B,OAAO,CACH,8BAAC,mBAAQ,eACD,KAAK,IACT,YAAY,EAAE,UAAC,KAAK,EAAE,IAAI;gBACtB,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC,EACD,WAAW,EAAE,EAAE,EACf,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAC3B,QAAQ,EAAE,UAAC,WAAuB;;gBAC9B,QAAQ,uBACD,UAAU,gBACZ,GAAG,IAAG,WAAW,OACpB,CAAC;YACP,CAAC,EACD,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IACzB,CACL,CAAC;IACN,CAAC,CAAC,CACH,CACN,CAAC;AACN,CAAC,CAAC;AAxBW,QAAA,YAAY,gBAwBvB;AAEK,IAAM,aAAa,GAAiC,UAAC,EAAkC;IAAhC,IAAA,UAAU,gBAAA,EAAE,QAAQ,cAAA,EAAK,KAAK,cAAhC,0BAAkC,CAAF;IACxF,OAAO,CACH,8DACK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG;QAC7B,OAAO,CACH,8BAAC,mBAAQ,eACD,KAAK,IACT,YAAY,EAAE;gBACV,OAAO;YACX,CAAC,EACD,WAAW,EAAE,EAAE,EACf,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAC3B,QAAQ,EAAE,UAAC,WAAuB;;gBAC9B,QAAQ,uBACD,UAAU,gBACZ,GAAG,IAAG,WAAW,OACpB,CAAC;YACP,CAAC,EACD,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IACzB,CACL,CAAC;IACN,CAAC,CAAC,CACH,CACN,CAAC;AACN,CAAC,CAAC;AAxBW,QAAA,aAAa,iBAwBxB"}
|
package/lib/models.d.ts
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
import { ParserField } from 'graphql-js-tree';
|
2
|
+
import React from 'react';
|
3
|
+
export declare type FieldComponent = React.FC<PassedFormProps>;
|
4
|
+
export declare type FormLabelProps = React.FC<PassedFormProps & {
|
5
|
+
open?: boolean;
|
6
|
+
setOpen: (b: boolean) => void;
|
7
|
+
}>;
|
8
|
+
export declare type SavedWidgets = {
|
9
|
+
[selector: string]: {
|
10
|
+
widget: string;
|
11
|
+
[x: string]: any;
|
12
|
+
};
|
13
|
+
};
|
14
|
+
export declare type PassedFormProps<WidgetData = any> = {
|
15
|
+
f: ParserField;
|
16
|
+
nodes: ParserField[];
|
17
|
+
formObject: FormObject;
|
18
|
+
onChange: (formObject: FormObject) => void;
|
19
|
+
changeWidget: (widgetData: Record<string, any> | undefined, path: string) => void;
|
20
|
+
required?: boolean;
|
21
|
+
runQuery: (q: string) => Promise<any>;
|
22
|
+
widgetComponents: WidgetType[];
|
23
|
+
currentPath: string;
|
24
|
+
widgets?: SavedWidgets;
|
25
|
+
widgetData?: WidgetData;
|
26
|
+
components: {
|
27
|
+
ArrayField: FieldComponent;
|
28
|
+
ObjectField: FieldComponent;
|
29
|
+
BooleanField: FieldComponent;
|
30
|
+
UniversalField: FieldComponent;
|
31
|
+
NumberField: FieldComponent;
|
32
|
+
EnumField: FieldComponent;
|
33
|
+
NullField: FieldComponent;
|
34
|
+
FormLabel: FormLabelProps;
|
35
|
+
FormField: FieldComponent;
|
36
|
+
};
|
37
|
+
};
|
38
|
+
export declare type MainRendererProps = Omit<PassedFormProps, 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget'> & {
|
39
|
+
formFields: Record<string, FormObject>;
|
40
|
+
widgetsOnChange: (key: string, value?: Omit<FormObject, 'node' | 'value'>) => void;
|
41
|
+
onChange: (o: Record<string, FormObject>) => void;
|
42
|
+
};
|
43
|
+
export declare type FormDisplayerProps = Omit<PassedFormProps, 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget'> & {
|
44
|
+
formFields: Record<string, FormObject>;
|
45
|
+
onChange: (o: Record<string, FormObject>) => void;
|
46
|
+
};
|
47
|
+
export declare type FormLibraryProps = Omit<FormDisplayerProps, 'required' | 'components'>;
|
48
|
+
export declare type CastToWidgetSettingsPassedForm<WidgetData> = PassedFormProps<Partial<WidgetData>> & {
|
49
|
+
close: () => void;
|
50
|
+
};
|
51
|
+
export declare type WidgetType = {
|
52
|
+
Component: React.FC<PassedFormProps>;
|
53
|
+
Settings: React.FC<CastToWidgetSettingsPassedForm<any>> | undefined;
|
54
|
+
requirements: (props: PassedFormProps) => boolean;
|
55
|
+
props?: Record<string, any>;
|
56
|
+
name: string;
|
57
|
+
};
|
58
|
+
export declare type FormValue = {
|
59
|
+
[x: string]: FormValue;
|
60
|
+
} | string | boolean | number | null | undefined | FormObject | Array<FormValue>;
|
61
|
+
export declare type FormObject = {
|
62
|
+
value?: FormValue;
|
63
|
+
node: ParserField;
|
64
|
+
};
|
65
|
+
export declare type FormDataType = Record<string, FormObject | Record<string, FormObject | undefined>>;
|
66
|
+
export declare type FormFile = {
|
67
|
+
forms: Record<string, FormObject>;
|
68
|
+
widgets: Record<string, Omit<FormObject, 'node' | 'value'>>;
|
69
|
+
};
|
package/lib/models.js
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":""}
|
@@ -0,0 +1,65 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
14
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
15
|
+
};
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
17
|
+
exports.Fields = void 0;
|
18
|
+
var graphql_js_tree_1 = require("graphql-js-tree");
|
19
|
+
var react_1 = __importDefault(require("react"));
|
20
|
+
var Fields = function (props) {
|
21
|
+
var _a;
|
22
|
+
var nodes = props.nodes, widgetComponents = props.widgetComponents, f = props.f, widgets = props.widgets, _b = props.components, ArrayField = _b.ArrayField, ObjectField = _b.ObjectField;
|
23
|
+
var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(f.type.fieldType); });
|
24
|
+
var isInput = (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.InputObjectTypeDefinition;
|
25
|
+
if (f.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition) {
|
26
|
+
return react_1.default.createElement(ObjectField, __assign({}, props));
|
27
|
+
}
|
28
|
+
if (f.type.fieldType.type === graphql_js_tree_1.Options.array) {
|
29
|
+
return react_1.default.createElement(ArrayField, __assign({}, props));
|
30
|
+
}
|
31
|
+
if (isInput) {
|
32
|
+
return react_1.default.createElement(ObjectField, __assign({}, props, { f: seekNode }));
|
33
|
+
}
|
34
|
+
var widget = widgets === null || widgets === void 0 ? void 0 : widgets[props.currentPath];
|
35
|
+
if (widget) {
|
36
|
+
var WidgetComponent = (_a = widgetComponents.find(function (wc) { return wc.name === widget.widget; })) === null || _a === void 0 ? void 0 : _a.Component;
|
37
|
+
if (!WidgetComponent) {
|
38
|
+
return react_1.default.createElement(react_1.default.Fragment, null);
|
39
|
+
}
|
40
|
+
return react_1.default.createElement(WidgetComponent, __assign({}, props, { widgetData: widget }));
|
41
|
+
}
|
42
|
+
return react_1.default.createElement(ScalarField, __assign({}, props));
|
43
|
+
};
|
44
|
+
exports.Fields = Fields;
|
45
|
+
var ScalarField = function (props) {
|
46
|
+
var f = props.f, nodes = props.nodes, children = props.children, _a = props.components, BooleanField = _a.BooleanField, NumberField = _a.NumberField, EnumField = _a.EnumField, UniversalField = _a.UniversalField;
|
47
|
+
var typeName = (0, graphql_js_tree_1.getTypeName)(f.type.fieldType);
|
48
|
+
var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(f.type.fieldType); });
|
49
|
+
if (typeName === graphql_js_tree_1.ScalarTypes.String ||
|
50
|
+
typeName === graphql_js_tree_1.ScalarTypes.ID ||
|
51
|
+
(seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.ScalarTypeDefinition) {
|
52
|
+
return react_1.default.createElement(UniversalField, __assign({}, props));
|
53
|
+
}
|
54
|
+
if (typeName === graphql_js_tree_1.ScalarTypes.Float || typeName === graphql_js_tree_1.ScalarTypes.Int) {
|
55
|
+
return react_1.default.createElement(NumberField, __assign({}, props));
|
56
|
+
}
|
57
|
+
if (typeName === graphql_js_tree_1.ScalarTypes.Boolean) {
|
58
|
+
return react_1.default.createElement(BooleanField, __assign({}, props));
|
59
|
+
}
|
60
|
+
if ((seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.EnumTypeDefinition) {
|
61
|
+
return react_1.default.createElement(EnumField, __assign({}, props));
|
62
|
+
}
|
63
|
+
return react_1.default.createElement(react_1.default.Fragment, null, children);
|
64
|
+
};
|
65
|
+
//# sourceMappingURL=fields.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"fields.js","sourceRoot":"","sources":["../../src/renderer/fields.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AACA,mDAA0G;AAC1G,gDAA0B;AAEnB,IAAM,MAAM,GAA8B,UAAC,KAAK;;IAE/C,IAAA,KAAK,GAKL,KAAK,MALA,EACL,gBAAgB,GAIhB,KAAK,iBAJW,EAChB,CAAC,GAGD,KAAK,EAHJ,EACD,OAAO,GAEP,KAAK,QAFE,EACP,KACA,KAAK,WADkC,EAAzB,UAAU,gBAAA,EAAE,WAAW,iBAAE,CACjC;IACV,IAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,IAAA,6BAAW,EAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAxC,CAAwC,CAAC,CAAC;IAC7E,IAAM,OAAO,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC,IAAI,MAAK,gCAAc,CAAC,yBAAyB,CAAC;IACjF,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,EAAE;QACtD,OAAO,8BAAC,WAAW,eAAK,KAAK,EAAI,CAAC;KACrC;IACD,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,yBAAO,CAAC,KAAK,EAAE;QACzC,OAAO,8BAAC,UAAU,eAAK,KAAK,EAAI,CAAC;KACpC;IACD,IAAI,OAAO,EAAE;QACT,OAAO,8BAAC,WAAW,eAAK,KAAK,IAAE,CAAC,EAAE,QAAQ,IAAI,CAAC;KAClD;IACD,IAAM,MAAM,GAAG,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAG,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,MAAM,EAAE;QACR,IAAM,eAAe,GAAG,MAAA,gBAAgB,CAAC,IAAI,CAAC,UAAC,EAAE,IAAK,OAAA,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,MAAM,EAAzB,CAAyB,CAAC,0CAAE,SAAS,CAAC;QAC5F,IAAI,CAAC,eAAe,EAAE;YAClB,OAAO,6DAAK,CAAC;SAChB;QACD,OAAO,8BAAC,eAAe,eAAK,KAAK,IAAE,UAAU,EAAE,MAAM,IAAI,CAAC;KAC7D;IACD,OAAO,8BAAC,WAAW,eAAK,KAAK,EAAI,CAAC;AACtC,CAAC,CAAC;AA5BW,QAAA,MAAM,UA4BjB;AACF,IAAM,WAAW,GAA8B,UAAC,KAAK;IAE7C,IAAA,CAAC,GAID,KAAK,EAJJ,EACD,KAAK,GAGL,KAAK,MAHA,EACL,QAAQ,GAER,KAAK,SAFG,EACR,KACA,KAAK,WAD+D,EAAtD,YAAY,kBAAA,EAAE,WAAW,iBAAA,EAAE,SAAS,eAAA,EAAE,cAAc,oBAAE,CAC9D;IACV,IAAM,QAAQ,GAAG,IAAA,6BAAW,EAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/C,IAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,IAAA,6BAAW,EAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAxC,CAAwC,CAAC,CAAC;IAC7E,IACI,QAAQ,KAAK,6BAAW,CAAC,MAAM;QAC/B,QAAQ,KAAK,6BAAW,CAAC,EAAE;QAC3B,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC,IAAI,MAAK,gCAAc,CAAC,oBAAoB,EAC7D;QACE,OAAO,8BAAC,cAAc,eAAK,KAAK,EAAI,CAAC;KACxC;IAED,IAAI,QAAQ,KAAK,6BAAW,CAAC,KAAK,IAAI,QAAQ,KAAK,6BAAW,CAAC,GAAG,EAAE;QAChE,OAAO,8BAAC,WAAW,eAAK,KAAK,EAAI,CAAC;KACrC;IACD,IAAI,QAAQ,KAAK,6BAAW,CAAC,OAAO,EAAE;QAClC,OAAO,8BAAC,YAAY,eAAK,KAAK,EAAI,CAAC;KACtC;IACD,IAAI,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC,IAAI,MAAK,gCAAc,CAAC,kBAAkB,EAAE;QAC3D,OAAO,8BAAC,SAAS,eAAK,KAAK,EAAI,CAAC;KACnC;IACD,OAAO,8DAAG,QAAQ,CAAI,CAAC;AAC3B,CAAC,CAAC"}
|
@@ -0,0 +1,67 @@
|
|
1
|
+
"use strict";
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
3
|
+
__assign = Object.assign || function(t) {
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
5
|
+
s = arguments[i];
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
7
|
+
t[p] = s[p];
|
8
|
+
}
|
9
|
+
return t;
|
10
|
+
};
|
11
|
+
return __assign.apply(this, arguments);
|
12
|
+
};
|
13
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
14
|
+
if (k2 === undefined) k2 = k;
|
15
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
16
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
17
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
18
|
+
}
|
19
|
+
Object.defineProperty(o, k2, desc);
|
20
|
+
}) : (function(o, m, k, k2) {
|
21
|
+
if (k2 === undefined) k2 = k;
|
22
|
+
o[k2] = m[k];
|
23
|
+
}));
|
24
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
25
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
26
|
+
}) : function(o, v) {
|
27
|
+
o["default"] = v;
|
28
|
+
});
|
29
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
30
|
+
if (mod && mod.__esModule) return mod;
|
31
|
+
var result = {};
|
32
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
33
|
+
__setModuleDefault(result, mod);
|
34
|
+
return result;
|
35
|
+
};
|
36
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
37
|
+
var t = {};
|
38
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
39
|
+
t[p] = s[p];
|
40
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
41
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
42
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
43
|
+
t[p[i]] = s[p[i]];
|
44
|
+
}
|
45
|
+
return t;
|
46
|
+
};
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
48
|
+
exports.Renderer = void 0;
|
49
|
+
var fields_1 = require("./fields");
|
50
|
+
var graphql_js_tree_1 = require("graphql-js-tree");
|
51
|
+
var react_1 = __importStar(require("react"));
|
52
|
+
var Renderer = function (props) {
|
53
|
+
var formObject = props.formObject, f = props.f, nodes = props.nodes, _a = props.components, NullField = _a.NullField, FormLabel = _a.FormLabel, FormField = _a.FormField;
|
54
|
+
var children = props.children, allProps = __rest(props, ["children"]);
|
55
|
+
var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(f.type.fieldType); });
|
56
|
+
var isInput = (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.InputObjectTypeDefinition;
|
57
|
+
var canBeOpened = props.f.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition || isInput;
|
58
|
+
var _b = (0, react_1.useState)(props.f.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition || props.required), open = _b[0], setOpen = _b[1];
|
59
|
+
if (f.type.fieldType.type === graphql_js_tree_1.Options.required) {
|
60
|
+
return (react_1.default.createElement(exports.Renderer, __assign({}, props, { f: __assign(__assign({}, f), { type: __assign(__assign({}, f.type), { fieldType: __assign({}, f.type.fieldType.nest) }) }), required: true })));
|
61
|
+
}
|
62
|
+
return (react_1.default.createElement(FormField, __assign({}, allProps),
|
63
|
+
react_1.default.createElement(FormLabel, __assign({}, allProps, { open: open, setOpen: setOpen, children: children })),
|
64
|
+
formObject.value === null ? (react_1.default.createElement(NullField, __assign({}, allProps))) : (react_1.default.createElement(react_1.default.Fragment, null, (!canBeOpened || open) && react_1.default.createElement(fields_1.Fields, __assign({}, allProps))))));
|
65
|
+
};
|
66
|
+
exports.Renderer = Renderer;
|
67
|
+
//# sourceMappingURL=index.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,mCAA2C;AAC3C,mDAA6F;AAC7F,6CAAwC;AAEjC,IAAM,QAAQ,GAA8B,UAAC,KAAK;IAEjD,IAAA,UAAU,GAIV,KAAK,WAJK,EACV,CAAC,GAGD,KAAK,EAHJ,EACD,KAAK,GAEL,KAAK,MAFA,EACL,KACA,KAAK,WAD0C,EAAjC,SAAS,eAAA,EAAE,SAAS,eAAA,EAAE,SAAS,eAAE,CACzC;IACF,IAAA,QAAQ,GAAkB,KAAK,SAAvB,EAAK,QAAQ,UAAK,KAAK,EAAjC,YAAyB,CAAF,CAAW;IACxC,IAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,UAAC,CAAC,IAAK,OAAA,CAAC,CAAC,IAAI,KAAK,IAAA,6BAAW,EAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAxC,CAAwC,CAAC,CAAC;IAC7E,IAAM,OAAO,GAAG,CAAA,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAC,IAAI,MAAK,gCAAc,CAAC,yBAAyB,CAAC;IACjF,IAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,IAAI,OAAO,CAAC;IACpF,IAAA,KAAkB,IAAA,gBAAQ,EAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAvG,IAAI,QAAA,EAAE,OAAO,QAA0F,CAAC;IAC/G,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,yBAAO,CAAC,QAAQ,EAAE;QAC5C,OAAO,CACH,8BAAC,gBAAQ,eACD,KAAK,IACT,CAAC,wBACM,CAAC,KACJ,IAAI,wBAAO,CAAC,CAAC,IAAI,KAAE,SAAS,eAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,SAE5D,QAAQ,EAAE,IAAI,IAChB,CACL,CAAC;KACL;IACD,OAAO,CACH,8BAAC,SAAS,eAAK,QAAQ;QACnB,8BAAC,SAAS,eAAK,QAAQ,IAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,IAAI;QAC5E,UAAU,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CACzB,8BAAC,SAAS,eAAK,QAAQ,EAAI,CAC9B,CAAC,CAAC,CAAC,CACA,8DAAG,CAAC,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,8BAAC,eAAM,eAAK,QAAQ,EAAI,CAAI,CAC5D,CACO,CACf,CAAC;AACN,CAAC,CAAC;AAlCW,QAAA,QAAQ,YAkCnB"}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
import { PassedFormProps, CastToWidgetSettingsPassedForm } from "../../models";
|
2
|
+
import React from 'react';
|
3
|
+
export declare function createWidget<Props>({ name, Component, Settings, requirements, }: {
|
4
|
+
name: string;
|
5
|
+
Component: React.FC<PassedFormProps<Props>>;
|
6
|
+
Settings?: React.FC<CastToWidgetSettingsPassedForm<Props>>;
|
7
|
+
requirements: (props: PassedFormProps) => boolean;
|
8
|
+
}): {
|
9
|
+
Component: React.FC<PassedFormProps<Props>>;
|
10
|
+
Settings: React.FC<CastToWidgetSettingsPassedForm<Props>> | undefined;
|
11
|
+
requirements: (props: PassedFormProps) => boolean;
|
12
|
+
props: Props;
|
13
|
+
name: string;
|
14
|
+
};
|
@@ -0,0 +1,15 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
+
exports.createWidget = void 0;
|
4
|
+
function createWidget(_a) {
|
5
|
+
var name = _a.name, Component = _a.Component, Settings = _a.Settings, requirements = _a.requirements;
|
6
|
+
return {
|
7
|
+
Component: Component,
|
8
|
+
Settings: Settings,
|
9
|
+
requirements: requirements,
|
10
|
+
props: {},
|
11
|
+
name: name,
|
12
|
+
};
|
13
|
+
}
|
14
|
+
exports.createWidget = createWidget;
|
15
|
+
//# sourceMappingURL=models.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/renderer/widgets/models.ts"],"names":[],"mappings":";;;AAGA,SAAgB,YAAY,CAAQ,EAUnC;QATG,IAAI,UAAA,EACJ,SAAS,eAAA,EACT,QAAQ,cAAA,EACR,YAAY,kBAAA;IAOZ,OAAO;QACH,SAAS,WAAA;QACT,QAAQ,UAAA;QACR,YAAY,cAAA;QACZ,KAAK,EAAE,EAAW;QAClB,IAAI,MAAA;KACP,CAAC;AACN,CAAC;AAlBD,oCAkBC"}
|
package/package.json
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
{
|
2
|
+
"name": "graphql-form",
|
3
|
+
"version": "0.0.2",
|
4
|
+
"description": "Easy form creation with GraphQL Editor and React",
|
5
|
+
"main": "lib/index.js",
|
6
|
+
"scripts": {
|
7
|
+
"test": "jest",
|
8
|
+
"test:watch": "jest --watch",
|
9
|
+
"build": "ttsc --build tsconfig.build.json",
|
10
|
+
"start": "ttsc --build tsconfig.build.json --watch",
|
11
|
+
"lint": "eslint '*/**/*.{js,ts,tsx}' --quiet --fix"
|
12
|
+
},
|
13
|
+
"types": "lib/index.d.ts",
|
14
|
+
"private": false,
|
15
|
+
"publishConfig": {
|
16
|
+
"access": "public"
|
17
|
+
},
|
18
|
+
"repository": {
|
19
|
+
"type": "git",
|
20
|
+
"url": "git+https://github.com/graphql-editor/graphql-form.git"
|
21
|
+
},
|
22
|
+
"author": "Aexol <aexol@aexol.com> (http://aexol.com)",
|
23
|
+
"license": "MIT",
|
24
|
+
"homepage": "https://form.graphqleditor.com",
|
25
|
+
"devDependencies": {},
|
26
|
+
"peerDependencies": {
|
27
|
+
"react": ">=16.8.0",
|
28
|
+
"react-dom": ">=16.8.0"
|
29
|
+
},
|
30
|
+
"dependencies": {
|
31
|
+
"graphql-js-tree": "^0.1.1"
|
32
|
+
}
|
33
|
+
}
|
@@ -0,0 +1,95 @@
|
|
1
|
+
import { FormObject, FormValue } from '@/models';
|
2
|
+
import { ParserField, TypeDefinition, ScalarTypes, getTypeName } from 'graphql-js-tree';
|
3
|
+
|
4
|
+
export const fieldsToReductor = (toggledFields: Record<string, FormObject>): Reductor =>
|
5
|
+
Object.entries(toggledFields).reduce((a, [key, value]) => {
|
6
|
+
const pathElements = key.split('.');
|
7
|
+
let start = a;
|
8
|
+
pathElements.forEach((el, index) => {
|
9
|
+
if (index === 0 && !!value.node.type.operations?.length) {
|
10
|
+
el = value.node.type.operations[0];
|
11
|
+
}
|
12
|
+
start[el] = start[el] || {};
|
13
|
+
start[el].node = start[el].node || {};
|
14
|
+
if (index === pathElements.length - 1) {
|
15
|
+
if (value.value && Object.keys(value.value).length > 0) {
|
16
|
+
start[el].value = value.value;
|
17
|
+
}
|
18
|
+
}
|
19
|
+
start = start[el].node;
|
20
|
+
});
|
21
|
+
return a;
|
22
|
+
}, {} as Reductor);
|
23
|
+
|
24
|
+
export const reduceQl = (o: Reductor, nodes: ParserField[], tabs = ''): string => {
|
25
|
+
return Object.entries(o)
|
26
|
+
.map(([k, v]) => {
|
27
|
+
const kName =
|
28
|
+
v.value && Object.keys(v.value).length > 0
|
29
|
+
? `${k}(${resolveQlValue(v.value, nodes, tabs)}\n${tabs})`
|
30
|
+
: k;
|
31
|
+
const kObject =
|
32
|
+
Object.keys(v.node).length > 0
|
33
|
+
? `${tabs}${kName}{\n${reduceQl(v.node, nodes, tabs + '\t')}${tabs}}\n`
|
34
|
+
: `${tabs}${kName}\n`;
|
35
|
+
return kObject;
|
36
|
+
})
|
37
|
+
.join('');
|
38
|
+
};
|
39
|
+
|
40
|
+
const resolveSingularValue = (v: FormObject, nodes: ParserField[], tabs = ''): string => {
|
41
|
+
if (v.value === null) {
|
42
|
+
return 'null';
|
43
|
+
}
|
44
|
+
if (Array.isArray(v.value)) {
|
45
|
+
return `[${v.value
|
46
|
+
.map((subVal) => resolveSingularValue({ node: v.node, value: (subVal as FormObject).value }, nodes, tabs))
|
47
|
+
.join(', ')}]`;
|
48
|
+
}
|
49
|
+
const seekNode = nodes.find((n) => n.name === getTypeName(v.node.type.fieldType));
|
50
|
+
if (seekNode?.data.type === TypeDefinition.EnumTypeDefinition) {
|
51
|
+
return v.value as string;
|
52
|
+
}
|
53
|
+
if (seekNode?.data.type === TypeDefinition.ScalarTypeDefinition) {
|
54
|
+
return v.value as string;
|
55
|
+
}
|
56
|
+
if (seekNode) {
|
57
|
+
return `{${resolveQlValue(v.value, nodes, tabs + '\t')}\n${tabs}\t}`;
|
58
|
+
}
|
59
|
+
return getTypeName(v.node.type.fieldType) === ScalarTypes.String ? `"${v.value}"` : `${v.value}`;
|
60
|
+
};
|
61
|
+
|
62
|
+
const resolveQlValue = (v: FormValue | undefined, nodes: ParserField[], tabs = '') => {
|
63
|
+
if (typeof v === 'undefined' || v === null) {
|
64
|
+
return '';
|
65
|
+
}
|
66
|
+
return Object.entries(v).reduce((a, [key, v]: [key: string, value: FormObject]) => {
|
67
|
+
if (typeof v.value === 'undefined' || v.value === '') {
|
68
|
+
return a;
|
69
|
+
}
|
70
|
+
if (Array.isArray(v.value) && v.value.length === 0) {
|
71
|
+
return a;
|
72
|
+
}
|
73
|
+
if (
|
74
|
+
typeof v.value === 'object' &&
|
75
|
+
v.value !== null &&
|
76
|
+
!Object.values(v.value).some(
|
77
|
+
(val) =>
|
78
|
+
typeof val === 'object' && val !== null && 'value' in val && (!!val.value || val.value === false),
|
79
|
+
)
|
80
|
+
) {
|
81
|
+
return a;
|
82
|
+
}
|
83
|
+
const resolvedValue = resolveSingularValue(v, nodes, tabs);
|
84
|
+
a = `${a}\n\t${tabs}${key}: ${resolvedValue}`;
|
85
|
+
return a;
|
86
|
+
}, '');
|
87
|
+
};
|
88
|
+
|
89
|
+
type ReductorValue = {
|
90
|
+
node: Reductor;
|
91
|
+
value?: FormValue;
|
92
|
+
};
|
93
|
+
type Reductor = {
|
94
|
+
[key: string]: ReductorValue;
|
95
|
+
};
|
@@ -0,0 +1,110 @@
|
|
1
|
+
import { FormObject, FormValue } from '@/models';
|
2
|
+
import { ParserField, TypeDefinition, ScalarTypes, getTypeName } from 'graphql-js-tree';
|
3
|
+
|
4
|
+
export const zeusFieldsToReductor = (toggledFields: Record<string, FormObject>): Reductor => {
|
5
|
+
const r = Object.entries(toggledFields).reduce((a, [key, value]) => {
|
6
|
+
const pathElements = key.split('.');
|
7
|
+
let start = a;
|
8
|
+
pathElements.forEach((el, index) => {
|
9
|
+
if (index === 0 && !!value.node.type.operations?.length) {
|
10
|
+
el = value.node.type.operations[0];
|
11
|
+
return;
|
12
|
+
}
|
13
|
+
start[el] = start[el] || {};
|
14
|
+
start[el].node = start[el].node || {};
|
15
|
+
if (index === pathElements.length - 1) {
|
16
|
+
if (value.value && Object.keys(value.value).length > 0) {
|
17
|
+
start[el].value = value.value;
|
18
|
+
}
|
19
|
+
}
|
20
|
+
start = start[el].node;
|
21
|
+
});
|
22
|
+
return a;
|
23
|
+
}, {} as Reductor);
|
24
|
+
return r;
|
25
|
+
};
|
26
|
+
|
27
|
+
export const zeusReduceQl = (o: Reductor, nodes: ParserField[], tabs = '', level = 0): string => {
|
28
|
+
const lUP = level + 1;
|
29
|
+
return Object.entries(o)
|
30
|
+
.map(([k, v]) => {
|
31
|
+
if (v.value && Object.keys(v.value).length > 0) {
|
32
|
+
return Object.keys(v.node).length > 0
|
33
|
+
? `${tabs}${k}:[{${resolveQlValue(v.value, nodes, tabs)}\n${tabs}}, {\n${zeusReduceQl(
|
34
|
+
v.node,
|
35
|
+
nodes,
|
36
|
+
tabs + '\t',
|
37
|
+
lUP,
|
38
|
+
)}${tabs}}]\n`
|
39
|
+
: `${tabs}${k}:[{${resolveQlValue(v.value, nodes, tabs)}\n${tabs}}, true]`;
|
40
|
+
}
|
41
|
+
if (level === 0) {
|
42
|
+
return `const result = await api("${
|
43
|
+
nodes.find((n) => n.name === k)?.type.operations?.[0]
|
44
|
+
}")({\n${zeusReduceQl(v.node, nodes, tabs + '\t', lUP)}})`;
|
45
|
+
}
|
46
|
+
const kObject =
|
47
|
+
Object.keys(v.node).length > 0
|
48
|
+
? `${tabs}${k}:{\n${zeusReduceQl(v.node, nodes, tabs + '\t', lUP)}${tabs}}\n`
|
49
|
+
: `${tabs}${k}: true\n`;
|
50
|
+
return kObject;
|
51
|
+
})
|
52
|
+
.join('');
|
53
|
+
};
|
54
|
+
|
55
|
+
const resolveSingularValue = (v: FormObject, nodes: ParserField[], tabs = ''): string => {
|
56
|
+
if (v.value === null) {
|
57
|
+
return 'null';
|
58
|
+
}
|
59
|
+
if (Array.isArray(v.value)) {
|
60
|
+
return `[${v.value
|
61
|
+
.map((subVal) => resolveSingularValue({ node: v.node, value: (subVal as FormObject).value }, nodes, tabs))
|
62
|
+
.join(', ')}]`;
|
63
|
+
}
|
64
|
+
const seekNode = nodes.find((n) => n.name === getTypeName(v.node.type.fieldType));
|
65
|
+
if (seekNode?.data.type === TypeDefinition.EnumTypeDefinition) {
|
66
|
+
return v.value as string;
|
67
|
+
}
|
68
|
+
if (seekNode?.data.type === TypeDefinition.ScalarTypeDefinition) {
|
69
|
+
return v.value as string;
|
70
|
+
}
|
71
|
+
if (seekNode) {
|
72
|
+
return `{${resolveQlValue(v.value, nodes, tabs + '\t')}\n${tabs}\t}`;
|
73
|
+
}
|
74
|
+
return getTypeName(v.node.type.fieldType) === ScalarTypes.String ? `"${v.value}"` : `${v.value}`;
|
75
|
+
};
|
76
|
+
|
77
|
+
const resolveQlValue = (v: FormValue | undefined, nodes: ParserField[], tabs = '') => {
|
78
|
+
if (typeof v === 'undefined' || v === null) {
|
79
|
+
return '';
|
80
|
+
}
|
81
|
+
return Object.entries(v).reduce((a, [key, v]: [key: string, value: FormObject]) => {
|
82
|
+
if (typeof v.value === 'undefined' || v.value === '') {
|
83
|
+
return a;
|
84
|
+
}
|
85
|
+
if (Array.isArray(v.value) && v.value.length === 0) {
|
86
|
+
return a;
|
87
|
+
}
|
88
|
+
if (
|
89
|
+
typeof v.value === 'object' &&
|
90
|
+
v.value !== null &&
|
91
|
+
!Object.values(v.value).some(
|
92
|
+
(val) =>
|
93
|
+
typeof val === 'object' && val !== null && 'value' in val && (!!val.value || val.value === false),
|
94
|
+
)
|
95
|
+
) {
|
96
|
+
return a;
|
97
|
+
}
|
98
|
+
const resolvedValue = resolveSingularValue(v, nodes, tabs);
|
99
|
+
a = `${a}\n\t${tabs}${key}: ${resolvedValue}`;
|
100
|
+
return a;
|
101
|
+
}, '');
|
102
|
+
};
|
103
|
+
|
104
|
+
type ReductorValue = {
|
105
|
+
node: Reductor;
|
106
|
+
value?: FormValue;
|
107
|
+
};
|
108
|
+
type Reductor = {
|
109
|
+
[key: string]: ReductorValue;
|
110
|
+
};
|
package/src/index.tsx
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
import { FormObject, FormDisplayerProps, MainRendererProps } from '@/models';
|
2
|
+
import { Renderer } from '@/renderer';
|
3
|
+
import React from 'react';
|
4
|
+
|
5
|
+
export * from '@/models';
|
6
|
+
export { Renderer };
|
7
|
+
|
8
|
+
export const FormRenderer: React.FC<MainRendererProps> = ({ formFields, onChange, widgetsOnChange, ...props }) => {
|
9
|
+
return (
|
10
|
+
<>
|
11
|
+
{Object.keys(formFields).map((key) => {
|
12
|
+
return (
|
13
|
+
<Renderer
|
14
|
+
{...props}
|
15
|
+
changeWidget={(props, path) => {
|
16
|
+
widgetsOnChange(path, props);
|
17
|
+
}}
|
18
|
+
currentPath={''}
|
19
|
+
formObject={formFields[key]}
|
20
|
+
onChange={(changedForm: FormObject) => {
|
21
|
+
onChange({
|
22
|
+
...formFields,
|
23
|
+
[key]: changedForm,
|
24
|
+
});
|
25
|
+
}}
|
26
|
+
f={formFields[key].node}
|
27
|
+
/>
|
28
|
+
);
|
29
|
+
})}
|
30
|
+
</>
|
31
|
+
);
|
32
|
+
};
|
33
|
+
|
34
|
+
export const FormDisplayer: React.FC<FormDisplayerProps> = ({ formFields, onChange, ...props }) => {
|
35
|
+
return (
|
36
|
+
<>
|
37
|
+
{Object.keys(formFields).map((key) => {
|
38
|
+
return (
|
39
|
+
<Renderer
|
40
|
+
{...props}
|
41
|
+
changeWidget={() => {
|
42
|
+
return;
|
43
|
+
}}
|
44
|
+
currentPath={''}
|
45
|
+
formObject={formFields[key]}
|
46
|
+
onChange={(changedForm: FormObject) => {
|
47
|
+
onChange({
|
48
|
+
...formFields,
|
49
|
+
[key]: changedForm,
|
50
|
+
});
|
51
|
+
}}
|
52
|
+
f={formFields[key].node}
|
53
|
+
/>
|
54
|
+
);
|
55
|
+
})}
|
56
|
+
</>
|
57
|
+
);
|
58
|
+
};
|
package/src/models.ts
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
import { ParserField } from 'graphql-js-tree';
|
2
|
+
import React from 'react';
|
3
|
+
|
4
|
+
export type FieldComponent = React.FC<PassedFormProps>;
|
5
|
+
|
6
|
+
export type FormLabelProps = React.FC<PassedFormProps & { open?: boolean; setOpen: (b: boolean) => void }>;
|
7
|
+
|
8
|
+
export type SavedWidgets = {
|
9
|
+
[selector: string]: {
|
10
|
+
widget: string;
|
11
|
+
[x: string]: any;
|
12
|
+
};
|
13
|
+
};
|
14
|
+
|
15
|
+
export type PassedFormProps<WidgetData = any> = {
|
16
|
+
f: ParserField;
|
17
|
+
nodes: ParserField[];
|
18
|
+
formObject: FormObject;
|
19
|
+
onChange: (formObject: FormObject) => void;
|
20
|
+
changeWidget: (widgetData: Record<string, any> | undefined, path: string) => void;
|
21
|
+
required?: boolean;
|
22
|
+
runQuery: (q: string) => Promise<any>;
|
23
|
+
widgetComponents: WidgetType[];
|
24
|
+
currentPath: string;
|
25
|
+
widgets?: SavedWidgets;
|
26
|
+
widgetData?: WidgetData;
|
27
|
+
components: {
|
28
|
+
ArrayField: FieldComponent;
|
29
|
+
ObjectField: FieldComponent;
|
30
|
+
BooleanField: FieldComponent;
|
31
|
+
UniversalField: FieldComponent;
|
32
|
+
NumberField: FieldComponent;
|
33
|
+
EnumField: FieldComponent;
|
34
|
+
NullField: FieldComponent;
|
35
|
+
FormLabel: FormLabelProps;
|
36
|
+
FormField: FieldComponent;
|
37
|
+
};
|
38
|
+
};
|
39
|
+
|
40
|
+
export type MainRendererProps = Omit<
|
41
|
+
PassedFormProps,
|
42
|
+
'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget'
|
43
|
+
> & {
|
44
|
+
formFields: Record<string, FormObject>;
|
45
|
+
widgetsOnChange: (key: string, value?: Omit<FormObject, 'node' | 'value'>) => void;
|
46
|
+
onChange: (o: Record<string, FormObject>) => void;
|
47
|
+
};
|
48
|
+
|
49
|
+
export type FormDisplayerProps = Omit<
|
50
|
+
PassedFormProps,
|
51
|
+
'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget'
|
52
|
+
> & {
|
53
|
+
formFields: Record<string, FormObject>;
|
54
|
+
onChange: (o: Record<string, FormObject>) => void;
|
55
|
+
};
|
56
|
+
|
57
|
+
export type FormLibraryProps = Omit<FormDisplayerProps, 'required' | 'components'>;
|
58
|
+
|
59
|
+
export type CastToWidgetSettingsPassedForm<WidgetData> = PassedFormProps<Partial<WidgetData>> & {
|
60
|
+
close: () => void;
|
61
|
+
};
|
62
|
+
|
63
|
+
export type WidgetType = {
|
64
|
+
Component: React.FC<PassedFormProps>;
|
65
|
+
Settings: React.FC<CastToWidgetSettingsPassedForm<any>> | undefined;
|
66
|
+
requirements: (props: PassedFormProps) => boolean;
|
67
|
+
props?: Record<string, any>;
|
68
|
+
name: string;
|
69
|
+
};
|
70
|
+
|
71
|
+
export type FormValue =
|
72
|
+
| {
|
73
|
+
[x: string]: FormValue;
|
74
|
+
}
|
75
|
+
| string
|
76
|
+
| boolean
|
77
|
+
| number
|
78
|
+
| null
|
79
|
+
| undefined
|
80
|
+
| FormObject
|
81
|
+
| Array<FormValue>;
|
82
|
+
|
83
|
+
export type FormObject = {
|
84
|
+
value?: FormValue;
|
85
|
+
node: ParserField;
|
86
|
+
};
|
87
|
+
|
88
|
+
export type FormDataType = Record<string, FormObject | Record<string, FormObject | undefined>>;
|
89
|
+
|
90
|
+
export type FormFile = {
|
91
|
+
forms: Record<string, FormObject>;
|
92
|
+
widgets: Record<string, Omit<FormObject, 'node' | 'value'>>;
|
93
|
+
};
|
@@ -0,0 +1,61 @@
|
|
1
|
+
import { PassedFormProps } from '@/models';
|
2
|
+
import { getTypeName, Options, ScalarTypes, TypeDefinition, TypeSystemDefinition } from 'graphql-js-tree';
|
3
|
+
import React from 'react';
|
4
|
+
|
5
|
+
export const Fields: React.FC<PassedFormProps> = (props) => {
|
6
|
+
const {
|
7
|
+
nodes,
|
8
|
+
widgetComponents,
|
9
|
+
f,
|
10
|
+
widgets,
|
11
|
+
components: { ArrayField, ObjectField },
|
12
|
+
} = props;
|
13
|
+
const seekNode = nodes.find((n) => n.name === getTypeName(f.type.fieldType));
|
14
|
+
const isInput = seekNode?.data.type === TypeDefinition.InputObjectTypeDefinition;
|
15
|
+
if (f.data.type === TypeSystemDefinition.FieldDefinition) {
|
16
|
+
return <ObjectField {...props} />;
|
17
|
+
}
|
18
|
+
if (f.type.fieldType.type === Options.array) {
|
19
|
+
return <ArrayField {...props} />;
|
20
|
+
}
|
21
|
+
if (isInput) {
|
22
|
+
return <ObjectField {...props} f={seekNode} />;
|
23
|
+
}
|
24
|
+
const widget = widgets?.[props.currentPath];
|
25
|
+
if (widget) {
|
26
|
+
const WidgetComponent = widgetComponents.find((wc) => wc.name === widget.widget)?.Component;
|
27
|
+
if (!WidgetComponent) {
|
28
|
+
return <></>;
|
29
|
+
}
|
30
|
+
return <WidgetComponent {...props} widgetData={widget} />;
|
31
|
+
}
|
32
|
+
return <ScalarField {...props} />;
|
33
|
+
};
|
34
|
+
const ScalarField: React.FC<PassedFormProps> = (props) => {
|
35
|
+
const {
|
36
|
+
f,
|
37
|
+
nodes,
|
38
|
+
children,
|
39
|
+
components: { BooleanField, NumberField, EnumField, UniversalField },
|
40
|
+
} = props;
|
41
|
+
const typeName = getTypeName(f.type.fieldType);
|
42
|
+
const seekNode = nodes.find((n) => n.name === getTypeName(f.type.fieldType));
|
43
|
+
if (
|
44
|
+
typeName === ScalarTypes.String ||
|
45
|
+
typeName === ScalarTypes.ID ||
|
46
|
+
seekNode?.data.type === TypeDefinition.ScalarTypeDefinition
|
47
|
+
) {
|
48
|
+
return <UniversalField {...props} />;
|
49
|
+
}
|
50
|
+
|
51
|
+
if (typeName === ScalarTypes.Float || typeName === ScalarTypes.Int) {
|
52
|
+
return <NumberField {...props} />;
|
53
|
+
}
|
54
|
+
if (typeName === ScalarTypes.Boolean) {
|
55
|
+
return <BooleanField {...props} />;
|
56
|
+
}
|
57
|
+
if (seekNode?.data.type === TypeDefinition.EnumTypeDefinition) {
|
58
|
+
return <EnumField {...props} />;
|
59
|
+
}
|
60
|
+
return <>{children}</>;
|
61
|
+
};
|
@@ -0,0 +1,40 @@
|
|
1
|
+
import { PassedFormProps } from '@/models';
|
2
|
+
import { Fields } from '@/renderer/fields';
|
3
|
+
import { TypeSystemDefinition, Options, getTypeName, TypeDefinition } from 'graphql-js-tree';
|
4
|
+
import React, { useState } from 'react';
|
5
|
+
|
6
|
+
export const Renderer: React.FC<PassedFormProps> = (props) => {
|
7
|
+
const {
|
8
|
+
formObject,
|
9
|
+
f,
|
10
|
+
nodes,
|
11
|
+
components: { NullField, FormLabel, FormField },
|
12
|
+
} = props;
|
13
|
+
const { children, ...allProps } = props;
|
14
|
+
const seekNode = nodes.find((n) => n.name === getTypeName(f.type.fieldType));
|
15
|
+
const isInput = seekNode?.data.type === TypeDefinition.InputObjectTypeDefinition;
|
16
|
+
const canBeOpened = props.f.data.type === TypeSystemDefinition.FieldDefinition || isInput;
|
17
|
+
const [open, setOpen] = useState(props.f.data.type === TypeSystemDefinition.FieldDefinition || props.required);
|
18
|
+
if (f.type.fieldType.type === Options.required) {
|
19
|
+
return (
|
20
|
+
<Renderer
|
21
|
+
{...props}
|
22
|
+
f={{
|
23
|
+
...f,
|
24
|
+
type: { ...f.type, fieldType: { ...f.type.fieldType.nest } },
|
25
|
+
}}
|
26
|
+
required={true}
|
27
|
+
/>
|
28
|
+
);
|
29
|
+
}
|
30
|
+
return (
|
31
|
+
<FormField {...allProps}>
|
32
|
+
<FormLabel {...allProps} open={open} setOpen={setOpen} children={children} />
|
33
|
+
{formObject.value === null ? (
|
34
|
+
<NullField {...allProps} />
|
35
|
+
) : (
|
36
|
+
<>{(!canBeOpened || open) && <Fields {...allProps} />}</>
|
37
|
+
)}
|
38
|
+
</FormField>
|
39
|
+
);
|
40
|
+
};
|
@@ -0,0 +1,22 @@
|
|
1
|
+
import { PassedFormProps, CastToWidgetSettingsPassedForm } from '@/models';
|
2
|
+
import React from 'react';
|
3
|
+
|
4
|
+
export function createWidget<Props>({
|
5
|
+
name,
|
6
|
+
Component,
|
7
|
+
Settings,
|
8
|
+
requirements,
|
9
|
+
}: {
|
10
|
+
name: string;
|
11
|
+
Component: React.FC<PassedFormProps<Props>>;
|
12
|
+
Settings?: React.FC<CastToWidgetSettingsPassedForm<Props>>;
|
13
|
+
requirements: (props: PassedFormProps) => boolean;
|
14
|
+
}) {
|
15
|
+
return {
|
16
|
+
Component,
|
17
|
+
Settings,
|
18
|
+
requirements,
|
19
|
+
props: {} as Props,
|
20
|
+
name,
|
21
|
+
};
|
22
|
+
}
|
@@ -0,0 +1,36 @@
|
|
1
|
+
{
|
2
|
+
"compilerOptions": {
|
3
|
+
"target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
|
4
|
+
"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
|
5
|
+
"jsx": "react" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */,
|
6
|
+
"declaration": true /* Generates corresponding '.d.ts' file. */,
|
7
|
+
|
8
|
+
"sourceMap": true /* Generates corresponding '.map' file. */,
|
9
|
+
|
10
|
+
"outDir": "./lib" /* Redirect output structure to the directory. */,
|
11
|
+
"rootDir": "./src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */,
|
12
|
+
|
13
|
+
"isolatedModules": true /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */,
|
14
|
+
|
15
|
+
"strict": true /* Enable all strict type-checking options. */,
|
16
|
+
|
17
|
+
"baseUrl": "./src" /* Base directory to resolve non-absolute module names. */,
|
18
|
+
"paths": {
|
19
|
+
"@/*": ["./*"]
|
20
|
+
} /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */,
|
21
|
+
|
22
|
+
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
|
23
|
+
"skipLibCheck": true /* Skip type checking of declaration files. */,
|
24
|
+
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */,
|
25
|
+
"plugins": [
|
26
|
+
{
|
27
|
+
"transform": "typescript-transform-paths"
|
28
|
+
},
|
29
|
+
{
|
30
|
+
"transform": "typescript-transform-paths",
|
31
|
+
"afterDeclarations": true
|
32
|
+
}
|
33
|
+
]
|
34
|
+
},
|
35
|
+
"exclude": ["**/__tests__/*", "**/__sandbox__/*", "./lib"]
|
36
|
+
}
|
package/tsconfig.json
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
{
|
2
|
+
"compilerOptions": {
|
3
|
+
"target": "es5" /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019', 'ES2020', or 'ESNEXT'. */,
|
4
|
+
"module": "commonjs" /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', 'es2020', or 'ESNext'. */,
|
5
|
+
"jsx": "react" /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */,
|
6
|
+
"sourceMap": true /* Generates corresponding '.map' file. */,
|
7
|
+
"rootDir": "./src" /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */,
|
8
|
+
"isolatedModules": true /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */,
|
9
|
+
"strict": true /* Enable all strict type-checking options. */,
|
10
|
+
"baseUrl": "./src" /* Base directory to resolve non-absolute module names. */,
|
11
|
+
"outDir": "./lib",
|
12
|
+
"paths": {
|
13
|
+
"@/*": ["./*"]
|
14
|
+
} /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */,
|
15
|
+
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */,
|
16
|
+
"skipLibCheck": true /* Skip type checking of declaration files. */,
|
17
|
+
"forceConsistentCasingInFileNames": true /* Disallow inconsistently-cased references to the same file. */,
|
18
|
+
"composite": true
|
19
|
+
}
|
20
|
+
}
|