@zohodesk/react-cli 0.0.1-beta.176 → 0.0.1-beta.178
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.
- package/.eslintignore +7 -7
- package/.eslintrc.js +180 -180
- package/.prettierrc +6 -6
- package/{CHANGELOG.md → CHANGELOG-fz.md} +0 -0
- package/Changelog.md +1019 -0
- package/README.md +1137 -1018
- package/bin/cli.js +482 -482
- package/docs/CustomChunks.md +26 -26
- package/docs/DevServerPort.md +39 -0
- package/docs/DevStart.md +18 -18
- package/docs/HoverActive.md +12 -12
- package/docs/InstallNode.md +28 -28
- package/docs/SelectorWeight.md +6 -6
- package/docs/TODOS.md +10 -10
- package/docs/ValueReplacer.md +60 -60
- package/docs/VariableConversion.md +724 -710
- package/docs/warnings_while_install.txt +35 -35
- package/files/eslintrc.js +62 -62
- package/files/prettierrc.js +3 -3
- package/lib/configs/resolvers.js +40 -0
- package/lib/configs/webpack.css.umd.config.js +4 -4
- package/lib/configs/webpack.dev.config.js +4 -11
- package/lib/configs/webpack.docs.config.js +4 -11
- package/lib/configs/webpack.impact.config.js +5 -7
- package/lib/configs/webpack.prod.config.js +9 -13
- package/lib/constants.js +31 -0
- package/lib/loaderUtils/configsAssetsLoaders.js +36 -36
- package/lib/loaders/workerLoader.js +9 -9
- package/lib/pluginUtils/getDevPlugins.js +5 -5
- package/lib/pluginUtils/getProdPlugins.js +5 -5
- package/lib/plugins/EFCPlugin.md +6 -6
- package/lib/plugins/I18NInjectIntoIndexPlugin.js +4 -4
- package/lib/plugins/I18nSplitPlugin/I18nDownlodLogic.js +38 -38
- package/lib/plugins/I18nSplitPlugin/I18nFilesEmitter.js +30 -30
- package/lib/plugins/I18nSplitPlugin/I18nKeysIdentifer.js +8 -8
- package/lib/plugins/I18nSplitPlugin/I18nSplit.md +95 -95
- package/lib/plugins/I18nSplitPlugin/README.md +25 -25
- package/lib/plugins/I18nSplitPlugin/index.js +57 -57
- package/lib/plugins/ResourceHintsPlugin.js +17 -17
- package/lib/plugins/RtlSplitPlugin/RtlCssPlugin.js +6 -6
- package/lib/plugins/RtlSplitPlugin/RtrSplit.md +30 -30
- package/lib/plugins/ServiceWorkerPlugin.js +9 -9
- package/lib/plugins/TPHashMappingPlugin.js +4 -4
- package/lib/plugins/VariableConversionCollector.js +198 -98
- package/lib/postcss-plugins/RTLSplitPlugin.js +10 -10
- package/lib/postcss-plugins/__test__/test1Input.css +38 -38
- package/lib/postcss-plugins/__test__/test1Output.css +38 -38
- package/lib/postcss-plugins/hoverActivePlugin.js +3 -3
- package/lib/postcss-plugins/variableModificationPlugin/ErrorHandler.js +4 -2
- package/lib/postcss-plugins/variableModificationPlugin/index.js +2 -1
- package/lib/schemas/index.js +8 -0
- package/lib/servers/docsServerCore.js +13 -12
- package/lib/servers/httpsOptions.js +40 -9
- package/lib/servers/nowatchserver.js +12 -11
- package/lib/servers/server.js +23 -20
- package/lib/sh/pre-commit.sh +34 -34
- package/lib/sh/reportPublish.sh +45 -45
- package/lib/utils/buildstats.html +148 -148
- package/lib/utils/cssURLReplacer.js +30 -43
- package/lib/utils/getFileType.js +49 -0
- package/lib/utils/getOptions.js +13 -13
- package/lib/utils/resultSchema.json +73 -73
- package/npm8.md +9 -9
- package/package.json +121 -146
- package/postpublish.js +8 -6
- package/templates/app/.eslintrc.js +140 -140
- package/templates/app/README.md +12 -12
- package/templates/app/app/index.html +24 -24
- package/templates/app/app/properties/ApplicationResources_en_US.properties +1 -1
- package/templates/app/app/properties/i18nkeys.json +3 -3
- package/templates/app/docs/all.html +69 -69
- package/templates/app/mockapi/index.js +18 -18
- package/templates/app/package.json +37 -37
- package/templates/app/src/actions/SampleActions/index.js +37 -37
- package/templates/app/src/actions/index.js +65 -65
- package/templates/app/src/appUrls.js +19 -19
- package/templates/app/src/components/Alert/Alert.js +134 -134
- package/templates/app/src/components/Alert/Alert.module.css +79 -79
- package/templates/app/src/components/FreezeLayer/FreezeLayer.css +37 -37
- package/templates/app/src/components/FreezeLayer/FreezeLayer.js +84 -84
- package/templates/app/src/components/Sample/Sample.module.css +11 -11
- package/templates/app/src/components/Sample/SampleList.js +61 -61
- package/templates/app/src/components/Slider/Slider.css +41 -41
- package/templates/app/src/components/Slider/Slider.js +55 -55
- package/templates/app/src/containers/AlertContainer/index.js +15 -15
- package/templates/app/src/containers/AppContainer/index.js +96 -96
- package/templates/app/src/containers/AppContainer/index.module.css +27 -27
- package/templates/app/src/containers/CustomMatch/index.js +65 -65
- package/templates/app/src/containers/DevTools/index.js +10 -10
- package/templates/app/src/containers/Header/index.js +67 -67
- package/templates/app/src/containers/Header/index.module.css +43 -43
- package/templates/app/src/containers/Redirect/index.js +63 -63
- package/templates/app/src/containers/Redirector/index.js +47 -47
- package/templates/app/src/containers/SampleListContainer/ListContainer.js +42 -42
- package/templates/app/src/containers/SampleListContainer/ListContainer.module.css +3 -3
- package/templates/app/src/historyChange.js +5 -5
- package/templates/app/src/index.html +10 -10
- package/templates/app/src/index.js +24 -24
- package/templates/app/src/middleware/PromiseMiddleware.js +59 -59
- package/templates/app/src/reducers/alertData.js +11 -11
- package/templates/app/src/reducers/index.js +6 -6
- package/templates/app/src/reducers/samples.js +19 -19
- package/templates/app/src/store/configureStore.dev.js +51 -51
- package/templates/app/src/store/configureStore.js +5 -5
- package/templates/app/src/store/configureStore.prod.js +26 -26
- package/templates/app/src/util/Common.js +5 -5
- package/templates/app/src/util/RequestAPI.js +132 -132
- package/templates/docs/all.html +249 -249
- package/templates/docs/component.html +178 -178
- package/templates/docs/components.html +221 -221
- package/templates/docs/css/b.min.css +6 -6
- package/templates/docs/css/component.css +42 -42
- package/templates/docs/css/componentTest.css +6 -6
- package/templates/docs/css/hopscotch.css +585 -585
- package/templates/docs/css/style.css +1022 -1022
- package/templates/docs/impactReportTemplate.html +154 -154
- package/templates/docs/index.html +1501 -1501
- package/templates/docs/js/active-line.js +72 -72
- package/templates/docs/js/b.min.js +7 -7
- package/templates/docs/js/codemirror.js +9680 -9680
- package/templates/docs/js/designTokens.js +334 -334
- package/templates/docs/js/j.min.js +4 -4
- package/templates/docs/js/javascript.js +874 -874
- package/templates/docs/js/matchbrackets.js +145 -145
- package/cert/Tsicsezwild-22-23.crt +0 -37
- package/cert/Tsicsezwild-22-23.key +0 -27
|
@@ -1,63 +1,63 @@
|
|
|
1
|
-
import React, { Component } from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
|
-
import { connect } from "react-redux";
|
|
4
|
-
import { replace } from "../../actions";
|
|
5
|
-
class Redirect extends Component {
|
|
6
|
-
constructor(props) {
|
|
7
|
-
super(props);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
render() {
|
|
11
|
-
return null;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
componentDidMount() {
|
|
15
|
-
if (this.props.isMatch) {
|
|
16
|
-
this.props.replace(this.props.to(this.props.location));
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
componentDidUpdate() {
|
|
21
|
-
if (this.props.isMatch) {
|
|
22
|
-
this.props.replace(this.props.to(this.props.location));
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
Redirect.propTypes = {
|
|
28
|
-
from: PropTypes.shape({
|
|
29
|
-
name: PropTypes.string,
|
|
30
|
-
module: PropTypes.string
|
|
31
|
-
}),
|
|
32
|
-
to: PropTypes.func
|
|
33
|
-
};
|
|
34
|
-
function mapStateToProps(state, props) {
|
|
35
|
-
let url = state.routing.urls[props.from.name];
|
|
36
|
-
|
|
37
|
-
if (url && url.match == 2) {
|
|
38
|
-
let { module } = props.from;
|
|
39
|
-
if (props.from.module) {
|
|
40
|
-
if (state.routing.paramMap.moduleName == props.from.module) {
|
|
41
|
-
return {
|
|
42
|
-
isMatch: true,
|
|
43
|
-
location: state.routing.location
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
return {
|
|
47
|
-
isMatch: false
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
return {
|
|
51
|
-
isMatch: true
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
return {
|
|
55
|
-
isMatch: false,
|
|
56
|
-
location: state.routing.location
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export default connect(
|
|
61
|
-
mapStateToProps,
|
|
62
|
-
{ replace }
|
|
63
|
-
)(Redirect);
|
|
1
|
+
import React, { Component } from "react";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
import { connect } from "react-redux";
|
|
4
|
+
import { replace } from "../../actions";
|
|
5
|
+
class Redirect extends Component {
|
|
6
|
+
constructor(props) {
|
|
7
|
+
super(props);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
render() {
|
|
11
|
+
return null;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
componentDidMount() {
|
|
15
|
+
if (this.props.isMatch) {
|
|
16
|
+
this.props.replace(this.props.to(this.props.location));
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
componentDidUpdate() {
|
|
21
|
+
if (this.props.isMatch) {
|
|
22
|
+
this.props.replace(this.props.to(this.props.location));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
Redirect.propTypes = {
|
|
28
|
+
from: PropTypes.shape({
|
|
29
|
+
name: PropTypes.string,
|
|
30
|
+
module: PropTypes.string
|
|
31
|
+
}),
|
|
32
|
+
to: PropTypes.func
|
|
33
|
+
};
|
|
34
|
+
function mapStateToProps(state, props) {
|
|
35
|
+
let url = state.routing.urls[props.from.name];
|
|
36
|
+
|
|
37
|
+
if (url && url.match == 2) {
|
|
38
|
+
let { module } = props.from;
|
|
39
|
+
if (props.from.module) {
|
|
40
|
+
if (state.routing.paramMap.moduleName == props.from.module) {
|
|
41
|
+
return {
|
|
42
|
+
isMatch: true,
|
|
43
|
+
location: state.routing.location
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
isMatch: false
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
return {
|
|
51
|
+
isMatch: true
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
isMatch: false,
|
|
56
|
+
location: state.routing.location
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export default connect(
|
|
61
|
+
mapStateToProps,
|
|
62
|
+
{ replace }
|
|
63
|
+
)(Redirect);
|
|
@@ -1,47 +1,47 @@
|
|
|
1
|
-
import React, { Component } from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
|
-
import { connect } from "react-redux";
|
|
4
|
-
|
|
5
|
-
import Redirect from "../Redirect";
|
|
6
|
-
|
|
7
|
-
class Redirector extends Component {
|
|
8
|
-
constructor(props) {
|
|
9
|
-
super(props);
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
render() {
|
|
13
|
-
let { urls } = this.props;
|
|
14
|
-
return (
|
|
15
|
-
<div style={{ display: "none" }}>
|
|
16
|
-
{urls.map((url, i) => (
|
|
17
|
-
<Redirect
|
|
18
|
-
key={`redirect${i}`}
|
|
19
|
-
from={{ name: url.name, module: url.module }}
|
|
20
|
-
to={location =>
|
|
21
|
-
Object.assign({}, location, {
|
|
22
|
-
pathname: `${url.pathname}`
|
|
23
|
-
})
|
|
24
|
-
}
|
|
25
|
-
/>
|
|
26
|
-
))}
|
|
27
|
-
</div>
|
|
28
|
-
);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
Redirector.propTypes = {
|
|
33
|
-
urls: PropTypes.array.isRequired
|
|
34
|
-
};
|
|
35
|
-
|
|
36
|
-
function mapStateToProps(state, props) {
|
|
37
|
-
const urls = [
|
|
38
|
-
{
|
|
39
|
-
name: "sampleList",
|
|
40
|
-
module: "sample",
|
|
41
|
-
pathname: `${state.routing.location.pathname}/sample`
|
|
42
|
-
}
|
|
43
|
-
];
|
|
44
|
-
|
|
45
|
-
return { urls };
|
|
46
|
-
}
|
|
47
|
-
export default connect(mapStateToProps)(Redirector);
|
|
1
|
+
import React, { Component } from "react";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
import { connect } from "react-redux";
|
|
4
|
+
|
|
5
|
+
import Redirect from "../Redirect";
|
|
6
|
+
|
|
7
|
+
class Redirector extends Component {
|
|
8
|
+
constructor(props) {
|
|
9
|
+
super(props);
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
render() {
|
|
13
|
+
let { urls } = this.props;
|
|
14
|
+
return (
|
|
15
|
+
<div style={{ display: "none" }}>
|
|
16
|
+
{urls.map((url, i) => (
|
|
17
|
+
<Redirect
|
|
18
|
+
key={`redirect${i}`}
|
|
19
|
+
from={{ name: url.name, module: url.module }}
|
|
20
|
+
to={location =>
|
|
21
|
+
Object.assign({}, location, {
|
|
22
|
+
pathname: `${url.pathname}`
|
|
23
|
+
})
|
|
24
|
+
}
|
|
25
|
+
/>
|
|
26
|
+
))}
|
|
27
|
+
</div>
|
|
28
|
+
);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
Redirector.propTypes = {
|
|
33
|
+
urls: PropTypes.array.isRequired
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
function mapStateToProps(state, props) {
|
|
37
|
+
const urls = [
|
|
38
|
+
{
|
|
39
|
+
name: "sampleList",
|
|
40
|
+
module: "sample",
|
|
41
|
+
pathname: `${state.routing.location.pathname}/sample`
|
|
42
|
+
}
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
return { urls };
|
|
46
|
+
}
|
|
47
|
+
export default connect(mapStateToProps)(Redirector);
|
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
import React, { Component } from "react";
|
|
2
|
-
import PropTypes from "prop-types";
|
|
3
|
-
import { connect } from "react-redux";
|
|
4
|
-
import { push, alertAction } from "../../actions";
|
|
5
|
-
import { getSampleList } from "../../actions/SampleActions";
|
|
6
|
-
import style from "./ListContainer.module.css";
|
|
7
|
-
import SampleList from "../../components/Sample/SampleList";
|
|
8
|
-
|
|
9
|
-
class ListContainer extends Component {
|
|
10
|
-
constructor(props) {
|
|
11
|
-
super(props);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
componentDidMount() {
|
|
15
|
-
const { getSampleList } = this.props;
|
|
16
|
-
getSampleList().then(res => {});
|
|
17
|
-
}
|
|
18
|
-
render() {
|
|
19
|
-
const { samples = [] } = this.props;
|
|
20
|
-
return (
|
|
21
|
-
<div className={style.container}>
|
|
22
|
-
<SampleList samples={samples} />
|
|
23
|
-
</div>
|
|
24
|
-
);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
ListContainer.propTypes = {
|
|
29
|
-
push: PropTypes.func,
|
|
30
|
-
getSampleList: PropTypes.func,
|
|
31
|
-
samples: PropTypes.array.isRequired
|
|
32
|
-
};
|
|
33
|
-
|
|
34
|
-
const mapStateToProps = (state, ownProps) => {
|
|
35
|
-
const { samples = [] } = state;
|
|
36
|
-
return { samples };
|
|
37
|
-
};
|
|
38
|
-
|
|
39
|
-
export default connect(
|
|
40
|
-
mapStateToProps,
|
|
41
|
-
{ push, getSampleList }
|
|
42
|
-
)(ListContainer);
|
|
1
|
+
import React, { Component } from "react";
|
|
2
|
+
import PropTypes from "prop-types";
|
|
3
|
+
import { connect } from "react-redux";
|
|
4
|
+
import { push, alertAction } from "../../actions";
|
|
5
|
+
import { getSampleList } from "../../actions/SampleActions";
|
|
6
|
+
import style from "./ListContainer.module.css";
|
|
7
|
+
import SampleList from "../../components/Sample/SampleList";
|
|
8
|
+
|
|
9
|
+
class ListContainer extends Component {
|
|
10
|
+
constructor(props) {
|
|
11
|
+
super(props);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
componentDidMount() {
|
|
15
|
+
const { getSampleList } = this.props;
|
|
16
|
+
getSampleList().then(res => {});
|
|
17
|
+
}
|
|
18
|
+
render() {
|
|
19
|
+
const { samples = [] } = this.props;
|
|
20
|
+
return (
|
|
21
|
+
<div className={style.container}>
|
|
22
|
+
<SampleList samples={samples} />
|
|
23
|
+
</div>
|
|
24
|
+
);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
ListContainer.propTypes = {
|
|
29
|
+
push: PropTypes.func,
|
|
30
|
+
getSampleList: PropTypes.func,
|
|
31
|
+
samples: PropTypes.array.isRequired
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
const mapStateToProps = (state, ownProps) => {
|
|
35
|
+
const { samples = [] } = state;
|
|
36
|
+
return { samples };
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export default connect(
|
|
40
|
+
mapStateToProps,
|
|
41
|
+
{ push, getSampleList }
|
|
42
|
+
)(ListContainer);
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
.container {
|
|
2
|
-
padding: 20px;
|
|
3
|
-
}
|
|
1
|
+
.container {
|
|
2
|
+
padding: 20px;
|
|
3
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export const historyChange = (routing, res, { getState, dispatch }) => {
|
|
2
|
-
let state = getState();
|
|
3
|
-
|
|
4
|
-
res();
|
|
5
|
-
};
|
|
1
|
+
export const historyChange = (routing, res, { getState, dispatch }) => {
|
|
2
|
+
let state = getState();
|
|
3
|
+
|
|
4
|
+
res();
|
|
5
|
+
};
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en" dir="ltr">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="utf-8" />
|
|
5
|
-
<title></title>
|
|
6
|
-
</head>
|
|
7
|
-
<body>
|
|
8
|
-
<div id="container"></div>
|
|
9
|
-
</body>
|
|
10
|
-
</html>
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" dir="ltr">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<title></title>
|
|
6
|
+
</head>
|
|
7
|
+
<body>
|
|
8
|
+
<div id="container"></div>
|
|
9
|
+
</body>
|
|
10
|
+
</html>
|
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import ReactDOM from "react-dom";
|
|
3
|
-
import { Provider } from "react-redux";
|
|
4
|
-
import { ConnectI18NProvider } from "fz-i18n";
|
|
5
|
-
import configureStore from "./store/configureStore";
|
|
6
|
-
import AppContainer from "./containers/AppContainer";
|
|
7
|
-
|
|
8
|
-
const store = configureStore();
|
|
9
|
-
setTimeout(() => {
|
|
10
|
-
ReactDOM.render(
|
|
11
|
-
<Provider store={store}>
|
|
12
|
-
<ConnectI18NProvider
|
|
13
|
-
direction={document.getElementsByTagName("html")[0].dir}
|
|
14
|
-
i18n={() => {}}
|
|
15
|
-
permission={{}}
|
|
16
|
-
timeZone={state => ""}
|
|
17
|
-
license={""}
|
|
18
|
-
>
|
|
19
|
-
<AppContainer />
|
|
20
|
-
</ConnectI18NProvider>
|
|
21
|
-
</Provider>,
|
|
22
|
-
document.getElementById("container")
|
|
23
|
-
);
|
|
24
|
-
}, 1);
|
|
1
|
+
import React from "react";
|
|
2
|
+
import ReactDOM from "react-dom";
|
|
3
|
+
import { Provider } from "react-redux";
|
|
4
|
+
import { ConnectI18NProvider } from "fz-i18n";
|
|
5
|
+
import configureStore from "./store/configureStore";
|
|
6
|
+
import AppContainer from "./containers/AppContainer";
|
|
7
|
+
|
|
8
|
+
const store = configureStore();
|
|
9
|
+
setTimeout(() => {
|
|
10
|
+
ReactDOM.render(
|
|
11
|
+
<Provider store={store}>
|
|
12
|
+
<ConnectI18NProvider
|
|
13
|
+
direction={document.getElementsByTagName("html")[0].dir}
|
|
14
|
+
i18n={() => {}}
|
|
15
|
+
permission={{}}
|
|
16
|
+
timeZone={state => ""}
|
|
17
|
+
license={""}
|
|
18
|
+
>
|
|
19
|
+
<AppContainer />
|
|
20
|
+
</ConnectI18NProvider>
|
|
21
|
+
</Provider>,
|
|
22
|
+
document.getElementById("container")
|
|
23
|
+
);
|
|
24
|
+
}, 1);
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
export default function promiseMiddleware({ dispatch, getState }) {
|
|
2
|
-
return function(next) {
|
|
3
|
-
return function(action) {
|
|
4
|
-
const { types, callAPI, shouldCallAPI = () => true, payload } = action;
|
|
5
|
-
if (!types) {
|
|
6
|
-
// Normal action: pass it o
|
|
7
|
-
return next(action);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
if (
|
|
11
|
-
!Array.isArray(types) ||
|
|
12
|
-
types.length !== 3 ||
|
|
13
|
-
!types.every(type => typeof type === 'string')
|
|
14
|
-
) {
|
|
15
|
-
throw new Error('Expected an array of three string types.');
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
if (typeof callAPI !== 'function') {
|
|
19
|
-
throw new Error('Expected fetch to be a function.');
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
if (!shouldCallAPI(getState())) {
|
|
23
|
-
return Promise.resolve();
|
|
24
|
-
}
|
|
25
|
-
const [requestType, successType, failureType] = types;
|
|
26
|
-
|
|
27
|
-
dispatch({
|
|
28
|
-
type: requestType,
|
|
29
|
-
data: typeof payload === 'function' ? payload(getState()) : payload
|
|
30
|
-
});
|
|
31
|
-
return callAPI(getState(), getState).then(
|
|
32
|
-
response => {
|
|
33
|
-
let action = dispatch(
|
|
34
|
-
Object.assign(
|
|
35
|
-
{},
|
|
36
|
-
{
|
|
37
|
-
data: response,
|
|
38
|
-
type: successType
|
|
39
|
-
}
|
|
40
|
-
)
|
|
41
|
-
);
|
|
42
|
-
return action;
|
|
43
|
-
},
|
|
44
|
-
error => {
|
|
45
|
-
dispatch(
|
|
46
|
-
Object.assign(
|
|
47
|
-
{},
|
|
48
|
-
{
|
|
49
|
-
data: error,
|
|
50
|
-
type: failureType
|
|
51
|
-
}
|
|
52
|
-
)
|
|
53
|
-
);
|
|
54
|
-
throw error;
|
|
55
|
-
}
|
|
56
|
-
);
|
|
57
|
-
};
|
|
58
|
-
};
|
|
59
|
-
}
|
|
1
|
+
export default function promiseMiddleware({ dispatch, getState }) {
|
|
2
|
+
return function(next) {
|
|
3
|
+
return function(action) {
|
|
4
|
+
const { types, callAPI, shouldCallAPI = () => true, payload } = action;
|
|
5
|
+
if (!types) {
|
|
6
|
+
// Normal action: pass it o
|
|
7
|
+
return next(action);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
if (
|
|
11
|
+
!Array.isArray(types) ||
|
|
12
|
+
types.length !== 3 ||
|
|
13
|
+
!types.every(type => typeof type === 'string')
|
|
14
|
+
) {
|
|
15
|
+
throw new Error('Expected an array of three string types.');
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
if (typeof callAPI !== 'function') {
|
|
19
|
+
throw new Error('Expected fetch to be a function.');
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
if (!shouldCallAPI(getState())) {
|
|
23
|
+
return Promise.resolve();
|
|
24
|
+
}
|
|
25
|
+
const [requestType, successType, failureType] = types;
|
|
26
|
+
|
|
27
|
+
dispatch({
|
|
28
|
+
type: requestType,
|
|
29
|
+
data: typeof payload === 'function' ? payload(getState()) : payload
|
|
30
|
+
});
|
|
31
|
+
return callAPI(getState(), getState).then(
|
|
32
|
+
response => {
|
|
33
|
+
let action = dispatch(
|
|
34
|
+
Object.assign(
|
|
35
|
+
{},
|
|
36
|
+
{
|
|
37
|
+
data: response,
|
|
38
|
+
type: successType
|
|
39
|
+
}
|
|
40
|
+
)
|
|
41
|
+
);
|
|
42
|
+
return action;
|
|
43
|
+
},
|
|
44
|
+
error => {
|
|
45
|
+
dispatch(
|
|
46
|
+
Object.assign(
|
|
47
|
+
{},
|
|
48
|
+
{
|
|
49
|
+
data: error,
|
|
50
|
+
type: failureType
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
);
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
};
|
|
58
|
+
};
|
|
59
|
+
}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export const alertData = (state = {}, { type, data }) => {
|
|
2
|
-
switch (type) {
|
|
3
|
-
case "ALERT_SHOW":
|
|
4
|
-
return data;
|
|
5
|
-
case "ALERT_HIDE":
|
|
6
|
-
return {};
|
|
7
|
-
|
|
8
|
-
default:
|
|
9
|
-
}
|
|
10
|
-
return state;
|
|
11
|
-
};
|
|
1
|
+
export const alertData = (state = {}, { type, data }) => {
|
|
2
|
+
switch (type) {
|
|
3
|
+
case "ALERT_SHOW":
|
|
4
|
+
return data;
|
|
5
|
+
case "ALERT_HIDE":
|
|
6
|
+
return {};
|
|
7
|
+
|
|
8
|
+
default:
|
|
9
|
+
}
|
|
10
|
+
return state;
|
|
11
|
+
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { samples } from "./samples";
|
|
2
|
-
import { alertData } from "./alertData";
|
|
3
|
-
|
|
4
|
-
const reducers = { samples, alertData };
|
|
5
|
-
|
|
6
|
-
export default reducers;
|
|
1
|
+
import { samples } from "./samples";
|
|
2
|
+
import { alertData } from "./alertData";
|
|
3
|
+
|
|
4
|
+
const reducers = { samples, alertData };
|
|
5
|
+
|
|
6
|
+
export default reducers;
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
function samples(state = [], { data, type }) {
|
|
2
|
-
switch (type) {
|
|
3
|
-
case "SAMPLE_LIST_SUCCESS": {
|
|
4
|
-
return data;
|
|
5
|
-
break;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
case "ADD_SAMPLE_SUCCESS": {
|
|
9
|
-
let newState = Object.assign({}, state);
|
|
10
|
-
return [...state, ...[data]];
|
|
11
|
-
break;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
default:
|
|
15
|
-
return state;
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export { samples };
|
|
1
|
+
function samples(state = [], { data, type }) {
|
|
2
|
+
switch (type) {
|
|
3
|
+
case "SAMPLE_LIST_SUCCESS": {
|
|
4
|
+
return data;
|
|
5
|
+
break;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
case "ADD_SAMPLE_SUCCESS": {
|
|
9
|
+
let newState = Object.assign({}, state);
|
|
10
|
+
return [...state, ...[data]];
|
|
11
|
+
break;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
default:
|
|
15
|
+
return state;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export { samples };
|