@nolwenture/formik-jsonschema-form 0.1.0 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. package/package.json +88 -86
  2. package/src/Form.d.ts +4 -0
  3. package/src/Form.js +52 -0
  4. package/src/Form.stories.d.ts +11 -0
  5. package/src/Form.stories.js +135 -0
  6. package/src/Form.test.d.ts +1 -0
  7. package/src/Form.test.js +9 -0
  8. package/src/FormEditor.d.ts +8 -0
  9. package/src/FormEditor.js +74 -0
  10. package/src/FormEditor.stories.d.ts +5 -0
  11. package/src/FormEditor.stories.js +22 -0
  12. package/src/_sampleData.d.ts +10 -0
  13. package/src/_sampleData.js +262 -0
  14. package/src/fields/AnyField.d.ts +3 -0
  15. package/src/fields/AnyField.js +34 -0
  16. package/src/fields/ArrayField.d.ts +3 -0
  17. package/src/fields/ArrayField.js +119 -0
  18. package/src/fields/BooleanField.d.ts +3 -0
  19. package/src/fields/BooleanField.js +22 -0
  20. package/src/fields/DateField.d.ts +3 -0
  21. package/src/fields/DateField.js +22 -0
  22. package/src/fields/NullField.d.ts +3 -0
  23. package/src/fields/NullField.js +19 -0
  24. package/src/fields/NumberField.d.ts +3 -0
  25. package/src/fields/NumberField.js +17 -0
  26. package/src/fields/ObjectField.d.ts +3 -0
  27. package/src/fields/ObjectField.js +56 -0
  28. package/src/fields/SchemaField.d.ts +3 -0
  29. package/src/fields/SchemaField.js +39 -0
  30. package/src/fields/StringField.d.ts +3 -0
  31. package/src/fields/StringField.js +60 -0
  32. package/src/fields/{index.ts → index.d.ts} +0 -0
  33. package/src/fields/index.js +9 -0
  34. package/src/fields/types.d.ts +10 -0
  35. package/src/fields/types.js +10 -0
  36. package/src/formEditorSchemas.d.ts +3 -0
  37. package/src/formEditorSchemas.js +36 -0
  38. package/src/{index.tsx → index.d.ts} +0 -0
  39. package/src/index.js +5 -0
  40. package/src/setupTests.d.ts +1 -0
  41. package/src/{setupTests.ts → setupTests.js} +0 -0
  42. package/src/styledComponents.d.ts +26 -0
  43. package/src/styledComponents.js +89 -0
  44. package/src/templates/ArrayFieldTemplate.d.ts +3 -0
  45. package/src/templates/ArrayFieldTemplate.js +27 -0
  46. package/src/templates/FieldTemplate.d.ts +3 -0
  47. package/src/templates/FieldTemplate.js +27 -0
  48. package/src/templates/ObjectFieldTemplate.d.ts +3 -0
  49. package/src/templates/ObjectFieldTemplate.js +11 -0
  50. package/src/templates/{index.ts → index.d.ts} +0 -0
  51. package/src/templates/index.js +3 -0
  52. package/src/types.d.ts +168 -0
  53. package/src/types.js +14 -0
  54. package/src/utils.d.ts +22 -0
  55. package/src/utils.js +108 -0
  56. package/.storybook/main.js +0 -13
  57. package/.storybook/preview.js +0 -9
  58. package/README.md +0 -46
  59. package/src/Form.stories.tsx +0 -124
  60. package/src/Form.test.tsx +0 -10
  61. package/src/Form.tsx +0 -71
  62. package/src/FormEditor.stories.tsx +0 -17
  63. package/src/FormEditor.tsx +0 -53
  64. package/src/_sampleData.ts +0 -273
  65. package/src/fields/AnyField.tsx +0 -35
  66. package/src/fields/ArrayField.tsx +0 -177
  67. package/src/fields/BooleanField.tsx +0 -23
  68. package/src/fields/DateField.tsx +0 -20
  69. package/src/fields/NullField.tsx +0 -12
  70. package/src/fields/NumberField.tsx +0 -14
  71. package/src/fields/ObjectField.tsx +0 -68
  72. package/src/fields/SchemaField.tsx +0 -37
  73. package/src/fields/StringField.tsx +0 -89
  74. package/src/fields/types.tsx +0 -10
  75. package/src/formEditorSchemas.ts +0 -40
  76. package/src/styledComponents.tsx +0 -107
  77. package/src/templates/ArrayFieldTemplate.tsx +0 -46
  78. package/src/templates/FieldTemplate.tsx +0 -46
  79. package/src/templates/ObjectFieldTemplate.tsx +0 -22
  80. package/src/types.ts +0 -260
  81. package/src/utils.ts +0 -124
  82. package/tsconfig.json +0 -26
