graphql-form 0.0.25 → 0.0.27

Sign up to get free protection for your applications and to get access to all the features.
@@ -10,6 +10,29 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
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
+ };
13
36
  var __rest = (this && this.__rest) || function (s, e) {
14
37
  var t = {};
15
38
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -21,32 +44,32 @@ var __rest = (this && this.__rest) || function (s, e) {
21
44
  }
22
45
  return t;
23
46
  };
24
- var __importDefault = (this && this.__importDefault) || function (mod) {
25
- return (mod && mod.__esModule) ? mod : { "default": mod };
26
- };
27
47
  Object.defineProperty(exports, "__esModule", { value: true });
28
48
  exports.FormBuilder = void 0;
29
49
  var FormToCode_1 = require("./FormToCode");
30
50
  var renderer_1 = require("./renderer");
31
51
  var graphql_js_tree_1 = require("graphql-js-tree");
32
- var react_1 = __importDefault(require("react"));
52
+ var react_1 = __importStar(require("react"));
33
53
  var FormBuilder = function (_a) {
34
- var formFile = _a.formFile, onChange = _a.onChange, props = __rest(_a, ["formFile", "onChange"]);
54
+ var formFile = _a.formFile, onChange = _a.onChange, schema = _a.schema, props = __rest(_a, ["formFile", "onChange", "schema"]);
35
55
  var _b = formFile.widgets, widgets = _b === void 0 ? {} : _b, _c = formFile.forms, forms = _c === void 0 ? {} : _c;
36
56
  var formFields = Object.fromEntries(Object.entries(forms).filter(function (_a) {
37
57
  var _b;
38
58
  var v = _a[1];
39
59
  return !!((_b = v.node.args) === null || _b === void 0 ? void 0 : _b.length) && v.node.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition;
40
60
  }));
61
+ var nodes = (0, react_1.useMemo)(function () {
62
+ return graphql_js_tree_1.Parser.parse(schema).nodes;
63
+ }, [schema]);
41
64
  return (react_1.default.createElement(react_1.default.Fragment, null, Object.keys(formFields).map(function (key) {
42
- return (react_1.default.createElement(renderer_1.Renderer, __assign({}, props, { key: key, changeWidget: function (widgetData, path) {
65
+ return (react_1.default.createElement(renderer_1.Renderer, __assign({}, props, { key: key, nodes: nodes, changeWidget: function (widgetData, path) {
43
66
  var _a;
44
- var query = (0, FormToCode_1.formToGql)({ fields: forms, nodes: props.nodes });
67
+ var query = (0, FormToCode_1.formToGql)({ fields: forms, nodes: nodes });
45
68
  onChange(__assign(__assign({}, formFile), { widgets: __assign(__assign({}, widgets), (_a = {}, _a[path] = widgetData, _a)) }), query);
46
69
  }, widgets: widgets, currentPath: key, formObject: formFields[key], onChange: function (changedForm) {
47
70
  var _a;
48
71
  var updatedFile = __assign(__assign({}, formFile), { forms: __assign(__assign({}, forms), (_a = {}, _a[key] = changedForm, _a)) });
49
- var query = (0, FormToCode_1.formToGql)({ fields: updatedFile.forms, nodes: props.nodes });
72
+ var query = (0, FormToCode_1.formToGql)({ fields: updatedFile.forms, nodes: nodes });
50
73
  onChange(updatedFile, query);
51
74
  }, f: formFields[key].node })));
52
75
  })));
@@ -1 +1 @@
1
- {"version":3,"file":"FormBuilder.js","sourceRoot":"","sources":["../src/FormBuilder.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAyC;AAEzC,uCAAsC;AACtC,mDAAuD;AACvD,gDAA0B;AAEnB,IAAM,WAAW,GAA+B,UAAC,EAAgC;IAA9B,IAAA,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAK,KAAK,cAA9B,wBAAgC,CAAF;IAC1E,IAAA,KAA6B,QAAQ,QAAzB,EAAZ,OAAO,mBAAG,EAAE,KAAA,EAAE,KAAe,QAAQ,MAAb,EAAV,KAAK,mBAAG,EAAE,KAAA,CAAc;IAC9C,IAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CACxB,UAAC,EAAK;;YAAF,CAAC,QAAA;QAAM,OAAA,CAAC,CAAC,CAAA,MAAA,CAAC,CAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,CAAA;KAAA,CAChG,CACJ,CAAC;IACF,OAAO,CACH,8DACK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG;QAC7B,OAAO,CACH,8BAAC,mBAAQ,eACD,KAAK,IACT,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,UAAC,UAAU,EAAE,IAAI;;gBAC3B,IAAM,KAAK,GAAG,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/D,QAAQ,uBAEG,QAAQ,KACX,OAAO,wBACA,OAAO,gBACT,IAAI,IAAG,UAAU,WAG1B,KAAK,CACR,CAAC;YACN,CAAC,EACD,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,GAAG,EAChB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAC3B,QAAQ,EAAE,UAAC,WAAuB;;gBAC9B,IAAM,WAAW,yBACV,QAAQ,KACX,KAAK,wBACE,KAAK,gBACP,GAAG,IAAG,WAAW,SAEzB,CAAC;gBACF,IAAM,KAAK,GAAG,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3E,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC,EACD,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IACzB,CACL,CAAC;IACN,CAAC,CAAC,CACH,CACN,CAAC;AACN,CAAC,CAAC;AA/CW,QAAA,WAAW,eA+CtB"}
1
+ {"version":3,"file":"FormBuilder.js","sourceRoot":"","sources":["../src/FormBuilder.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAyC;AAEzC,uCAAsC;AACtC,mDAA+D;AAC/D,6CAAuC;AAEhC,IAAM,WAAW,GAA+B,UAAC,EAAwC;IAAtC,IAAA,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAE,MAAM,YAAA,EAAK,KAAK,cAAtC,kCAAwC,CAAF;IAClF,IAAA,KAA6B,QAAQ,QAAzB,EAAZ,OAAO,mBAAG,EAAE,KAAA,EAAE,KAAe,QAAQ,MAAb,EAAV,KAAK,mBAAG,EAAE,KAAA,CAAc;IAC9C,IAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CACxB,UAAC,EAAK;;YAAF,CAAC,QAAA;QAAM,OAAA,CAAC,CAAC,CAAA,MAAA,CAAC,CAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,CAAA;KAAA,CAChG,CACJ,CAAC;IACF,IAAM,KAAK,GAAG,IAAA,eAAO,EAAC;QAClB,OAAO,wBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;IACtC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACb,OAAO,CACH,8DACK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG;QAC7B,OAAO,CACH,8BAAC,mBAAQ,eACD,KAAK,IACT,GAAG,EAAE,GAAG,EACR,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,UAAC,UAAU,EAAE,IAAI;;gBAC3B,IAAM,KAAK,GAAG,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,OAAA,EAAE,CAAC,CAAC;gBAClD,QAAQ,uBAEG,QAAQ,KACX,OAAO,wBACA,OAAO,gBACT,IAAI,IAAG,UAAU,WAG1B,KAAK,CACR,CAAC;YACN,CAAC,EACD,OAAO,EAAE,OAAO,EAChB,WAAW,EAAE,GAAG,EAChB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAC3B,QAAQ,EAAE,UAAC,WAAuB;;gBAC9B,IAAM,WAAW,yBACV,QAAQ,KACX,KAAK,wBACE,KAAK,gBACP,GAAG,IAAG,WAAW,SAEzB,CAAC;gBACF,IAAM,KAAK,GAAG,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,OAAA,EAAE,CAAC,CAAC;gBAC9D,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC,EACD,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IACzB,CACL,CAAC;IACN,CAAC,CAAC,CACH,CACN,CAAC;AACN,CAAC,CAAC;AAnDW,QAAA,WAAW,eAmDtB"}
@@ -10,6 +10,29 @@ var __assign = (this && this.__assign) || function () {
10
10
  };
11
11
  return __assign.apply(this, arguments);
12
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
+ };
13
36
  var __rest = (this && this.__rest) || function (s, e) {
14
37
  var t = {};
15
38
  for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
@@ -21,30 +44,30 @@ var __rest = (this && this.__rest) || function (s, e) {
21
44
  }
22
45
  return t;
23
46
  };
24
- var __importDefault = (this && this.__importDefault) || function (mod) {
25
- return (mod && mod.__esModule) ? mod : { "default": mod };
26
- };
27
47
  Object.defineProperty(exports, "__esModule", { value: true });
28
48
  exports.FormDisplayer = void 0;
29
49
  var FormToCode_1 = require("./FormToCode");
30
50
  var renderer_1 = require("./renderer");
31
51
  var graphql_js_tree_1 = require("graphql-js-tree");
32
- var react_1 = __importDefault(require("react"));
52
+ var react_1 = __importStar(require("react"));
33
53
  var FormDisplayer = function (_a) {
34
- var formFile = _a.formFile, onChange = _a.onChange, props = __rest(_a, ["formFile", "onChange"]);
54
+ var formFile = _a.formFile, onChange = _a.onChange, schema = _a.schema, props = __rest(_a, ["formFile", "onChange", "schema"]);
35
55
  var _b = formFile.widgets, widgets = _b === void 0 ? {} : _b, _c = formFile.forms, forms = _c === void 0 ? {} : _c;
36
56
  var formFields = Object.fromEntries(Object.entries(forms).filter(function (_a) {
37
57
  var _b;
38
58
  var v = _a[1];
39
59
  return !!((_b = v.node.args) === null || _b === void 0 ? void 0 : _b.length) && v.node.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition;
40
60
  }));
61
+ var nodes = (0, react_1.useMemo)(function () {
62
+ return graphql_js_tree_1.Parser.parse(schema).nodes;
63
+ }, [schema]);
41
64
  return (react_1.default.createElement(react_1.default.Fragment, null, Object.keys(formFields).map(function (key) {
42
- return (react_1.default.createElement(renderer_1.Renderer, __assign({}, props, { key: key, widgets: widgets, changeWidget: function () {
65
+ return (react_1.default.createElement(renderer_1.Renderer, __assign({}, props, { nodes: nodes, key: key, widgets: widgets, changeWidget: function () {
43
66
  return;
44
67
  }, currentPath: key, formObject: formFields[key], onChange: function (changedForm) {
45
68
  var _a;
46
69
  var updatedFile = __assign(__assign({}, formFile), { forms: __assign(__assign({}, forms), (_a = {}, _a[key] = changedForm, _a)) });
47
- var query = (0, FormToCode_1.formToGql)({ fields: updatedFile.forms, nodes: props.nodes });
70
+ var query = (0, FormToCode_1.formToGql)({ fields: updatedFile.forms, nodes: nodes });
48
71
  onChange(updatedFile, query);
49
72
  }, f: formFields[key].node })));
50
73
  })));
@@ -1 +1 @@
1
- {"version":3,"file":"FormDisplayer.js","sourceRoot":"","sources":["../src/FormDisplayer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAyC;AAEzC,uCAAsC;AACtC,mDAAuD;AACvD,gDAA0B;AAEnB,IAAM,aAAa,GAAiC,UAAC,EAAgC;IAA9B,IAAA,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAK,KAAK,cAA9B,wBAAgC,CAAF;IAC9E,IAAA,KAA6B,QAAQ,QAAzB,EAAZ,OAAO,mBAAG,EAAE,KAAA,EAAE,KAAe,QAAQ,MAAb,EAAV,KAAK,mBAAG,EAAE,KAAA,CAAc;IAC9C,IAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CACxB,UAAC,EAAK;;YAAF,CAAC,QAAA;QAAM,OAAA,CAAC,CAAC,CAAA,MAAA,CAAC,CAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,CAAA;KAAA,CAChG,CACJ,CAAC;IACF,OAAO,CACH,8DACK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG;QAC7B,OAAO,CACH,8BAAC,mBAAQ,eACD,KAAK,IACT,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE;gBACV,OAAO;YACX,CAAC,EACD,WAAW,EAAE,GAAG,EAChB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAC3B,QAAQ,EAAE,UAAC,WAAuB;;gBAC9B,IAAM,WAAW,yBACV,QAAQ,KACX,KAAK,wBACE,KAAK,gBACP,GAAG,IAAG,WAAW,SAEzB,CAAC;gBACF,IAAM,KAAK,GAAG,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3E,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC,EACD,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IACzB,CACL,CAAC;IACN,CAAC,CAAC,CACH,CACN,CAAC;AACN,CAAC,CAAC;AArCW,QAAA,aAAa,iBAqCxB"}
1
+ {"version":3,"file":"FormDisplayer.js","sourceRoot":"","sources":["../src/FormDisplayer.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,2CAAyC;AAEzC,uCAAsC;AACtC,mDAA+D;AAC/D,6CAAuC;AAEhC,IAAM,aAAa,GAAiC,UAAC,EAAwC;IAAtC,IAAA,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAE,MAAM,YAAA,EAAK,KAAK,cAAtC,kCAAwC,CAAF;IACtF,IAAA,KAA6B,QAAQ,QAAzB,EAAZ,OAAO,mBAAG,EAAE,KAAA,EAAE,KAAe,QAAQ,MAAb,EAAV,KAAK,mBAAG,EAAE,KAAA,CAAc;IAC9C,IAAM,UAAU,GAAG,MAAM,CAAC,WAAW,CACjC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CACxB,UAAC,EAAK;;YAAF,CAAC,QAAA;QAAM,OAAA,CAAC,CAAC,CAAA,MAAA,CAAC,CAAC,IAAI,CAAC,IAAI,0CAAE,MAAM,CAAA,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,sCAAoB,CAAC,eAAe,CAAA;KAAA,CAChG,CACJ,CAAC;IACF,IAAM,KAAK,GAAG,IAAA,eAAO,EAAC;QAClB,OAAO,wBAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC;IACtC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACb,OAAO,CACH,8DACK,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,UAAC,GAAG;QAC7B,OAAO,CACH,8BAAC,mBAAQ,eACD,KAAK,IACT,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,OAAO,EAChB,YAAY,EAAE;gBACV,OAAO;YACX,CAAC,EACD,WAAW,EAAE,GAAG,EAChB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,EAC3B,QAAQ,EAAE,UAAC,WAAuB;;gBAC9B,IAAM,WAAW,yBACV,QAAQ,KACX,KAAK,wBACE,KAAK,gBACP,GAAG,IAAG,WAAW,SAEzB,CAAC;gBACF,IAAM,KAAK,GAAG,IAAA,sBAAS,EAAC,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,KAAK,OAAA,EAAE,CAAC,CAAC;gBAC9D,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACjC,CAAC,EACD,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC,IAAI,IACzB,CACL,CAAC;IACN,CAAC,CAAC,CACH,CACN,CAAC;AACN,CAAC,CAAC;AAzCW,QAAA,aAAa,iBAyCxB"}
package/lib/models.d.ts CHANGED
@@ -58,12 +58,14 @@ export declare type FormFile = {
58
58
  widgets?: SavedWidgets;
59
59
  forms?: SavedForms;
60
60
  };
61
- export declare type FormBuilderProps = Omit<PassedFormProps, 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets'> & {
61
+ export declare type FormBuilderProps = Omit<PassedFormProps, 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets' | 'nodes'> & {
62
62
  formFile: FormFile;
63
+ schema: string;
63
64
  onChange: (o: FormFile, query: string) => void;
64
65
  };
65
- export declare type FormDisplayerProps = Omit<PassedFormProps, 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets'> & {
66
+ export declare type FormDisplayerProps = Omit<PassedFormProps, 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets' | 'nodes'> & {
66
67
  formFile: FormFile;
68
+ schema: string;
67
69
  onChange: (o: FormFile, query: string) => void;
68
70
  };
69
71
  export declare type FormLibraryProps = Omit<FormDisplayerProps, 'required' | 'components'>;
@@ -1,11 +1,11 @@
1
- import { Errs, FormFile, FormObject, FormValue, PassedFormProps } from "./models";
2
- import { ParserField } from 'graphql-js-tree';
1
+ import { Errs, FormFile, FormValue, PassedFormProps } from "./models";
3
2
  export declare const getWidgetFromProps: (props: PassedFormProps) => {
4
3
  data: any;
5
4
  widget: import("./models").WidgetType;
6
5
  } | undefined;
7
6
  export declare const getErrorFromProps: (props: PassedFormProps) => string | undefined;
8
- export declare const validateValue: (f: FormValue, nodes: ParserField[], path: string, pushErrors: (path: string, value: Errs) => void) => void;
9
- export declare const validateForm: (v: FormFile, nodes: ParserField[], errors: Record<Errs, string>) => Record<string, string>;
10
- export declare const eraseValue: (f: FormObject, nodes: ParserField[]) => FormObject;
11
- export declare const eraseForm: (v: FormFile, nodes: ParserField[]) => FormFile;
7
+ export declare const graphqlFormUtils: (schema: string) => {
8
+ eraseForm: (v: FormFile) => FormFile;
9
+ validateForm: (v: FormFile, errors: Record<Errs, string>) => Record<string, string>;
10
+ validateValue: (f: FormValue, path: string, pushErrors: (path: string, value: Errs) => void) => void;
11
+ };
package/lib/outsideUse.js CHANGED
@@ -11,7 +11,7 @@ var __assign = (this && this.__assign) || function () {
11
11
  return __assign.apply(this, arguments);
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.eraseForm = exports.eraseValue = exports.validateForm = exports.validateValue = exports.getErrorFromProps = exports.getWidgetFromProps = void 0;
14
+ exports.graphqlFormUtils = exports.getErrorFromProps = exports.getWidgetFromProps = void 0;
15
15
  var models_1 = require("./models");
16
16
  var graphql_js_tree_1 = require("graphql-js-tree");
17
17
  var getWidgetFromProps = function (props) {
@@ -43,104 +43,107 @@ var getErrorFromProps = function (props) {
43
43
  return (_a = props.errors) === null || _a === void 0 ? void 0 : _a[props.currentPath];
44
44
  };
45
45
  exports.getErrorFromProps = getErrorFromProps;
46
- var validateValue = function (f, nodes, path, pushErrors) {
47
- if (f === null ||
48
- typeof f === 'string' ||
49
- typeof f === 'boolean' ||
50
- typeof f === 'number' ||
51
- typeof f === 'undefined') {
52
- return;
53
- }
54
- if ('node' in f &&
55
- typeof f.node === 'object' &&
56
- f.node !== null &&
57
- 'args' in f.node &&
58
- 'data' in f.node &&
59
- typeof f.node.data === 'object' &&
60
- !!f.node.data &&
61
- 'type' in f.node.data &&
62
- 'directives' in f.node) {
63
- var _a = f, node = _a.node, value = _a.value;
64
- if (node.data.type === graphql_js_tree_1.ValueDefinition.InputValueDefinition) {
65
- if (node.type.fieldType.type === graphql_js_tree_1.Options.required) {
66
- if (!value) {
67
- pushErrors(path, models_1.Errs.REQUIRED);
68
- }
69
- if (node.type.fieldType.nest.type === graphql_js_tree_1.Options.array &&
70
- node.type.fieldType.nest.nest.type === graphql_js_tree_1.Options.required) {
46
+ var graphqlFormUtils = function (schema) {
47
+ var nodes = graphql_js_tree_1.Parser.parse(schema).nodes;
48
+ var validateValue = function (f, path, pushErrors) {
49
+ if (f === null ||
50
+ typeof f === 'string' ||
51
+ typeof f === 'boolean' ||
52
+ typeof f === 'number' ||
53
+ typeof f === 'undefined') {
54
+ return;
55
+ }
56
+ if ('node' in f &&
57
+ typeof f.node === 'object' &&
58
+ f.node !== null &&
59
+ 'args' in f.node &&
60
+ 'data' in f.node &&
61
+ typeof f.node.data === 'object' &&
62
+ !!f.node.data &&
63
+ 'type' in f.node.data &&
64
+ 'directives' in f.node) {
65
+ var _a = f, node = _a.node, value = _a.value;
66
+ console.log("Validating ".concat(node.name), node);
67
+ if (node.data.type === graphql_js_tree_1.ValueDefinition.InputValueDefinition) {
68
+ if (node.type.fieldType.type === graphql_js_tree_1.Options.required &&
69
+ (0, graphql_js_tree_1.getTypeName)(node.type.fieldType) !== graphql_js_tree_1.ScalarTypes.Boolean) {
70
+ if (typeof value === 'undefined' || value === '') {
71
+ pushErrors(path, models_1.Errs.REQUIRED);
72
+ }
71
73
  if (Array.isArray(value)) {
72
74
  for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {
73
75
  var v = value_1[_i];
74
- if (!v) {
75
- pushErrors(path, models_1.Errs.VALUE_IN_ARRAY_REQUIRED);
76
- }
76
+ console.log(v);
77
+ validateValue(v, path, pushErrors);
77
78
  }
78
79
  }
79
80
  }
80
81
  }
81
82
  }
82
- }
83
- if ('value' in f && !!f.value) {
84
- var value = f.value;
85
- if (Array.isArray(value)) {
86
- value.map(function (vv) { return (0, exports.validateValue)(vv, nodes, path, pushErrors); });
87
- return;
83
+ if ('value' in f && !!f.value) {
84
+ var value = f.value;
85
+ if (Array.isArray(value)) {
86
+ value.map(function (vv) { return validateValue(vv, path, pushErrors); });
87
+ return;
88
+ }
89
+ if (typeof value === 'object' && !!value) {
90
+ Object.entries(value).forEach(function (_a) {
91
+ var k = _a[0], v = _a[1];
92
+ return validateValue(v, "".concat(path, ".").concat(k), pushErrors);
93
+ });
94
+ return;
95
+ }
88
96
  }
89
- if (typeof value === 'object' && !!value) {
90
- Object.entries(value).forEach(function (_a) {
91
- var k = _a[0], v = _a[1];
92
- return (0, exports.validateValue)(v, nodes, "".concat(path, ".").concat(k), pushErrors);
97
+ return;
98
+ };
99
+ var validateForm = function (v, errors) {
100
+ var errorDict = {};
101
+ if (!v.forms)
102
+ return errorDict;
103
+ Object.entries(v.forms).forEach(function (_a) {
104
+ var k = _a[0], val = _a[1];
105
+ validateValue(val, k, function (p, err) {
106
+ errorDict[p] = errors[err];
93
107
  });
94
- return;
95
- }
96
- }
97
- return;
98
- };
99
- exports.validateValue = validateValue;
100
- var validateForm = function (v, nodes, errors) {
101
- var errorDict = {};
102
- if (!v.forms)
103
- return errorDict;
104
- Object.entries(v.forms).forEach(function (_a) {
105
- var k = _a[0], val = _a[1];
106
- (0, exports.validateValue)(val, nodes, k, function (p, err) {
107
- errorDict[p] = errors[err];
108
108
  });
109
- });
110
- return errorDict;
111
- };
112
- exports.validateForm = validateForm;
113
- var eraseValue = function (f, nodes) {
114
- var value = f.value, node = f.node;
115
- var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(node.type.fieldType); });
116
- if (!seekNode ||
117
- (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.EnumTypeDefinition ||
118
- (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.ScalarTypeDefinition) {
109
+ return errorDict;
110
+ };
111
+ var eraseValue = function (f) {
112
+ var value = f.value, node = f.node;
113
+ var seekNode = nodes.find(function (n) { return n.name === (0, graphql_js_tree_1.getTypeName)(node.type.fieldType); });
114
+ if (!seekNode ||
115
+ (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.EnumTypeDefinition ||
116
+ (seekNode === null || seekNode === void 0 ? void 0 : seekNode.data.type) === graphql_js_tree_1.TypeDefinition.ScalarTypeDefinition) {
117
+ return __assign(__assign({}, f), { value: undefined });
118
+ }
119
+ if ((seekNode || node.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition) && value) {
120
+ return __assign(__assign({}, f), { value: Object.fromEntries(Object.entries(value).map(function (_a) {
121
+ var k = _a[0], v = _a[1];
122
+ return [k, eraseValue(v)];
123
+ })) });
124
+ }
119
125
  return __assign(__assign({}, f), { value: undefined });
120
- }
121
- if ((seekNode || node.data.type === graphql_js_tree_1.TypeSystemDefinition.FieldDefinition) && value) {
122
- return __assign(__assign({}, f), { value: Object.fromEntries(Object.entries(value).map(function (_a) {
123
- var k = _a[0], v = _a[1];
124
- return [k, (0, exports.eraseValue)(v, nodes)];
125
- })) });
126
- }
127
- return __assign(__assign({}, f), { value: undefined });
128
- };
129
- exports.eraseValue = eraseValue;
130
- var eraseForm = function (v, nodes) {
131
- if (!v.forms)
132
- return v;
133
- var forms = Object.entries(v.forms)
134
- .map(function (_a) {
135
- var k = _a[0], val = _a[1];
136
- return [k, (0, exports.eraseValue)(val, nodes)];
137
- })
138
- .reduce(function (a, _a) {
139
- var _b;
140
- var k = _a[0], val = _a[1];
141
- return (__assign(__assign({}, a), (_b = {}, _b[k] = val, _b)));
142
- }, {});
143
- return __assign(__assign({}, v), { forms: forms });
126
+ };
127
+ var eraseForm = function (v) {
128
+ if (!v.forms)
129
+ return v;
130
+ var forms = Object.entries(v.forms)
131
+ .map(function (_a) {
132
+ var k = _a[0], val = _a[1];
133
+ return [k, eraseValue(val)];
134
+ })
135
+ .reduce(function (a, _a) {
136
+ var _b;
137
+ var k = _a[0], val = _a[1];
138
+ return (__assign(__assign({}, a), (_b = {}, _b[k] = val, _b)));
139
+ }, {});
140
+ return __assign(__assign({}, v), { forms: forms });
141
+ };
142
+ return {
143
+ eraseForm: eraseForm,
144
+ validateForm: validateForm,
145
+ validateValue: validateValue,
146
+ };
144
147
  };
145
- exports.eraseForm = eraseForm;
148
+ exports.graphqlFormUtils = graphqlFormUtils;
146
149
  //# sourceMappingURL=outsideUse.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"outsideUse.js","sourceRoot":"","sources":["../src/outsideUse.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"outsideUse.js","sourceRoot":"","sources":["../src/outsideUse.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "graphql-form",
3
- "version": "0.0.25",
3
+ "version": "0.0.27",
4
4
  "description": "Easy form creation with GraphQL Editor and React",
5
5
  "main": "lib/index.js",
6
6
  "scripts": {
@@ -1,16 +1,19 @@
1
1
  import { formToGql } from '@/FormToCode';
2
2
  import { FormBuilderProps, FormObject } from '@/models';
3
3
  import { Renderer } from '@/renderer';
4
- import { TypeSystemDefinition } from 'graphql-js-tree';
5
- import React from 'react';
4
+ import { Parser, TypeSystemDefinition } from 'graphql-js-tree';
5
+ import React, { useMemo } from 'react';
6
6
 
7
- export const FormBuilder: React.FC<FormBuilderProps> = ({ formFile, onChange, ...props }) => {
7
+ export const FormBuilder: React.FC<FormBuilderProps> = ({ formFile, onChange, schema, ...props }) => {
8
8
  const { widgets = {}, forms = {} } = formFile;
9
9
  const formFields = Object.fromEntries(
10
10
  Object.entries(forms).filter(
11
11
  ([, v]) => !!v.node.args?.length && v.node.data.type === TypeSystemDefinition.FieldDefinition,
12
12
  ),
13
13
  );
14
+ const nodes = useMemo(() => {
15
+ return Parser.parse(schema).nodes;
16
+ }, [schema]);
14
17
  return (
15
18
  <>
16
19
  {Object.keys(formFields).map((key) => {
@@ -18,8 +21,9 @@ export const FormBuilder: React.FC<FormBuilderProps> = ({ formFile, onChange, ..
18
21
  <Renderer
19
22
  {...props}
20
23
  key={key}
24
+ nodes={nodes}
21
25
  changeWidget={(widgetData, path) => {
22
- const query = formToGql({ fields: forms, nodes: props.nodes });
26
+ const query = formToGql({ fields: forms, nodes });
23
27
  onChange(
24
28
  {
25
29
  ...formFile,
@@ -42,7 +46,7 @@ export const FormBuilder: React.FC<FormBuilderProps> = ({ formFile, onChange, ..
42
46
  [key]: changedForm,
43
47
  },
44
48
  };
45
- const query = formToGql({ fields: updatedFile.forms, nodes: props.nodes });
49
+ const query = formToGql({ fields: updatedFile.forms, nodes });
46
50
  onChange(updatedFile, query);
47
51
  }}
48
52
  f={formFields[key].node}
@@ -1,22 +1,26 @@
1
1
  import { formToGql } from '@/FormToCode';
2
2
  import { FormDisplayerProps, FormObject } from '@/models';
3
3
  import { Renderer } from '@/renderer';
4
- import { TypeSystemDefinition } from 'graphql-js-tree';
5
- import React from 'react';
4
+ import { Parser, TypeSystemDefinition } from 'graphql-js-tree';
5
+ import React, { useMemo } from 'react';
6
6
 
7
- export const FormDisplayer: React.FC<FormDisplayerProps> = ({ formFile, onChange, ...props }) => {
7
+ export const FormDisplayer: React.FC<FormDisplayerProps> = ({ formFile, onChange, schema, ...props }) => {
8
8
  const { widgets = {}, forms = {} } = formFile;
9
9
  const formFields = Object.fromEntries(
10
10
  Object.entries(forms).filter(
11
11
  ([, v]) => !!v.node.args?.length && v.node.data.type === TypeSystemDefinition.FieldDefinition,
12
12
  ),
13
13
  );
14
+ const nodes = useMemo(() => {
15
+ return Parser.parse(schema).nodes;
16
+ }, [schema]);
14
17
  return (
15
18
  <>
16
19
  {Object.keys(formFields).map((key) => {
17
20
  return (
18
21
  <Renderer
19
22
  {...props}
23
+ nodes={nodes}
20
24
  key={key}
21
25
  widgets={widgets}
22
26
  changeWidget={() => {
@@ -32,7 +36,7 @@ export const FormDisplayer: React.FC<FormDisplayerProps> = ({ formFile, onChange
32
36
  [key]: changedForm,
33
37
  },
34
38
  };
35
- const query = formToGql({ fields: updatedFile.forms, nodes: props.nodes });
39
+ const query = formToGql({ fields: updatedFile.forms, nodes });
36
40
  onChange(updatedFile, query);
37
41
  }}
38
42
  f={formFields[key].node}
package/src/models.ts CHANGED
@@ -68,17 +68,19 @@ export type FormFile = {
68
68
 
69
69
  export type FormBuilderProps = Omit<
70
70
  PassedFormProps,
71
- 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets'
71
+ 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets' | 'nodes'
72
72
  > & {
73
73
  formFile: FormFile;
74
+ schema: string;
74
75
  onChange: (o: FormFile, query: string) => void;
75
76
  };
76
77
 
77
78
  export type FormDisplayerProps = Omit<
78
79
  PassedFormProps,
79
- 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets'
80
+ 'formObject' | 'onChange' | 'f' | 'currentPath' | 'changeWidget' | 'widgets' | 'nodes'
80
81
  > & {
81
82
  formFile: FormFile;
83
+ schema: string;
82
84
  onChange: (o: FormFile, query: string) => void;
83
85
  };
84
86
 
@@ -2,7 +2,8 @@ import { Errs, FormFile, FormObject, FormValue, PassedFormProps } from '@/models
2
2
  import {
3
3
  getTypeName,
4
4
  Options,
5
- ParserField,
5
+ Parser,
6
+ ScalarTypes,
6
7
  TypeDefinition,
7
8
  TypeSystemDefinition,
8
9
  ValueDefinition,
@@ -37,121 +38,121 @@ export const getErrorFromProps = (props: PassedFormProps) => {
37
38
  return props.errors?.[props.currentPath];
38
39
  };
39
40
 
40
- export const validateValue = (
41
- f: FormValue,
42
- nodes: ParserField[],
43
- path: string,
44
- pushErrors: (path: string, value: Errs) => void,
45
- ) => {
46
- if (
47
- f === null ||
48
- typeof f === 'string' ||
49
- typeof f === 'boolean' ||
50
- typeof f === 'number' ||
51
- typeof f === 'undefined'
52
- ) {
53
- return;
54
- }
55
- if (
56
- 'node' in f &&
57
- typeof f.node === 'object' &&
58
- f.node !== null &&
59
- 'args' in f.node &&
60
- 'data' in f.node &&
61
- typeof f.node.data === 'object' &&
62
- !!f.node.data &&
63
- 'type' in f.node.data &&
64
- 'directives' in f.node
65
- ) {
66
- const { node, value } = f as FormObject;
67
- if (node.data.type === ValueDefinition.InputValueDefinition) {
68
- if (node.type.fieldType.type === Options.required) {
69
- if (!value) {
70
- pushErrors(path, Errs.REQUIRED);
71
- }
41
+ export const graphqlFormUtils = (schema: string) => {
42
+ const nodes = Parser.parse(schema).nodes;
43
+
44
+ const validateValue = (f: FormValue, path: string, pushErrors: (path: string, value: Errs) => void) => {
45
+ if (
46
+ f === null ||
47
+ typeof f === 'string' ||
48
+ typeof f === 'boolean' ||
49
+ typeof f === 'number' ||
50
+ typeof f === 'undefined'
51
+ ) {
52
+ return;
53
+ }
54
+ if (
55
+ 'node' in f &&
56
+ typeof f.node === 'object' &&
57
+ f.node !== null &&
58
+ 'args' in f.node &&
59
+ 'data' in f.node &&
60
+ typeof f.node.data === 'object' &&
61
+ !!f.node.data &&
62
+ 'type' in f.node.data &&
63
+ 'directives' in f.node
64
+ ) {
65
+ const { node, value } = f as FormObject;
66
+ console.log(`Validating ${node.name}`, node);
67
+ if (node.data.type === ValueDefinition.InputValueDefinition) {
72
68
  if (
73
- node.type.fieldType.nest.type === Options.array &&
74
- node.type.fieldType.nest.nest.type === Options.required
69
+ node.type.fieldType.type === Options.required &&
70
+ getTypeName(node.type.fieldType) !== ScalarTypes.Boolean
75
71
  ) {
72
+ if (typeof value === 'undefined' || value === '') {
73
+ pushErrors(path, Errs.REQUIRED);
74
+ }
76
75
  if (Array.isArray(value)) {
77
76
  for (const v of value) {
78
- if (!v) {
79
- pushErrors(path, Errs.VALUE_IN_ARRAY_REQUIRED);
80
- }
77
+ console.log(v);
78
+ validateValue(v, path, pushErrors);
81
79
  }
82
80
  }
83
81
  }
84
82
  }
85
83
  }
86
- }
87
- if ('value' in f && !!f.value) {
88
- const { value } = f;
89
- if (Array.isArray(value)) {
90
- value.map((vv) => validateValue(vv, nodes, path, pushErrors));
91
- return;
92
- }
93
- if (typeof value === 'object' && !!value) {
94
- Object.entries(value).forEach(([k, v]) =>
95
- validateValue(v as FormObject, nodes, `${path}.${k}`, pushErrors),
96
- );
97
- return;
84
+ if ('value' in f && !!f.value) {
85
+ const { value } = f;
86
+ if (Array.isArray(value)) {
87
+ value.map((vv) => validateValue(vv, path, pushErrors));
88
+ return;
89
+ }
90
+ if (typeof value === 'object' && !!value) {
91
+ Object.entries(value).forEach(([k, v]) => validateValue(v as FormObject, `${path}.${k}`, pushErrors));
92
+ return;
93
+ }
98
94
  }
99
- }
100
- return;
101
- };
95
+ return;
96
+ };
102
97
 
103
- export const validateForm = (v: FormFile, nodes: ParserField[], errors: Record<Errs, string>) => {
104
- const errorDict: Record<string, string> = {};
105
- if (!v.forms) return errorDict;
106
- Object.entries(v.forms).forEach(([k, val]) => {
107
- validateValue(val, nodes, k, (p, err) => {
108
- errorDict[p] = errors[err];
98
+ const validateForm = (v: FormFile, errors: Record<Errs, string>) => {
99
+ const errorDict: Record<string, string> = {};
100
+ if (!v.forms) return errorDict;
101
+ Object.entries(v.forms).forEach(([k, val]) => {
102
+ validateValue(val, k, (p, err) => {
103
+ errorDict[p] = errors[err];
104
+ });
109
105
  });
110
- });
111
- return errorDict;
112
- };
106
+ return errorDict;
107
+ };
113
108
 
114
- export const eraseValue = (f: FormObject, nodes: ParserField[]): FormObject => {
115
- const { value, node } = f;
109
+ const eraseValue = (f: FormObject): FormObject => {
110
+ const { value, node } = f;
116
111
 
117
- const seekNode = nodes.find((n) => n.name === getTypeName(node.type.fieldType));
118
- if (
119
- !seekNode ||
120
- seekNode?.data.type === TypeDefinition.EnumTypeDefinition ||
121
- seekNode?.data.type === TypeDefinition.ScalarTypeDefinition
122
- ) {
112
+ const seekNode = nodes.find((n) => n.name === getTypeName(node.type.fieldType));
113
+ if (
114
+ !seekNode ||
115
+ seekNode?.data.type === TypeDefinition.EnumTypeDefinition ||
116
+ seekNode?.data.type === TypeDefinition.ScalarTypeDefinition
117
+ ) {
118
+ return {
119
+ ...f,
120
+ value: undefined,
121
+ };
122
+ }
123
+ if ((seekNode || node.data.type === TypeSystemDefinition.FieldDefinition) && value) {
124
+ return {
125
+ ...f,
126
+ value: Object.fromEntries(Object.entries(value).map(([k, v]) => [k, eraseValue(v as FormObject)])),
127
+ };
128
+ }
123
129
  return {
124
130
  ...f,
125
131
  value: undefined,
126
132
  };
127
- }
128
- if ((seekNode || node.data.type === TypeSystemDefinition.FieldDefinition) && value) {
133
+ };
134
+
135
+ const eraseForm = (v: FormFile) => {
136
+ if (!v.forms) return v;
137
+ const forms = Object.entries(v.forms)
138
+ .map(([k, val]) => {
139
+ return [k, eraseValue(val)] as const;
140
+ })
141
+ .reduce(
142
+ (a, [k, val]) => ({
143
+ ...a,
144
+ [k]: val,
145
+ }),
146
+ {} as FormFile['forms'],
147
+ );
129
148
  return {
130
- ...f,
131
- value: Object.fromEntries(Object.entries(value).map(([k, v]) => [k, eraseValue(v as FormObject, nodes)])),
149
+ ...v,
150
+ forms,
132
151
  };
133
- }
134
- return {
135
- ...f,
136
- value: undefined,
137
152
  };
138
- };
139
-
140
- export const eraseForm = (v: FormFile, nodes: ParserField[]) => {
141
- if (!v.forms) return v;
142
- const forms = Object.entries(v.forms)
143
- .map(([k, val]) => {
144
- return [k, eraseValue(val, nodes)] as const;
145
- })
146
- .reduce(
147
- (a, [k, val]) => ({
148
- ...a,
149
- [k]: val,
150
- }),
151
- {} as FormFile['forms'],
152
- );
153
153
  return {
154
- ...v,
155
- forms,
154
+ eraseForm,
155
+ validateForm,
156
+ validateValue,
156
157
  };
157
158
  };