From d1bf931bdc5a151364267bdbcb1f19d29a69bf4b Mon Sep 17 00:00:00 2001 From: Nicolas Perriault Date: Thu, 10 Nov 2016 13:50:25 +0100 Subject: [PATCH 1/2] Fix #385: Avoid dynamic requires. --- src/components/fields/index.js | 22 +++++++++++++++++ src/components/widgets/index.js | 40 +++++++++++++++++++++++++++++++ src/utils.js | 42 ++------------------------------- 3 files changed, 64 insertions(+), 40 deletions(-) create mode 100644 src/components/fields/index.js create mode 100644 src/components/widgets/index.js diff --git a/src/components/fields/index.js b/src/components/fields/index.js new file mode 100644 index 0000000000..87c76e723f --- /dev/null +++ b/src/components/fields/index.js @@ -0,0 +1,22 @@ +import ArrayField from "./ArrayField"; +import BooleanField from "./BooleanField"; +import DescriptionField from "./DescriptionField"; +import NumberField from "./NumberField"; +import ObjectField from "./ObjectField"; +import SchemaField from "./SchemaField"; +import StringField from "./StringField"; +import TitleField from "./TitleField"; +import UnsupportedField from "./UnsupportedField"; + + +export default { + ArrayField, + BooleanField, + DescriptionField, + NumberField, + ObjectField, + SchemaField, + StringField, + TitleField, + UnsupportedField, +}; diff --git a/src/components/widgets/index.js b/src/components/widgets/index.js new file mode 100644 index 0000000000..64006d5bc1 --- /dev/null +++ b/src/components/widgets/index.js @@ -0,0 +1,40 @@ +import AltDateWidget from "./AltDateWidget"; +import AltDateTimeWidget from "./AltDateTimeWidget"; +import CheckboxWidget from "./CheckboxWidget"; +import CheckboxesWidget from "./CheckboxesWidget"; +import ColorWidget from "./ColorWidget"; +import DateWidget from "./DateWidget"; +import DateTimeWidget from "./DateTimeWidget"; +import EmailWidget from "./EmailWidget"; +import FileWidget from "./FileWidget"; +import HiddenWidget from "./HiddenWidget"; +import PasswordWidget from "./PasswordWidget"; +import RadioWidget from "./RadioWidget"; +import RangeWidget from "./RangeWidget"; +import SelectWidget from "./SelectWidget"; +import TextareaWidget from "./TextareaWidget"; +import TextWidget from "./TextWidget"; +import URLWidget from "./URLWidget"; +import UpDownWidget from "./UpDownWidget"; + + +export default { + PasswordWidget, + RadioWidget, + UpDownWidget, + RangeWidget, + SelectWidget, + TextWidget, + DateWidget, + DateTimeWidget, + AltDateWidget, + AltDateTimeWidget, + EmailWidget, + URLWidget, + TextareaWidget, + HiddenWidget, + ColorWidget, + FileWidget, + CheckboxWidget, + CheckboxesWidget, +}; diff --git a/src/utils.js b/src/utils.js index 2b0bfa29f9..08c048459c 100644 --- a/src/utils.js +++ b/src/utils.js @@ -1,5 +1,4 @@ import React from "react"; - import "setimmediate"; @@ -55,46 +54,9 @@ const widgetMap = { }; export function getDefaultRegistry() { - const load = (prefix, arr) => arr.reduce((obj, comp) => { - obj[comp] = require(`./components/${prefix}/${comp}`).default; - return obj; - }, {}); - - const fields = load("fields", [ - "SchemaField", - "ArrayField", - "BooleanField", - "ObjectField", - "StringField", - "NumberField", - "TitleField", - "DescriptionField", - ]); - - const widgets = load("widgets", [ - "PasswordWidget", - "RadioWidget", - "UpDownWidget", - "RangeWidget", - "SelectWidget", - "TextWidget", - "DateWidget", - "DateTimeWidget", - "AltDateWidget", - "AltDateTimeWidget", - "EmailWidget", - "URLWidget", - "TextareaWidget", - "HiddenWidget", - "ColorWidget", - "FileWidget", - "CheckboxWidget", - "CheckboxesWidget", - ]); - return { - fields, - widgets, + fields: require("./components/fields").default, + widgets: require("./components/widgets").default, definitions: {}, formContext: {} }; From d2b379261122e5dd09bbc2704fe5211dc33f6057 Mon Sep 17 00:00:00 2001 From: Nicolas Perriault Date: Thu, 10 Nov 2016 14:09:14 +0100 Subject: [PATCH 2/2] Avoid requiring on every call. --- src/utils.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/utils.js b/src/utils.js index 08c048459c..96a94db26a 100644 --- a/src/utils.js +++ b/src/utils.js @@ -53,13 +53,15 @@ const widgetMap = { } }; +const defaultRegistry = { + fields: require("./components/fields").default, + widgets: require("./components/widgets").default, + definitions: {}, + formContext: {} +}; + export function getDefaultRegistry() { - return { - fields: require("./components/fields").default, - widgets: require("./components/widgets").default, - definitions: {}, - formContext: {} - }; + return defaultRegistry; } export function defaultFieldValue(formData, schema) {