package/package.json CHANGED
@@ -1,90 +1,92 @@
1
1
  {
2
- "name": "@nolwenture/formik-jsonschema-form",
3
- "version": "0.1.0",
4
- "description": "Formik form generation from json schema",
5
- "author": "Antti Vikman <antti.vikman@nolwenture.com>",
6
- "contributors": [
7
- "Antti Vikman <antti.vikman@nolwenture.com>"
8
- ],
9
- "license": "MIT",
10
- "repository": {
11
- "type": "git",
12
- "url": "git+https://github.com/nolwenture/formik-jsonschema-form.git"
13
- },
14
- "bugs": {
15
- "url": "https://github.com/nolwenture/formik-jsonschema-form/issues"
16
- },
17
- "homepage": "https://github.com/nolwenture/formik-jsonschema-form#readme",
18
- "keywords": [
19
- "formik",
20
- "jsonschema"
21
- ],
22
- "dependencies": {
23
- "@testing-library/jest-dom": "^5.16.4",
24
- "@testing-library/react": "^13.3.0",
25
- "@testing-library/user-event": "^13.5.0",
26
- "@types/jest": "^27.5.2",
27
- "@types/node": "^16.11.45",
28
- "@types/react": "^18.0.15",
29
- "@types/react-dom": "^18.0.6",
30
- "@types/styled-components": "^5.1.25",
31
- "formik": "^2.2.9",
32
- "json-schema": "^0.4.0",
33
- "react": "^18.2.0",
34
- "react-dom": "^18.2.0",
35
- "react-scripts": "5.0.1",
36
- "styled-components": "^5.3.5",
37
- "typescript": "^4.7.4",
38
- "web-vitals": "^2.1.4"
39
- },
40
- "scripts": {
41
- "start": "react-scripts start",
42
- "build": "react-scripts build",
43
- "test": "react-scripts test",
44
- "eject": "react-scripts eject",
45
- "storybook": "start-storybook -p 6006",
46
- "build-storybook": "build-storybook"
47
- },
48
- "eslintConfig": {
49
- "extends": [
50
- "react-app",
51
- "react-app/jest"
2
+ "name": "@nolwenture/formik-jsonschema-form",
3
+ "version": "0.1.1",
4
+ "description": "Formik form generation from json schema",
5
+ "author": "Antti Vikman <antti.vikman@nolwenture.com>",
6
+ "contributors": [
7
+ "Antti Vikman <antti.vikman@nolwenture.com>",
8
+ "Niko Lintunen <niko.lintunen@nolwenture.com>"
52
9
  ],
53
- "overrides": [
54
- {
55
- "files": [
56
- "**/*.stories.*"
57
- ],
58
- "rules": {
59
- "import/no-anonymous-default-export": "off"
60
- }
61
- }
62
- ]
63
- },
64
- "browserslist": {
65
- "production": [
66
- ">0.2%",
67
- "not dead",
68
- "not op_mini all"
10
+ "license": "MIT",
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git+https://github.com/nolwenture/formik-jsonschema-form.git"
14
+ },
15
+ "bugs": {
16
+ "url": "https://github.com/nolwenture/formik-jsonschema-form/issues"
17
+ },
18
+ "homepage": "https://github.com/nolwenture/formik-jsonschema-form#readme",
19
+ "keywords": [
20
+ "formik",
21
+ "jsonschema"
69
22
  ],
70
- "development": [
71
- "last 1 chrome version",
72
- "last 1 firefox version",
73
- "last 1 safari version"
74
- ]
75
- },
76
- "devDependencies": {
77
- "@storybook/addon-essentials": "^6.5.9",
78
- "@storybook/addon-interactions": "^6.5.9",
79
- "@storybook/addon-links": "^6.5.9",
80
- "@storybook/builder-webpack5": "^6.5.9",
81
- "@storybook/manager-webpack5": "^6.5.9",
82
- "@storybook/node-logger": "^6.5.9",
83
- "@storybook/preset-create-react-app": "^4.1.2",
84
- "@storybook/react": "^6.5.9",
85
- "@storybook/testing-library": "^0.0.13",
86
- "babel-plugin-named-exports-order": "^0.0.2",
87
- "prop-types": "^15.8.1",
88
- "webpack": "^5.73.0"
89
- }
23
+ "dependencies": {
24
+ "@testing-library/jest-dom": "^5.16.4",
25
+ "@testing-library/react": "^13.3.0",
26
+ "@testing-library/user-event": "^13.5.0",
27
+ "@types/jest": "^27.5.2",
28
+ "@types/node": "^16.11.45",
29
+ "@types/react": "^18.0.15",
30
+ "@types/react-dom": "^18.0.6",
31
+ "@types/styled-components": "^5.1.25",
32
+ "formik": "^2.2.9",
33
+ "json-schema": "^0.4.0",
34
+ "react": "^18.2.0",
35
+ "react-dom": "^18.2.0",
36
+ "react-scripts": "5.0.1",
37
+ "styled-components": "^5.3.5",
38
+ "typescript": "^4.7.4",
39
+ "web-vitals": "^2.1.4"
40
+ },
41
+ "scripts": {
42
+ "start": "react-scripts start",
43
+ "build": "tsc --build",
44
+ "clean": "tsc --build --clean",
45
+ "test": "react-scripts test",
46
+ "eject": "react-scripts eject",
47
+ "storybook": "start-storybook -p 6006",
48
+ "build-storybook": "build-storybook"
49
+ },
50
+ "eslintConfig": {
51
+ "extends": [
52
+ "react-app",
53
+ "react-app/jest"
54
+ ],
55
+ "overrides": [
56
+ {
57
+ "files": [
58
+ "**/*.stories.*"
59
+ ],
60
+ "rules": {
61
+ "import/no-anonymous-default-export": "off"
62
+ }
63
+ }
64
+ ]
65
+ },
66
+ "browserslist": {
67
+ "production": [
68
+ ">0.2%",
69
+ "not dead",
70
+ "not op_mini all"
71
+ ],
72
+ "development": [
73
+ "last 1 chrome version",
74
+ "last 1 firefox version",
75
+ "last 1 safari version"
76
+ ]
77
+ },
78
+ "devDependencies": {
79
+ "@storybook/addon-essentials": "^6.5.15",
80
+ "@storybook/addon-interactions": "^6.5.15",
81
+ "@storybook/addon-links": "^6.5.15",
82
+ "@storybook/builder-webpack5": "^6.5.15",
83
+ "@storybook/manager-webpack5": "^6.5.15",
84
+ "@storybook/node-logger": "^6.5.15",
85
+ "@storybook/preset-create-react-app": "^4.1.2",
86
+ "@storybook/react": "^6.5.15",
87
+ "@storybook/testing-library": "^0.0.13",
88
+ "babel-plugin-named-exports-order": "^0.0.2",
89
+ "prop-types": "^15.8.1",
90
+ "webpack": "^5.73.0"
91
+ }
90
92
  }
package/src/Form.d.ts ADDED
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { FormProps, FormRegistryContextValue } from "./types";
3
+ export declare const FormRegistry: React.Context<FormRegistryContextValue>;
4
+ export declare function Form<T>(props: FormProps<T>): JSX.Element;
package/src/Form.js ADDED
@@ -0,0 +1,52 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
+ import React from "react";
14
+ import { useFormikContext } from "formik";
15
+ import * as defaultComponents from "./styledComponents";
16
+ import { warnFromUnsupportedKeys } from "./utils";
17
+ import * as defaultFields from "./fields";
18
+ import * as defaultTemplates from "./templates";
19
+ export var FormRegistry = React.createContext({
20
+ fields: defaultFields,
21
+ templates: defaultTemplates,
22
+ components: defaultComponents,
23
+ definitions: {},
24
+ formContext: {},
25
+ useItemsAsAdditionalItems: false,
26
+ });
27
+ export function Form(props) {
28
+ warnFromUnsupportedKeys("Form", props, [
29
+ "schema",
30
+ "onSubmit",
31
+ "uiSchema",
32
+ "className",
33
+ "formData",
34
+ "className",
35
+ "children",
36
+ "fields",
37
+ "formContext",
38
+ ]);
39
+ var isSubmitting = useFormikContext().isSubmitting;
40
+ var schema = props.schema, _a = props.uiSchema, uiSchema = _a === void 0 ? {} : _a, className = props.className, children = props.children, _b = props.fields, fields = _b === void 0 ? {} : _b, _c = props.templates, templates = _c === void 0 ? {} : _c, _d = props.components, components = _d === void 0 ? {} : _d, _e = props.formContext, formContext = _e === void 0 ? {} : _e, _f = props.useItemsAsAdditionalItems, useItemsAsAdditionalItems = _f === void 0 ? false : _f;
41
+ var registry = {
42
+ fields: __assign(__assign({}, defaultFields), fields),
43
+ templates: __assign(__assign({}, defaultTemplates), templates),
44
+ components: __assign(__assign({}, defaultComponents), components),
45
+ definitions: {},
46
+ formContext: formContext,
47
+ useItemsAsAdditionalItems: useItemsAsAdditionalItems,
48
+ };
49
+ var _g = registry.components, FormEl = _g.Form, FormButton = _g.FormButton, FormButtonWrapper = _g.FormButtonWrapper;
50
+ var _SchemaField = registry.fields.SchemaField;
51
+ return (_jsx(FormRegistry.Provider, __assign({ value: registry }, { children: _jsxs(FormEl, __assign({ className: className }, { children: [_jsx(_SchemaField, { name: "", schema: schema, uiSchema: uiSchema }), children ? (children) : (_jsx(FormButtonWrapper, { children: _jsx(FormButton, __assign({ type: "submit", disabled: isSubmitting }, { children: "Send" })) }))] })) })));
52
+ }
@@ -0,0 +1,11 @@
1
+ /// <reference types="react" />
2
+ import { ComponentStory, ComponentMeta } from "@storybook/react";
3
+ import { Form } from "./";
4
+ declare const _default: ComponentMeta<typeof Form>;
5
+ export default _default;
6
+ export declare const Simple: ComponentStory<typeof Form>;
7
+ export declare const WithUiSchema: ComponentStory<typeof Form>;
8
+ export declare const CompleteSchema: ComponentStory<typeof Form>;
9
+ export declare const StrictlyTyped: () => JSX.Element;
10
+ export declare const StylesCustomized: () => JSX.Element;
11
+ export declare const WithGeneratedSchema: ComponentStory<typeof Form>;
@@ -0,0 +1,135 @@
1
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
2
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
3
+ return cooked;
4
+ };
5
+ var __assign = (this && this.__assign) || function () {
6
+ __assign = Object.assign || function(t) {
7
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
8
+ s = arguments[i];
9
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
10
+ t[p] = s[p];
11
+ }
12
+ return t;
13
+ };
14
+ return __assign.apply(this, arguments);
15
+ };
16
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
17
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
18
+ return new (P || (P = Promise))(function (resolve, reject) {
19
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
22
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
23
+ });
24
+ };
25
+ var __generator = (this && this.__generator) || function (thisArg, body) {
26
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
27
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
28
+ function verb(n) { return function (v) { return step([n, v]); }; }
29
+ function step(op) {
30
+ if (f) throw new TypeError("Generator is already executing.");
31
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
32
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
33
+ if (y = 0, t) op = [op[0] & 2, t.value];
34
+ switch (op[0]) {
35
+ case 0: case 1: t = op; break;
36
+ case 4: _.label++; return { value: op[1], done: false };
37
+ case 5: _.label++; y = op[1]; op = [0]; continue;
38
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
39
+ default:
40
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
41
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
42
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
43
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
44
+ if (t[2]) _.ops.pop();
45
+ _.trys.pop(); continue;
46
+ }
47
+ op = body.call(thisArg, _);
48
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
49
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
50
+ }
51
+ };
52
+ import { jsx as _jsx } from "react/jsx-runtime";
53
+ import { action } from "@storybook/addon-actions";
54
+ import styled from "styled-components";
55
+ import { Formik, useFormikContext } from "formik";
56
+ import { completeSchema, completeUiSchema, simpleSchema, simpleUiSchema, generatedSchema, } from "./_sampleData";
57
+ import { Form, styledComponents } from "./";
58
+ export default {
59
+ title: "Form",
60
+ component: Form,
61
+ // More on argTypes: https://storybook.js.org/docs/react/api/argtypes
62
+ argTypes: {
63
+ schema: { control: { type: "object" } },
64
+ uiSchema: { control: { type: "object" } },
65
+ },
66
+ };
67
+ var Template = function (args) { return (_jsx(Formik, __assign({ initialValues: {}, onSubmit: function (values, formikHelpers) { return __awaiter(void 0, void 0, void 0, function () {
68
+ return __generator(this, function (_a) {
69
+ action("onSubmit(_, formHelper)")(formikHelpers);
70
+ action("onSubmit(values)")(values);
71
+ formikHelpers.setSubmitting(false);
72
+ return [2 /*return*/];
73
+ });
74
+ }); } }, { children: _jsx(Form, __assign({}, args)) }))); };
75
+ export var Simple = Template.bind({});
76
+ Simple.args = {
77
+ schema: simpleSchema,
78
+ };
79
+ export var WithUiSchema = Template.bind({});
80
+ WithUiSchema.args = {
81
+ schema: simpleSchema,
82
+ uiSchema: simpleUiSchema,
83
+ };
84
+ export var CompleteSchema = Template.bind({});
85
+ CompleteSchema.args = {
86
+ schema: completeSchema,
87
+ uiSchema: completeUiSchema,
88
+ };
89
+ export var StrictlyTyped = function () {
90
+ return (_jsx(Formik, __assign({ initialValues: { firstName: "", lastName: "" }, onSubmit: function (values, formikHelpers) { return __awaiter(void 0, void 0, void 0, function () {
91
+ return __generator(this, function (_a) {
92
+ action("onSubmit(_, formHelper)")(formikHelpers);
93
+ action("onSubmit(values)")(values);
94
+ formikHelpers.setSubmitting(false);
95
+ return [2 /*return*/];
96
+ });
97
+ }); } }, { children: _jsx(Form, { schema: simpleSchema }) })));
98
+ };
99
+ /*** CUSTOMIZATION ***/
100
+ var CustomizedForm = styled(Form)(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n ", " {\n color: red;\n }\n"], ["\n ", " {\n color: red;\n }\n"])), styledComponents.FieldTitle);
101
+ var CustomizedFieldWrapper = styled.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n outline: 2px solid\n ", ";\n"], ["\n outline: 2px solid\n ", ";\n"])), function (props) { return (props.title === "ABC" ? "blue" : "transparent"); });
102
+ var CustomizedErrorMessage = function (props) {
103
+ var name = props.name;
104
+ var errors = useFormikContext().errors;
105
+ var error = errors[name];
106
+ return error ? _jsx("p", { children: error }) : _jsx("p", { children: "Hurray! No errors" });
107
+ };
108
+ export var StylesCustomized = function () {
109
+ return (_jsx(Formik, __assign({ initialValues: {}, onSubmit: function (values, formikHelpers) { return __awaiter(void 0, void 0, void 0, function () {
110
+ return __generator(this, function (_a) {
111
+ action("onSubmit(_, formHelper)")(formikHelpers);
112
+ action("onSubmit(values)")(values);
113
+ formikHelpers.setSubmitting(false);
114
+ return [2 /*return*/];
115
+ });
116
+ }); } }, { children: _jsx(CustomizedForm, { schema: simpleSchema, uiSchema: {
117
+ firstName: {
118
+ props: {
119
+ wrapper: {
120
+ title: "ABC",
121
+ },
122
+ },
123
+ },
124
+ }, components: {
125
+ FieldWrapper: CustomizedFieldWrapper,
126
+ ErrorMessage: CustomizedErrorMessage,
127
+ } }) })));
128
+ };
129
+ export var WithGeneratedSchema = Template.bind({});
130
+ WithGeneratedSchema.args = {
131
+ schema: generatedSchema,
132
+ uiSchema: {},
133
+ useItemsAsAdditionalItems: true,
134
+ };
135
+ var templateObject_1, templateObject_2;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { render, screen } from "@testing-library/react";
3
+ import { Form } from "./Form";
4
+ import { simpleSchema } from "./_sampleData";
5
+ test("renders title", function () {
6
+ render(_jsx(Form, { schema: simpleSchema }));
7
+ var titleElement = screen.getByText(/TITLE/i);
8
+ expect(titleElement).toBeInTheDocument();
9
+ });
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ import { Schema, UiSchema } from "./types";
3
+ export type FormEditorProps = {};
4
+ export type FormEditorValues = {
5
+ schema: Schema;
6
+ uiSchema: UiSchema;
7
+ };
8
+ export declare function FormEditor(props: FormEditorProps): JSX.Element;
@@ -0,0 +1,74 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
13
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14
+ return new (P || (P = Promise))(function (resolve, reject) {
15
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
16
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
18
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
19
+ });
20
+ };
21
+ var __generator = (this && this.__generator) || function (thisArg, body) {
22
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
23
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
24
+ function verb(n) { return function (v) { return step([n, v]); }; }
25
+ function step(op) {
26
+ if (f) throw new TypeError("Generator is already executing.");
27
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
28
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
29
+ if (y = 0, t) op = [op[0] & 2, t.value];
30
+ switch (op[0]) {
31
+ case 0: case 1: t = op; break;
32
+ case 4: _.label++; return { value: op[1], done: false };
33
+ case 5: _.label++; y = op[1]; op = [0]; continue;
34
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
35
+ default:
36
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
37
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
38
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
39
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
40
+ if (t[2]) _.ops.pop();
41
+ _.trys.pop(); continue;
42
+ }
43
+ op = body.call(thisArg, _);
44
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
45
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
46
+ }
47
+ };
48
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
49
+ import { Formik } from "formik";
50
+ import { useEffect, useState } from "react";
51
+ import { Form } from "./Form";
52
+ import * as formEditorSchemas from "./formEditorSchemas";
53
+ export function FormEditor(props) {
54
+ var _this = this;
55
+ var _a = useState({
56
+ schema: {},
57
+ uiSchema: {},
58
+ }), editorGeneratedSchemas = _a[0], setEditorGeneratedSchemas = _a[1];
59
+ useEffect(function () { return console.log(editorGeneratedSchemas); }, [editorGeneratedSchemas]);
60
+ return (_jsxs("div", __assign({ style: { display: "flex", justifyContent: "space-between" } }, { children: [_jsxs("div", { children: [_jsx("h1", { children: "Editor" }), _jsx(Formik, __assign({ initialValues: { schema: {}, uiSchema: {} }, onSubmit: function (values, formikHelpers) { return __awaiter(_this, void 0, void 0, function () {
61
+ return __generator(this, function (_a) {
62
+ setEditorGeneratedSchemas(values);
63
+ formikHelpers.setSubmitting(false);
64
+ return [2 /*return*/];
65
+ });
66
+ }); } }, { children: _jsx(Form, __assign({}, formEditorSchemas)) }))] }), _jsxs("div", { children: [_jsx("h1", { children: "Preview" }), _jsx(Formik, __assign({ initialValues: {}, onSubmit: function (values, formikHelpers) { return __awaiter(_this, void 0, void 0, function () {
67
+ return __generator(this, function (_a) {
68
+ // action("onSubmit(_, formHelper)")(formikHelpers);
69
+ // action("onSubmit(values)")(values);
70
+ formikHelpers.setSubmitting(false);
71
+ return [2 /*return*/];
72
+ });
73
+ }); } }, { children: _jsx(Form, __assign({}, editorGeneratedSchemas)) }))] })] })));
74
+ }
@@ -0,0 +1,5 @@
1
+ import { ComponentStory, ComponentMeta } from "@storybook/react";
2
+ import { FormEditor } from "./FormEditor";
3
+ declare const _default: ComponentMeta<typeof FormEditor>;
4
+ export default _default;
5
+ export declare const Default: ComponentStory<typeof FormEditor>;
@@ -0,0 +1,22 @@
1
+ var __assign = (this && this.__assign) || function () {
2
+ __assign = Object.assign || function(t) {
3
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
4
+ s = arguments[i];
5
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
6
+ t[p] = s[p];
7
+ }
8
+ return t;
9
+ };
10
+ return __assign.apply(this, arguments);
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ import { FormEditor } from "./FormEditor";
14
+ export default {
15
+ title: "FormEditor",
16
+ component: FormEditor,
17
+ // More on argTypes: https://storybook.js.org/docs/react/api/argtypes
18
+ argTypes: {},
19
+ };
20
+ var Template = function (args) { return (_jsx(FormEditor, __assign({}, args))); };
21
+ export var Default = Template.bind({});
22
+ Default.args = {};
@@ -0,0 +1,10 @@
1
+ import { Schema, UiSchema } from "./types";
2
+ export type SimpleFormDataType = {
3
+ firstName: string;
4
+ lastName: string;
5
+ };
6
+ export declare const simpleSchema: Schema;
7
+ export declare const simpleUiSchema: UiSchema;
8
+ export declare const completeSchema: Schema;
9
+ export declare const completeUiSchema: UiSchema;
10
+ export declare const generatedSchema: Schema;