@zengenti/contensis-react-base 3.0.2-beta.5 → 3.0.2-beta.6
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/cjs/{App-48706fde.js → App-2a7a16ad.js} +89 -133
- package/{esm/App-e058aa68.js.map → cjs/App-2a7a16ad.js.map} +1 -1
- package/cjs/{ContensisDeliveryApi-cfdefe17.js → ContensisDeliveryApi-de88df2a.js} +13 -66
- package/cjs/ContensisDeliveryApi-de88df2a.js.map +1 -0
- package/cjs/{RouteLoader-fcd1e4f1.js → RouteLoader-47d70a26.js} +22 -35
- package/{esm/RouteLoader-e46234cc.js.map → cjs/RouteLoader-47d70a26.js.map} +1 -1
- package/cjs/{ToJs-d962c80f.js → ToJs-61c03582.js} +3 -4
- package/cjs/{ToJs-d962c80f.js.map → ToJs-61c03582.js.map} +1 -1
- package/cjs/client.js +11 -18
- package/cjs/client.js.map +1 -1
- package/cjs/contensis-react-base.js +113 -177
- package/cjs/contensis-react-base.js.map +1 -1
- package/cjs/forms.js +11 -153
- package/cjs/forms.js.map +1 -1
- package/cjs/{fromJSLeaveImmer-e74c673c.js → fromJSLeaveImmer-7c363211.js} +1 -4
- package/cjs/{fromJSLeaveImmer-e74c673c.js.map → fromJSLeaveImmer-7c363211.js.map} +1 -1
- package/cjs/{login-dfcea036.js → login-2ea569cc.js} +59 -110
- package/cjs/{login-dfcea036.js.map → login-2ea569cc.js.map} +1 -1
- package/cjs/{reducers-73a03ef4.js → reducers-9afb5f89.js} +10 -31
- package/{esm/reducers-aa8cef1e.js.map → cjs/reducers-9afb5f89.js.map} +1 -1
- package/cjs/redux.js +5 -4
- package/cjs/redux.js.map +1 -1
- package/cjs/routing.js +3 -3
- package/cjs/{sagas-8a20e424.js → sagas-6d12e7ca.js} +182 -282
- package/{esm/sagas-e576b6f6.js.map → cjs/sagas-6d12e7ca.js.map} +1 -1
- package/cjs/search.js +56 -82
- package/cjs/search.js.map +1 -1
- package/cjs/{selectors-fa607198.js → selectors-c76c2676.js} +1 -6
- package/cjs/selectors-c76c2676.js.map +1 -0
- package/cjs/urls-6fcaf4c6.js.map +1 -1
- package/cjs/user.js +4 -12
- package/cjs/user.js.map +1 -1
- package/cjs/util.js +35 -55
- package/cjs/util.js.map +1 -1
- package/cjs/{version-7ce96442.js → version-38afaf2a.js} +24 -58
- package/{esm/version-03d555b7.js.map → cjs/version-38afaf2a.js.map} +1 -1
- package/cjs/{version-d6e26cc4.js → version-886f49d8.js} +3 -6
- package/cjs/{version-d6e26cc4.js.map → version-886f49d8.js.map} +1 -1
- package/esm/{App-e058aa68.js → App-4fb1fc44.js} +89 -133
- package/{cjs/App-48706fde.js.map → esm/App-4fb1fc44.js.map} +1 -1
- package/esm/{ContensisDeliveryApi-8abcf222.js → ContensisDeliveryApi-ad06857d.js} +13 -66
- package/esm/ContensisDeliveryApi-ad06857d.js.map +1 -0
- package/esm/{RouteLoader-e46234cc.js → RouteLoader-f5d5f733.js} +22 -35
- package/{cjs/RouteLoader-fcd1e4f1.js.map → esm/RouteLoader-f5d5f733.js.map} +1 -1
- package/esm/{ToJs-502f7a11.js → ToJs-0066e629.js} +3 -4
- package/esm/{ToJs-502f7a11.js.map → ToJs-0066e629.js.map} +1 -1
- package/esm/client.js +12 -19
- package/esm/client.js.map +1 -1
- package/esm/contensis-react-base.js +114 -178
- package/esm/contensis-react-base.js.map +1 -1
- package/esm/forms.js +11 -153
- package/esm/forms.js.map +1 -1
- package/esm/{fromJSLeaveImmer-0114ffcf.js → fromJSLeaveImmer-e2dacd63.js} +1 -4
- package/esm/{fromJSLeaveImmer-0114ffcf.js.map → fromJSLeaveImmer-e2dacd63.js.map} +1 -1
- package/esm/{login-a950263f.js → login-bffb081f.js} +59 -110
- package/esm/{login-a950263f.js.map → login-bffb081f.js.map} +1 -1
- package/esm/{reducers-aa8cef1e.js → reducers-3d5c37d1.js} +10 -31
- package/{cjs/reducers-73a03ef4.js.map → esm/reducers-3d5c37d1.js.map} +1 -1
- package/esm/redux.js +8 -7
- package/esm/redux.js.map +1 -1
- package/esm/routing.js +3 -3
- package/esm/{sagas-e576b6f6.js → sagas-53d2aefb.js} +134 -235
- package/{cjs/sagas-8a20e424.js.map → esm/sagas-53d2aefb.js.map} +1 -1
- package/esm/search.js +57 -83
- package/esm/search.js.map +1 -1
- package/esm/{selectors-78355a01.js → selectors-3f0d804d.js} +1 -6
- package/esm/selectors-3f0d804d.js.map +1 -0
- package/esm/urls-eac9a747.js.map +1 -1
- package/esm/user.js +6 -14
- package/esm/user.js.map +1 -1
- package/esm/util.js +35 -55
- package/esm/util.js.map +1 -1
- package/esm/{version-03d555b7.js → version-dd31c7f0.js} +24 -58
- package/{cjs/version-7ce96442.js.map → esm/version-dd31c7f0.js.map} +1 -1
- package/esm/{version-5ce7dbce.js → version-f4629693.js} +3 -6
- package/esm/{version-5ce7dbce.js.map → version-f4629693.js.map} +1 -1
- package/models/app/pages/VersionInfo/components/VersionInfo.styled.d.ts +2 -1
- package/models/user/components.styled/Login.styled.d.ts +1 -1
- package/models/user/components.styled/LoginForm.styled.d.ts +1 -1
- package/package.json +2 -2
- package/cjs/ContensisDeliveryApi-cfdefe17.js.map +0 -1
- package/cjs/selectors-fa607198.js.map +0 -1
- package/esm/ContensisDeliveryApi-8abcf222.js.map +0 -1
- package/esm/selectors-78355a01.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContensisDeliveryApi-de88df2a.js","sources":["../src/util/ContensisDeliveryApi.js"],"sourcesContent":["import { Client } from 'contensis-delivery-api';\nimport { parse } from 'query-string';\nimport { setSurrogateKeys } from '../routing/redux/actions';\nimport { reduxStore } from '~/redux/store/store';\n\nconst storeSurrogateKeys = response => {\n const keys = response.headers.get\n ? response.headers.get('surrogate-key')\n : response.headers.map['surrogate-key'];\n if (keys) reduxStore?.dispatch(setSurrogateKeys(keys, response.url));\n};\n\nexport const getClientConfig = project => {\n let config = DELIVERY_API_CONFIG; /* global DELIVERY_API_CONFIG */\n config.responseHandler = {};\n\n if (project) {\n config.projectId = project;\n }\n\n // we only want the surrogate key header in a server context\n if (typeof window === 'undefined') {\n config.defaultHeaders = {\n 'x-require-surrogate-key': true,\n };\n config.responseHandler[200] = storeSurrogateKeys;\n }\n\n if (\n typeof window !== 'undefined' &&\n PROXY_DELIVERY_API /* global PROXY_DELIVERY_API */\n ) {\n // ensure a relative url is used to bypass the need for CORS (separate OPTIONS calls)\n config.rootUrl = '';\n config.responseHandler[404] = () => null;\n }\n return config;\n};\n\nexport * from 'contensis-delivery-api';\n\nclass DeliveryApi {\n getClientSideVersionStatus = () => {\n if (typeof window !== 'undefined') {\n // Allow overriding versionStatus with the querystring\n const { versionStatus } = parse(window.location.search);\n if (versionStatus) return versionStatus;\n // Client-side we will have a global variable set if rendered by SSR in production\n if (typeof window.versionStatus !== 'undefined')\n return window.versionStatus;\n // For localhost development we can only work out versionStatus from the current hostname\n const currentHostname = window.location.hostname;\n return this.getVersionStatusFromHostname(currentHostname);\n }\n return null;\n };\n getServerSideVersionStatus = request =>\n request.query.versionStatus ||\n deliveryApi.getVersionStatusFromHeaders(request.headers) ||\n deliveryApi.getVersionStatusFromHostname(request.hostname);\n getVersionStatusFromHeaders = headers => {\n const versionStatusHeader = headers['x-entry-versionstatus'];\n if (typeof versionStatusHeader !== 'undefined') return versionStatusHeader;\n return null;\n };\n getVersionStatusFromHostname = currentHostname => {\n if (currentHostname.indexOf('localhost') > -1) return 'latest';\n\n if (currentHostname.endsWith('contensis.cloud')) {\n if (currentHostname.indexOf('preview.') > -1) {\n return 'latest';\n } else {\n return 'published';\n }\n }\n\n if (currentHostname.endsWith('cloud.contensis.com')) {\n if (currentHostname.indexOf('preview-') > -1) {\n return 'latest';\n } else {\n return 'published';\n }\n }\n\n return 'published';\n };\n search = (query, linkDepth, project, env) => {\n const client = Client.create(getClientConfig(project, env));\n return client.entries.search(\n query,\n typeof linkDepth !== 'undefined' ? linkDepth : 1\n );\n };\n getClient = (deliveryApiStatus = 'published', project, env) => {\n const baseConfig = getClientConfig(project, env);\n baseConfig.versionStatus = deliveryApiStatus;\n return Client.create(baseConfig);\n };\n getEntry = (\n id,\n linkDepth = 0,\n deliveryApiStatus = 'published',\n project,\n env\n ) => {\n const baseConfig = getClientConfig(project, env);\n baseConfig.versionStatus = deliveryApiStatus;\n const client = Client.create(baseConfig);\n // return client.entries.get(id, linkDepth);\n return client.entries.get({ id, linkDepth });\n };\n}\n\nexport const deliveryApi = new DeliveryApi();\n\nclass CacheNode {\n constructor(key, value) {\n this.key = key;\n this.value = value;\n this.next = null;\n this.prev = null;\n }\n}\n\nclass LruCache {\n constructor(limit = 100) {\n this.map = {};\n this.head = null;\n this.tail = null;\n this.limit = limit || 100;\n this.size = 0;\n }\n\n get(key) {\n if (this.map[key]) {\n let value = this.map[key].value;\n let node = new CacheNode(key, value);\n this.remove(key);\n this.setHead(node);\n return value;\n }\n }\n\n set(key, value) {\n let node = new CacheNode(key, value);\n if (this.map[key]) {\n this.remove(key);\n } else {\n if (this.size >= this.limit) {\n delete this.map[this.tail.key];\n this.size--;\n this.tail = this.tail.prev;\n this.tail.next = null;\n }\n }\n this.setHead(node);\n }\n\n setHead(node) {\n node.next = this.head;\n node.prev = null;\n if (this.head) {\n this.head.prev = node;\n }\n this.head = node;\n if (!this.tail) {\n this.tail = node;\n }\n this.size++;\n this.map[node.key] = node;\n }\n\n remove(key) {\n let node = this.map[key];\n if (!node) return; // This is sometimes null and crashes the container without this check\n\n if (node.prev) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n delete this.map[key];\n this.size--;\n }\n}\n\nclass CachedSearch {\n cache = new LruCache();\n taxonomyLookup = {};\n\n search(query, linkDepth, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(\n project + JSON.stringify(query) + linkDepth.toString(),\n () => client.entries.search(query, linkDepth)\n );\n }\n\n searchUsingPost(query, linkDepth = 0, project = '', env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(\n project + JSON.stringify(query) + linkDepth.toString(),\n () => client.entries.searchUsingPost(query, linkDepth)\n );\n }\n\n get(id, linkDepth, versionStatus, project, env) {\n const client = Client.create(getClientConfig(project, env));\n client.clientConfig.versionStatus = versionStatus;\n return this.request(id, () => client.entries.get({ id, linkDepth }));\n }\n\n getContentType(id, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(`[CONTENT TYPE] ${id} ${project}`, () =>\n client.contentTypes.get(id)\n );\n }\n\n getTaxonomyNode(key, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(`[TAXONOMY NODE] ${key}`, () =>\n client.taxonomy\n .resolveChildren(key)\n .then(node => this.extendTaxonomyNode(node))\n );\n }\n\n getRootNode(options, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(`${project} / ${JSON.stringify(options)}`, () =>\n client.nodes.getRoot(options)\n );\n }\n\n getNode(options, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(\n `${project} ${(options && options.path) || options} ${JSON.stringify(\n options\n )}`,\n () => client.nodes.get(options)\n );\n }\n\n getAncestors(options, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(\n `${project} [A] ${(options && options.id) || options} ${JSON.stringify(\n options\n )}`,\n () => client.nodes.getAncestors(options)\n );\n }\n\n getChildren(options, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(\n `${project} [C] ${(options && options.id) || options} ${JSON.stringify(\n options\n )}`,\n () => client.nodes.getChildren(options)\n );\n }\n\n getSiblings(options, project, env) {\n const client = Client.create(getClientConfig(project, env));\n return this.request(\n `${project} [S] ${(options && options.id) || options} ${JSON.stringify(\n options\n )}`,\n () => client.nodes.getSiblings(options)\n );\n }\n\n request(key, execute) {\n if (!this.cache.get(key) || typeof window == 'undefined') {\n let promise = execute();\n this.cache.set(key, promise);\n promise.catch(() => {\n this.cache.remove(key);\n });\n }\n return this.cache.get(key);\n }\n}\n\nexport const cachedSearch = new CachedSearch();\n"],"names":["storeSurrogateKeys","response","keys","headers","get","map","reduxStore","dispatch","setSurrogateKeys","url","getClientConfig","project","config","DELIVERY_API_CONFIG","responseHandler","projectId","window","defaultHeaders","PROXY_DELIVERY_API","rootUrl","DeliveryApi","constructor","getClientSideVersionStatus","versionStatus","parse","location","search","currentHostname","hostname","getVersionStatusFromHostname","getServerSideVersionStatus","request","query","deliveryApi","getVersionStatusFromHeaders","versionStatusHeader","indexOf","endsWith","linkDepth","env","client","Client","create","entries","getClient","deliveryApiStatus","baseConfig","getEntry","id","CacheNode","key","value","next","prev","LruCache","limit","head","tail","size","node","remove","setHead","set","CachedSearch","cache","taxonomyLookup","JSON","stringify","toString","searchUsingPost","clientConfig","getContentType","contentTypes","getTaxonomyNode","taxonomy","resolveChildren","then","extendTaxonomyNode","getRootNode","options","nodes","getRoot","getNode","path","getAncestors","getChildren","getSiblings","execute","promise","catch","cachedSearch"],"mappings":"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"}
|
|
@@ -6,8 +6,8 @@ var reactHotLoader = require('react-hot-loader');
|
|
|
6
6
|
var reactRouterDom = require('react-router-dom');
|
|
7
7
|
var reactRouterConfig = require('react-router-config');
|
|
8
8
|
var reselect = require('reselect');
|
|
9
|
-
var selectors = require('./selectors-
|
|
10
|
-
var ToJs = require('./ToJs-
|
|
9
|
+
var selectors = require('./selectors-c76c2676.js');
|
|
10
|
+
var ToJs = require('./ToJs-61c03582.js');
|
|
11
11
|
|
|
12
12
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
13
13
|
|
|
@@ -41,27 +41,21 @@ const Status = ({
|
|
|
41
41
|
|
|
42
42
|
const replaceDoubleSlashRecursive = path => {
|
|
43
43
|
const nextPath = path.replace(/\/\//, '/');
|
|
44
|
-
|
|
45
44
|
if (nextPath.match(/\/\//)) {
|
|
46
45
|
return replaceDoubleSlashRecursive(nextPath);
|
|
47
46
|
}
|
|
48
|
-
|
|
49
47
|
return nextPath;
|
|
50
48
|
};
|
|
51
|
-
|
|
52
49
|
const getTrimmedPath = path => {
|
|
53
50
|
if (path !== '/') {
|
|
54
51
|
const nextPath = replaceDoubleSlashRecursive(path);
|
|
55
52
|
const lastChar = nextPath[nextPath.length - 1];
|
|
56
|
-
|
|
57
53
|
if (lastChar === '/') {
|
|
58
54
|
return nextPath.substring(0, nextPath.length - 1);
|
|
59
55
|
}
|
|
60
56
|
}
|
|
61
|
-
|
|
62
57
|
return path;
|
|
63
58
|
};
|
|
64
|
-
|
|
65
59
|
const RouteLoader = ({
|
|
66
60
|
contentTypeId,
|
|
67
61
|
entry,
|
|
@@ -82,28 +76,24 @@ const RouteLoader = ({
|
|
|
82
76
|
withEvents,
|
|
83
77
|
trailingSlashRedirectCode = 302
|
|
84
78
|
}) => {
|
|
85
|
-
const location = reactRouterDom.useLocation();
|
|
86
|
-
|
|
87
|
-
const trimmedPath = getTrimmedPath(location.pathname);
|
|
79
|
+
const location = reactRouterDom.useLocation();
|
|
80
|
+
// Always ensure paths are trimmed of trailing slashes so urls are always unique
|
|
81
|
+
const trimmedPath = getTrimmedPath(location.pathname);
|
|
88
82
|
|
|
83
|
+
// Match any Static Routes a developer has defined
|
|
89
84
|
const matchedStaticRoute = () => reactRouterConfig.matchRoutes(routes.StaticRoutes, location.pathname);
|
|
90
|
-
|
|
91
85
|
const isStaticRoute = () => matchedStaticRoute().length > 0;
|
|
92
|
-
|
|
93
86
|
const staticRoute = isStaticRoute() && matchedStaticRoute()[0];
|
|
94
87
|
const routeRequiresLogin = staticRoute && staticRoute.route.requireLogin;
|
|
95
88
|
const setPath = React.useCallback(() => {
|
|
96
89
|
// Use serverPath to control the path we send to siteview node api to resolve a route
|
|
97
90
|
let serverPath = '';
|
|
98
|
-
|
|
99
91
|
if (staticRoute && staticRoute.match && staticRoute.match.isExact) {
|
|
100
92
|
var _route$path, _route$fetchNode;
|
|
101
|
-
|
|
102
93
|
const {
|
|
103
94
|
match,
|
|
104
95
|
route
|
|
105
96
|
} = staticRoute;
|
|
106
|
-
|
|
107
97
|
if ((_route$path = route.path) !== null && _route$path !== void 0 && _route$path.includes('*')) {
|
|
108
98
|
// Send the whole url to api if we have matched route containing wildcard
|
|
109
99
|
serverPath = match.url;
|
|
@@ -120,30 +110,32 @@ const RouteLoader = ({
|
|
|
120
110
|
}).replace(/\/$/, '');
|
|
121
111
|
} else {
|
|
122
112
|
var _route$path2;
|
|
123
|
-
|
|
124
113
|
// Send all non-parameterised url parts to api
|
|
125
114
|
serverPath = (_route$path2 = route.path) === null || _route$path2 === void 0 ? void 0 : _route$path2.split('/').filter(p => !p.startsWith(':')).join('/');
|
|
126
115
|
}
|
|
127
116
|
}
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}, [setNavigationPath,
|
|
131
|
-
|
|
117
|
+
setNavigationPath(serverPath || trimmedPath, location, staticRoute, withEvents, statePath, routes);
|
|
118
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
119
|
+
}, [setNavigationPath,
|
|
120
|
+
// staticRoute,
|
|
121
|
+
withEvents, location, routes,
|
|
122
|
+
// statePath,
|
|
132
123
|
trimmedPath]);
|
|
133
124
|
if (typeof window == 'undefined') setPath();
|
|
134
125
|
React.useEffect(() => {
|
|
135
126
|
setPath();
|
|
136
|
-
}, [location, setPath]);
|
|
127
|
+
}, [location, setPath]);
|
|
137
128
|
|
|
129
|
+
// Need to redirect when url endswith a /
|
|
138
130
|
if (location.pathname.length > trimmedPath.length) {
|
|
139
131
|
return /*#__PURE__*/React__default["default"].createElement(Status, {
|
|
140
132
|
code: trailingSlashRedirectCode
|
|
141
133
|
}, /*#__PURE__*/React__default["default"].createElement(reactRouterDom.Redirect, {
|
|
142
134
|
to: `${trimmedPath}${location.search}${location.hash}`
|
|
143
135
|
}));
|
|
144
|
-
}
|
|
145
|
-
|
|
136
|
+
}
|
|
146
137
|
|
|
138
|
+
// Render any Static Routes a developer has defined
|
|
147
139
|
if (isStaticRoute() && !(!isLoggedIn && routeRequiresLogin)) {
|
|
148
140
|
if (ToJs.matchUserGroup(userGroups, routeRequiresLogin)) return reactRouterConfig.renderRoutes(routes.StaticRoutes, {
|
|
149
141
|
projectId,
|
|
@@ -152,19 +144,18 @@ const RouteLoader = ({
|
|
|
152
144
|
mappedEntry,
|
|
153
145
|
isLoggedIn
|
|
154
146
|
});
|
|
155
|
-
}
|
|
156
|
-
// is not a static route and is in a loading state
|
|
157
|
-
|
|
147
|
+
}
|
|
158
148
|
|
|
149
|
+
// Render a supplied Loading component if the route
|
|
150
|
+
// is not a static route and is in a loading state
|
|
159
151
|
if (isLoading && !isNotFound && loadingComponent) {
|
|
160
152
|
const LoadingComponent = loadingComponent;
|
|
161
153
|
return /*#__PURE__*/React__default["default"].createElement(LoadingComponent, null);
|
|
162
|
-
}
|
|
163
|
-
|
|
154
|
+
}
|
|
164
155
|
|
|
156
|
+
// Match any defined Content Type Mappings
|
|
165
157
|
if (contentTypeId && !(!isLoggedIn && routeRequiresLogin)) {
|
|
166
158
|
const MatchedComponent = routes.ContentTypeMappings.find(item => item.contentTypeID === contentTypeId);
|
|
167
|
-
|
|
168
159
|
if (MatchedComponent && !(MatchedComponent.requireLogin && !isLoggedIn)) {
|
|
169
160
|
if (ToJs.matchUserGroup(userGroups, MatchedComponent.requireLogin)) return /*#__PURE__*/React__default["default"].createElement(MatchedComponent.component, {
|
|
170
161
|
projectId: projectId,
|
|
@@ -175,9 +166,7 @@ const RouteLoader = ({
|
|
|
175
166
|
});
|
|
176
167
|
}
|
|
177
168
|
}
|
|
178
|
-
|
|
179
169
|
const NotFoundComponent = notFoundComponent ? notFoundComponent : NotFound;
|
|
180
|
-
|
|
181
170
|
if (isNotFound || isError) {
|
|
182
171
|
return /*#__PURE__*/React__default["default"].createElement(Status, {
|
|
183
172
|
code: statusCode
|
|
@@ -186,10 +175,8 @@ const RouteLoader = ({
|
|
|
186
175
|
statusText: statusText
|
|
187
176
|
}));
|
|
188
177
|
}
|
|
189
|
-
|
|
190
178
|
return null;
|
|
191
179
|
};
|
|
192
|
-
|
|
193
180
|
const mapStateToPropsMemoized = reselect.createSelector(selectors.selectRouteEntryContentTypeId, selectors.selectRouteEntry, selectors.selectRouteIsError, selectors.selectIsNotFound, selectors.selectRouteLoading, ToJs.selectUserIsAuthenticated, selectors.selectMappedEntry, selectors.selectCurrentProject, selectors.selectCurrentPath, selectors.selectRouteStatusCode, selectors.selectRouteErrorMessage, ToJs.selectUserGroups, (contentTypeId, entry, isError, isNotFound, isLoading, isLoggedIn, mappedEntry, projectId, statePath, statusCode, statusText, userGroups) => ({
|
|
194
181
|
contentTypeId,
|
|
195
182
|
entry,
|
|
@@ -210,4 +197,4 @@ const mapDispatchToProps = {
|
|
|
210
197
|
var RouteLoader$1 = reactHotLoader.hot(module)(reactRedux.connect(mapStateToPropsMemoized, mapDispatchToProps)(ToJs.toJS(RouteLoader)));
|
|
211
198
|
|
|
212
199
|
exports.RouteLoader = RouteLoader$1;
|
|
213
|
-
//# sourceMappingURL=RouteLoader-
|
|
200
|
+
//# sourceMappingURL=RouteLoader-47d70a26.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteLoader-e46234cc.js","sources":["../src/routing/components/NotFound.tsx","../src/routing/components/Status.tsx","../src/routing/components/RouteLoader.tsx"],"sourcesContent":["import React from 'react';\n\nconst NotFound = ({\n statusCode,\n statusText,\n}: {\n statusCode: number;\n statusText: string;\n}) => (\n <>\n <header>\n <h1>{statusCode || '404'} Page Not Found</h1>\n {statusText && (\n <h2\n style={{\n background: '#eee',\n color: '#666',\n fontSize: '100%',\n padding: '10px',\n }}\n >\n {statusText}\n </h2>\n )}\n </header>\n </>\n);\n\nexport default NotFound;\n","import React, { PropsWithChildren } from 'react';\nimport { Route } from 'react-router-dom';\n\nexport const Status = ({\n code,\n children,\n}: PropsWithChildren<{ code: number }>) => {\n return (\n <Route\n render={({ staticContext }) => {\n if (staticContext) staticContext.statusCode = code;\n return children;\n }}\n />\n );\n};\n","import React, { useEffect, useCallback } from 'react';\nimport { connect } from 'react-redux';\nimport { hot } from 'react-hot-loader';\nimport { Redirect, useLocation } from 'react-router-dom';\nimport { renderRoutes, matchRoutes, RouteConfig } from 'react-router-config';\nimport { createSelector } from 'reselect';\n\nimport NotFound from './NotFound';\nimport { Status } from './Status';\n\nimport {\n selectCurrentPath,\n selectCurrentProject,\n selectIsNotFound,\n selectMappedEntry,\n selectRouteEntry,\n selectRouteEntryContentTypeId,\n selectRouteErrorMessage,\n selectRouteIsError,\n selectRouteLoading,\n selectRouteStatusCode,\n} from '../redux/selectors';\nimport { setNavigationPath } from '../redux/actions';\n\nimport {\n selectUserGroups,\n selectUserIsAuthenticated,\n} from '~/user/redux/selectors';\nimport { matchUserGroup } from '~/user/util/matchGroups';\n\nimport { toJS } from '~/util/ToJs';\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { AppRootProps, RouteComponentProps, RouteLoaderProps } from '../routes';\n\nconst replaceDoubleSlashRecursive = (path: string) => {\n const nextPath = path.replace(/\\/\\//, '/');\n\n if (nextPath.match(/\\/\\//)) {\n return replaceDoubleSlashRecursive(nextPath);\n }\n\n return nextPath;\n};\n\nconst getTrimmedPath = path => {\n if (path !== '/') {\n const nextPath = replaceDoubleSlashRecursive(path);\n const lastChar = nextPath[nextPath.length - 1];\n if (lastChar === '/') {\n return nextPath.substring(0, nextPath.length - 1);\n }\n }\n return path;\n};\n\ninterface IReduxProps {\n contentTypeId: string | null;\n entry: Entry | null;\n isError: boolean;\n isNotFound: boolean;\n isLoading: boolean;\n isLoggedIn: boolean;\n mappedEntry: any;\n projectId: string;\n setNavigationPath: typeof setNavigationPath;\n statePath: string;\n statusCode: any;\n statusText: string;\n userGroups: any;\n}\n\nconst RouteLoader = ({\n contentTypeId,\n entry,\n isError,\n isLoading,\n isLoggedIn,\n isNotFound,\n loadingComponent,\n mappedEntry,\n notFoundComponent,\n projectId,\n routes,\n setNavigationPath,\n statePath,\n statusCode,\n statusText,\n userGroups,\n withEvents,\n trailingSlashRedirectCode = 302,\n}: AppRootProps & RouteLoaderProps & IReduxProps) => {\n const location = useLocation();\n // Always ensure paths are trimmed of trailing slashes so urls are always unique\n const trimmedPath = getTrimmedPath(location.pathname);\n\n // Match any Static Routes a developer has defined\n const matchedStaticRoute = () =>\n matchRoutes(routes.StaticRoutes as RouteConfig[], location.pathname);\n const isStaticRoute = () => matchedStaticRoute().length > 0;\n\n const staticRoute = isStaticRoute() && matchedStaticRoute()[0];\n const routeRequiresLogin = staticRoute && staticRoute.route.requireLogin;\n\n const setPath = useCallback(() => {\n // Use serverPath to control the path we send to siteview node api to resolve a route\n let serverPath = '';\n if (staticRoute && staticRoute.match && staticRoute.match.isExact) {\n const { match, route } = staticRoute;\n\n if (route.path?.includes('*')) {\n // Send the whole url to api if we have matched route containing wildcard\n serverPath = match.url;\n } else if (typeof route.fetchNodeLevel === 'number') {\n // Send all url parts to a specified level to api\n serverPath = match.url\n .split('/')\n .splice(0, route.fetchNodeLevel + 1)\n .join('/');\n } else if (route.fetchNode?.params) {\n const fetchNodeParams: string[] = route.fetchNode.params;\n const routeParams: { [key: string]: string } = match.params;\n\n const regexExp = new RegExp(\n Object.keys(routeParams)\n .map(p => `:${p}`)\n .join('|'),\n 'g'\n );\n\n serverPath = match.path\n .replace(/\\?/g, '')\n .replace(regexExp, matched => {\n const param = matched.replace(':', '');\n if (fetchNodeParams.includes(param)) return routeParams[param];\n else return '';\n })\n .replace(/\\/$/, '');\n } else {\n // Send all non-parameterised url parts to api\n serverPath = (route.path as string)\n ?.split('/')\n .filter(p => !p.startsWith(':'))\n .join('/');\n }\n }\n\n setNavigationPath(\n serverPath || trimmedPath,\n location,\n staticRoute,\n withEvents,\n statePath,\n routes\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n setNavigationPath,\n // staticRoute,\n withEvents,\n location,\n routes,\n // statePath,\n trimmedPath,\n ]);\n\n if (typeof window == 'undefined') setPath();\n\n useEffect(() => {\n setPath();\n }, [location, setPath]);\n\n // Need to redirect when url endswith a /\n if (location.pathname.length > trimmedPath.length) {\n return (\n <Status code={trailingSlashRedirectCode}>\n <Redirect to={`${trimmedPath}${location.search}${location.hash}`} />\n </Status>\n );\n }\n\n // Render any Static Routes a developer has defined\n if (isStaticRoute() && !(!isLoggedIn && routeRequiresLogin)) {\n if (matchUserGroup(userGroups, routeRequiresLogin))\n return renderRoutes(\n routes.StaticRoutes as RouteConfig[],\n {\n projectId,\n contentTypeId,\n entry,\n mappedEntry,\n isLoggedIn,\n } as RouteComponentProps\n );\n }\n\n // Render a supplied Loading component if the route\n // is not a static route and is in a loading state\n if (isLoading && !isNotFound && loadingComponent) {\n const LoadingComponent = loadingComponent;\n return <LoadingComponent />;\n }\n\n // Match any defined Content Type Mappings\n if (contentTypeId && !(!isLoggedIn && routeRequiresLogin)) {\n const MatchedComponent = routes.ContentTypeMappings.find(\n item => item.contentTypeID === contentTypeId\n );\n\n if (MatchedComponent && !(MatchedComponent.requireLogin && !isLoggedIn)) {\n if (matchUserGroup(userGroups, MatchedComponent.requireLogin))\n return (\n <MatchedComponent.component\n projectId={projectId}\n contentTypeId={contentTypeId}\n entry={entry}\n mappedEntry={mappedEntry}\n isLoggedIn={isLoggedIn}\n />\n );\n }\n }\n\n const NotFoundComponent = notFoundComponent ? notFoundComponent : NotFound;\n if (isNotFound || isError) {\n return (\n <Status code={statusCode}>\n <NotFoundComponent statusCode={statusCode} statusText={statusText} />\n </Status>\n );\n }\n\n return null;\n};\nconst mapStateToPropsMemoized = createSelector(\n selectRouteEntryContentTypeId,\n selectRouteEntry,\n selectRouteIsError,\n selectIsNotFound,\n selectRouteLoading,\n selectUserIsAuthenticated,\n selectMappedEntry,\n selectCurrentProject,\n selectCurrentPath,\n selectRouteStatusCode,\n selectRouteErrorMessage,\n selectUserGroups,\n (\n contentTypeId,\n entry,\n isError,\n isNotFound,\n isLoading,\n isLoggedIn,\n mappedEntry,\n projectId,\n statePath,\n statusCode,\n statusText,\n userGroups\n ) => ({\n contentTypeId,\n entry,\n isError,\n isNotFound,\n isLoading,\n isLoggedIn,\n mappedEntry,\n projectId,\n statePath,\n statusCode,\n statusText,\n userGroups,\n })\n);\n\nconst mapDispatchToProps = {\n setNavigationPath,\n};\n\nexport default hot(module)(\n connect(mapStateToPropsMemoized, mapDispatchToProps)(toJS(RouteLoader))\n) as unknown as (props: AppRootProps & RouteLoaderProps) => JSX.Element;\n"],"names":["NotFound","statusCode","statusText","background","color","fontSize","padding","Status","code","children","staticContext","replaceDoubleSlashRecursive","path","nextPath","replace","match","getTrimmedPath","lastChar","length","substring","RouteLoader","contentTypeId","entry","isError","isLoading","isLoggedIn","isNotFound","loadingComponent","mappedEntry","notFoundComponent","projectId","routes","setNavigationPath","statePath","userGroups","withEvents","trailingSlashRedirectCode","location","useLocation","trimmedPath","pathname","matchedStaticRoute","matchRoutes","StaticRoutes","isStaticRoute","staticRoute","routeRequiresLogin","route","requireLogin","setPath","useCallback","serverPath","isExact","includes","url","fetchNodeLevel","split","splice","join","fetchNode","params","fetchNodeParams","routeParams","regexExp","RegExp","Object","keys","map","p","matched","param","filter","startsWith","window","useEffect","search","hash","matchUserGroup","renderRoutes","LoadingComponent","MatchedComponent","ContentTypeMappings","find","item","contentTypeID","NotFoundComponent","mapStateToPropsMemoized","createSelector","selectRouteEntryContentTypeId","selectRouteEntry","selectRouteIsError","selectIsNotFound","selectRouteLoading","selectUserIsAuthenticated","selectMappedEntry","selectCurrentProject","selectCurrentPath","selectRouteStatusCode","selectRouteErrorMessage","selectUserGroups","mapDispatchToProps","hot","module","connect","toJS"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"RouteLoader-47d70a26.js","sources":["../src/routing/components/NotFound.tsx","../src/routing/components/Status.tsx","../src/routing/components/RouteLoader.tsx"],"sourcesContent":["import React from 'react';\n\nconst NotFound = ({\n statusCode,\n statusText,\n}: {\n statusCode: number;\n statusText: string;\n}) => (\n <>\n <header>\n <h1>{statusCode || '404'} Page Not Found</h1>\n {statusText && (\n <h2\n style={{\n background: '#eee',\n color: '#666',\n fontSize: '100%',\n padding: '10px',\n }}\n >\n {statusText}\n </h2>\n )}\n </header>\n </>\n);\n\nexport default NotFound;\n","import React, { PropsWithChildren } from 'react';\nimport { Route } from 'react-router-dom';\n\nexport const Status = ({\n code,\n children,\n}: PropsWithChildren<{ code: number }>) => {\n return (\n <Route\n render={({ staticContext }) => {\n if (staticContext) staticContext.statusCode = code;\n return children;\n }}\n />\n );\n};\n","import React, { useEffect, useCallback } from 'react';\nimport { connect } from 'react-redux';\nimport { hot } from 'react-hot-loader';\nimport { Redirect, useLocation } from 'react-router-dom';\nimport { renderRoutes, matchRoutes, RouteConfig } from 'react-router-config';\nimport { createSelector } from 'reselect';\n\nimport NotFound from './NotFound';\nimport { Status } from './Status';\n\nimport {\n selectCurrentPath,\n selectCurrentProject,\n selectIsNotFound,\n selectMappedEntry,\n selectRouteEntry,\n selectRouteEntryContentTypeId,\n selectRouteErrorMessage,\n selectRouteIsError,\n selectRouteLoading,\n selectRouteStatusCode,\n} from '../redux/selectors';\nimport { setNavigationPath } from '../redux/actions';\n\nimport {\n selectUserGroups,\n selectUserIsAuthenticated,\n} from '~/user/redux/selectors';\nimport { matchUserGroup } from '~/user/util/matchGroups';\n\nimport { toJS } from '~/util/ToJs';\nimport { Entry } from 'contensis-delivery-api/lib/models';\nimport { AppRootProps, RouteComponentProps, RouteLoaderProps } from '../routes';\n\nconst replaceDoubleSlashRecursive = (path: string) => {\n const nextPath = path.replace(/\\/\\//, '/');\n\n if (nextPath.match(/\\/\\//)) {\n return replaceDoubleSlashRecursive(nextPath);\n }\n\n return nextPath;\n};\n\nconst getTrimmedPath = path => {\n if (path !== '/') {\n const nextPath = replaceDoubleSlashRecursive(path);\n const lastChar = nextPath[nextPath.length - 1];\n if (lastChar === '/') {\n return nextPath.substring(0, nextPath.length - 1);\n }\n }\n return path;\n};\n\ninterface IReduxProps {\n contentTypeId: string | null;\n entry: Entry | null;\n isError: boolean;\n isNotFound: boolean;\n isLoading: boolean;\n isLoggedIn: boolean;\n mappedEntry: any;\n projectId: string;\n setNavigationPath: typeof setNavigationPath;\n statePath: string;\n statusCode: any;\n statusText: string;\n userGroups: any;\n}\n\nconst RouteLoader = ({\n contentTypeId,\n entry,\n isError,\n isLoading,\n isLoggedIn,\n isNotFound,\n loadingComponent,\n mappedEntry,\n notFoundComponent,\n projectId,\n routes,\n setNavigationPath,\n statePath,\n statusCode,\n statusText,\n userGroups,\n withEvents,\n trailingSlashRedirectCode = 302,\n}: AppRootProps & RouteLoaderProps & IReduxProps) => {\n const location = useLocation();\n // Always ensure paths are trimmed of trailing slashes so urls are always unique\n const trimmedPath = getTrimmedPath(location.pathname);\n\n // Match any Static Routes a developer has defined\n const matchedStaticRoute = () =>\n matchRoutes(routes.StaticRoutes as RouteConfig[], location.pathname);\n const isStaticRoute = () => matchedStaticRoute().length > 0;\n\n const staticRoute = isStaticRoute() && matchedStaticRoute()[0];\n const routeRequiresLogin = staticRoute && staticRoute.route.requireLogin;\n\n const setPath = useCallback(() => {\n // Use serverPath to control the path we send to siteview node api to resolve a route\n let serverPath = '';\n if (staticRoute && staticRoute.match && staticRoute.match.isExact) {\n const { match, route } = staticRoute;\n\n if (route.path?.includes('*')) {\n // Send the whole url to api if we have matched route containing wildcard\n serverPath = match.url;\n } else if (typeof route.fetchNodeLevel === 'number') {\n // Send all url parts to a specified level to api\n serverPath = match.url\n .split('/')\n .splice(0, route.fetchNodeLevel + 1)\n .join('/');\n } else if (route.fetchNode?.params) {\n const fetchNodeParams: string[] = route.fetchNode.params;\n const routeParams: { [key: string]: string } = match.params;\n\n const regexExp = new RegExp(\n Object.keys(routeParams)\n .map(p => `:${p}`)\n .join('|'),\n 'g'\n );\n\n serverPath = match.path\n .replace(/\\?/g, '')\n .replace(regexExp, matched => {\n const param = matched.replace(':', '');\n if (fetchNodeParams.includes(param)) return routeParams[param];\n else return '';\n })\n .replace(/\\/$/, '');\n } else {\n // Send all non-parameterised url parts to api\n serverPath = (route.path as string)\n ?.split('/')\n .filter(p => !p.startsWith(':'))\n .join('/');\n }\n }\n\n setNavigationPath(\n serverPath || trimmedPath,\n location,\n staticRoute,\n withEvents,\n statePath,\n routes\n );\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n setNavigationPath,\n // staticRoute,\n withEvents,\n location,\n routes,\n // statePath,\n trimmedPath,\n ]);\n\n if (typeof window == 'undefined') setPath();\n\n useEffect(() => {\n setPath();\n }, [location, setPath]);\n\n // Need to redirect when url endswith a /\n if (location.pathname.length > trimmedPath.length) {\n return (\n <Status code={trailingSlashRedirectCode}>\n <Redirect to={`${trimmedPath}${location.search}${location.hash}`} />\n </Status>\n );\n }\n\n // Render any Static Routes a developer has defined\n if (isStaticRoute() && !(!isLoggedIn && routeRequiresLogin)) {\n if (matchUserGroup(userGroups, routeRequiresLogin))\n return renderRoutes(\n routes.StaticRoutes as RouteConfig[],\n {\n projectId,\n contentTypeId,\n entry,\n mappedEntry,\n isLoggedIn,\n } as RouteComponentProps\n );\n }\n\n // Render a supplied Loading component if the route\n // is not a static route and is in a loading state\n if (isLoading && !isNotFound && loadingComponent) {\n const LoadingComponent = loadingComponent;\n return <LoadingComponent />;\n }\n\n // Match any defined Content Type Mappings\n if (contentTypeId && !(!isLoggedIn && routeRequiresLogin)) {\n const MatchedComponent = routes.ContentTypeMappings.find(\n item => item.contentTypeID === contentTypeId\n );\n\n if (MatchedComponent && !(MatchedComponent.requireLogin && !isLoggedIn)) {\n if (matchUserGroup(userGroups, MatchedComponent.requireLogin))\n return (\n <MatchedComponent.component\n projectId={projectId}\n contentTypeId={contentTypeId}\n entry={entry}\n mappedEntry={mappedEntry}\n isLoggedIn={isLoggedIn}\n />\n );\n }\n }\n\n const NotFoundComponent = notFoundComponent ? notFoundComponent : NotFound;\n if (isNotFound || isError) {\n return (\n <Status code={statusCode}>\n <NotFoundComponent statusCode={statusCode} statusText={statusText} />\n </Status>\n );\n }\n\n return null;\n};\nconst mapStateToPropsMemoized = createSelector(\n selectRouteEntryContentTypeId,\n selectRouteEntry,\n selectRouteIsError,\n selectIsNotFound,\n selectRouteLoading,\n selectUserIsAuthenticated,\n selectMappedEntry,\n selectCurrentProject,\n selectCurrentPath,\n selectRouteStatusCode,\n selectRouteErrorMessage,\n selectUserGroups,\n (\n contentTypeId,\n entry,\n isError,\n isNotFound,\n isLoading,\n isLoggedIn,\n mappedEntry,\n projectId,\n statePath,\n statusCode,\n statusText,\n userGroups\n ) => ({\n contentTypeId,\n entry,\n isError,\n isNotFound,\n isLoading,\n isLoggedIn,\n mappedEntry,\n projectId,\n statePath,\n statusCode,\n statusText,\n userGroups,\n })\n);\n\nconst mapDispatchToProps = {\n setNavigationPath,\n};\n\nexport default hot(module)(\n connect(mapStateToPropsMemoized, mapDispatchToProps)(toJS(RouteLoader))\n) as unknown as (props: AppRootProps & RouteLoaderProps) => JSX.Element;\n"],"names":["NotFound","statusCode","statusText","React","createElement","Fragment","style","background","color","fontSize","padding","Status","code","children","Route","render","staticContext","replaceDoubleSlashRecursive","path","nextPath","replace","match","getTrimmedPath","lastChar","length","substring","RouteLoader","contentTypeId","entry","isError","isLoading","isLoggedIn","isNotFound","loadingComponent","mappedEntry","notFoundComponent","projectId","routes","setNavigationPath","statePath","userGroups","withEvents","trailingSlashRedirectCode","location","useLocation","trimmedPath","pathname","matchedStaticRoute","matchRoutes","StaticRoutes","isStaticRoute","staticRoute","routeRequiresLogin","route","requireLogin","setPath","useCallback","serverPath","isExact","_route$path","_route$fetchNode","includes","url","fetchNodeLevel","split","splice","join","fetchNode","params","fetchNodeParams","routeParams","regexExp","RegExp","Object","keys","map","p","matched","param","_route$path2","filter","startsWith","window","useEffect","Redirect","to","search","hash","matchUserGroup","renderRoutes","LoadingComponent","MatchedComponent","ContentTypeMappings","find","item","contentTypeID","component","NotFoundComponent","mapStateToPropsMemoized","createSelector","selectRouteEntryContentTypeId","selectRouteEntry","selectRouteIsError","selectIsNotFound","selectRouteLoading","selectUserIsAuthenticated","selectMappedEntry","selectCurrentProject","selectCurrentPath","selectRouteStatusCode","selectRouteErrorMessage","selectUserGroups","mapDispatchToProps","hot","module","connect","toJS"],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var selectors$1 = require('./selectors-
|
|
3
|
+
var selectors$1 = require('./selectors-c76c2676.js');
|
|
4
4
|
var React = require('react');
|
|
5
5
|
|
|
6
6
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
@@ -11,12 +11,12 @@ const selectUserIsLoading = state => selectors$1.getImmutableOrJS(state, ['user'
|
|
|
11
11
|
const selectUserIsAuthenticated = state => selectors$1.getImmutableOrJS(state, ['user', 'authenticationState', 'isAuthenticated']);
|
|
12
12
|
const selectUserIsAuthenticationError = state => selectors$1.getImmutableOrJS(state, ['user', 'authenticationState', 'isAuthenticationError']);
|
|
13
13
|
const selectUserIsError = state => selectors$1.getImmutableOrJS(state, ['user', 'authenticationState', 'isError']);
|
|
14
|
+
|
|
14
15
|
/**
|
|
15
16
|
* DEPRECATED 12/2021 - use selectUserErrorMessage instead
|
|
16
17
|
* @param state AppState
|
|
17
18
|
* @returns string
|
|
18
19
|
*/
|
|
19
|
-
|
|
20
20
|
const selectUserAuthenticationErrorMessage = state => selectors$1.getImmutableOrJS(state, ['user', 'authenticationState', 'errorMessage']);
|
|
21
21
|
const selectUserErrorMessage = state => selectors$1.getImmutableOrJS(state, ['user', 'authenticationState', 'errorMessage']);
|
|
22
22
|
const selectClientCredentials = (state, returnType) => selectors$1.getImmutableOrJS(state, ['user', 'authenticationState', 'clientCredentials'], {}, returnType);
|
|
@@ -79,7 +79,6 @@ const matchUserGroup = (userGroups = [], requiredGroups = []) => {
|
|
|
79
79
|
if (requiredGroup.id === userGroup.id) {
|
|
80
80
|
return true;
|
|
81
81
|
}
|
|
82
|
-
|
|
83
82
|
if (requiredGroup.name === userGroup.name) {
|
|
84
83
|
return true;
|
|
85
84
|
}
|
|
@@ -126,4 +125,4 @@ exports.selectUserRegistrationIsLoading = selectUserRegistrationIsLoading;
|
|
|
126
125
|
exports.selectUserRegistrationIsSuccess = selectUserRegistrationIsSuccess;
|
|
127
126
|
exports.selectors = selectors;
|
|
128
127
|
exports.toJS = toJS;
|
|
129
|
-
//# sourceMappingURL=ToJs-
|
|
128
|
+
//# sourceMappingURL=ToJs-61c03582.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ToJs-d962c80f.js","sources":["../src/user/redux/selectors.ts","../src/user/util/matchGroups.ts","../src/util/ToJs.tsx"],"sourcesContent":["import { StateType } from '~/config';\nimport { AppState } from '~/redux/appstate';\nimport { getImmutableOrJS as getIn } from '~/redux/util';\n\nexport const selectUserIsLoading = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isLoading']);\n\nexport const selectUserIsAuthenticated = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isAuthenticated']);\n\nexport const selectUserIsAuthenticationError = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isAuthenticationError']);\n\nexport const selectUserIsError = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isError']);\n\n/**\n * DEPRECATED 12/2021 - use selectUserErrorMessage instead\n * @param state AppState\n * @returns string\n */\nexport const selectUserAuthenticationErrorMessage = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'errorMessage']);\n\nexport const selectUserErrorMessage = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'errorMessage']);\n\nexport const selectClientCredentials = (\n state: AppState,\n returnType?: StateType\n) =>\n getIn(\n state,\n ['user', 'authenticationState', 'clientCredentials'],\n {},\n returnType\n );\n\nexport const selectUser = (state: AppState, returnType?: StateType) =>\n getIn(state, 'user', {}, returnType);\n\nexport const selectUserIsZengentiStaff = (state: AppState) =>\n getIn(state, ['user', 'isZengentiStaff']);\n\nexport const selectUserGuid = (state: AppState) => getIn(state, ['user', 'id']);\n\nexport const selectUsername = (state: AppState) =>\n getIn(state, ['user', 'username']);\n\nexport const selectUserEmail = (state: AppState) =>\n getIn(state, ['user', 'email']);\n\nexport const selectUserGroups = (state: AppState, returnType?: StateType) =>\n getIn(state, ['user', 'groups'], [], returnType);\n\nexport const selectUserSecurityToken = (state: AppState) =>\n getIn(state, [\n 'user',\n 'authenticationState',\n 'clientCredentials',\n 'contensisClassicToken',\n ]);\n\nexport const selectUserRegistration = (\n state: AppState,\n returnType?: StateType\n) => getIn(state, ['user', 'registration'], {}, returnType);\n\nexport const selectUserRegistrationError = (state: AppState) =>\n getIn(state, ['user', 'registration', 'error'], false);\n\nexport const selectUserRegistrationIsLoading = (state: AppState) =>\n getIn(state, ['user', 'registration', 'isLoading'], false);\n\nexport const selectUserRegistrationIsSuccess = (state: AppState) =>\n getIn(state, ['user', 'registration', 'success'], false);\n\nexport const selectPasswordResetRequestSending = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'isSending']);\n\nexport const selectPasswordResetRequestSent = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'sent']);\n\nexport const selectPasswordResetRequestError = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'error']);\n\nexport const selectResetPasswordSending = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'isSending']);\n\nexport const selectResetPasswordSent = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'sent']);\n\nexport const selectResetPasswordError = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'error']);\n\nexport const selectChangePasswordSending = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'isSending']);\n\nexport const selectChangePasswordSent = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'sent']);\n\nexport const selectChangePasswordError = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'error']);\n","import { Group } from 'contensis-management-api/lib/models';\nimport { RequireLogin } from '~/routing/routes';\n\nexport const matchUserGroup = (\n userGroups: Group[] = [],\n requiredGroups: RequireLogin = []\n) => {\n if (\n !Array.isArray(requiredGroups) ||\n (Array.isArray(requiredGroups) && requiredGroups.length === 0)\n )\n return true;\n\n const groupMatch = requiredGroups.some(requiredGroup => {\n return userGroups.some(userGroup => {\n if (requiredGroup.id === userGroup.id) {\n return true;\n }\n if (requiredGroup.name === userGroup.name) {\n return true;\n }\n });\n });\n return groupMatch;\n};\n","/* eslint-disable react/display-name */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport React from 'react';\n\nexport const toJS =\n <Props extends { [key: string]: any }>(\n WrappedComponent: React.ComponentType<Props>\n ): React.ComponentType<Props> =>\n (wrappedComponentProps: Props) => {\n const KEY = 0;\n const VALUE = 1;\n\n const propsJS = Object.entries(wrappedComponentProps).reduce<Props>(\n (newProps: any, wrappedComponentProp) => {\n const propKey = wrappedComponentProp[KEY];\n const propValue = wrappedComponentProp[VALUE];\n newProps[propKey] =\n propValue && typeof propValue === 'object' && 'toJS' in propValue\n ? propValue.toJS()\n : propValue;\n return newProps as Props;\n },\n {} as Props\n );\n\n return <WrappedComponent {...propsJS} />;\n };\n"],"names":["selectUserIsLoading","state","getIn","selectUserIsAuthenticated","selectUserIsAuthenticationError","selectUserIsError","selectUserAuthenticationErrorMessage","selectUserErrorMessage","selectClientCredentials","returnType","selectUser","selectUserIsZengentiStaff","selectUserGuid","selectUsername","selectUserEmail","selectUserGroups","selectUserSecurityToken","selectUserRegistration","selectUserRegistrationError","selectUserRegistrationIsLoading","selectUserRegistrationIsSuccess","selectPasswordResetRequestSending","selectPasswordResetRequestSent","selectPasswordResetRequestError","selectResetPasswordSending","selectResetPasswordSent","selectResetPasswordError","selectChangePasswordSending","selectChangePasswordSent","selectChangePasswordError","matchUserGroup","userGroups","requiredGroups","Array","isArray","length","groupMatch","some","requiredGroup","userGroup","id","name","toJS","WrappedComponent","wrappedComponentProps","KEY","VALUE","propsJS","Object","entries","reduce","newProps","wrappedComponentProp","propKey","propValue","React"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ToJs-61c03582.js","sources":["../src/user/redux/selectors.ts","../src/user/util/matchGroups.ts","../src/util/ToJs.tsx"],"sourcesContent":["import { StateType } from '~/config';\nimport { AppState } from '~/redux/appstate';\nimport { getImmutableOrJS as getIn } from '~/redux/util';\n\nexport const selectUserIsLoading = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isLoading']);\n\nexport const selectUserIsAuthenticated = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isAuthenticated']);\n\nexport const selectUserIsAuthenticationError = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isAuthenticationError']);\n\nexport const selectUserIsError = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'isError']);\n\n/**\n * DEPRECATED 12/2021 - use selectUserErrorMessage instead\n * @param state AppState\n * @returns string\n */\nexport const selectUserAuthenticationErrorMessage = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'errorMessage']);\n\nexport const selectUserErrorMessage = (state: AppState) =>\n getIn(state, ['user', 'authenticationState', 'errorMessage']);\n\nexport const selectClientCredentials = (\n state: AppState,\n returnType?: StateType\n) =>\n getIn(\n state,\n ['user', 'authenticationState', 'clientCredentials'],\n {},\n returnType\n );\n\nexport const selectUser = (state: AppState, returnType?: StateType) =>\n getIn(state, 'user', {}, returnType);\n\nexport const selectUserIsZengentiStaff = (state: AppState) =>\n getIn(state, ['user', 'isZengentiStaff']);\n\nexport const selectUserGuid = (state: AppState) => getIn(state, ['user', 'id']);\n\nexport const selectUsername = (state: AppState) =>\n getIn(state, ['user', 'username']);\n\nexport const selectUserEmail = (state: AppState) =>\n getIn(state, ['user', 'email']);\n\nexport const selectUserGroups = (state: AppState, returnType?: StateType) =>\n getIn(state, ['user', 'groups'], [], returnType);\n\nexport const selectUserSecurityToken = (state: AppState) =>\n getIn(state, [\n 'user',\n 'authenticationState',\n 'clientCredentials',\n 'contensisClassicToken',\n ]);\n\nexport const selectUserRegistration = (\n state: AppState,\n returnType?: StateType\n) => getIn(state, ['user', 'registration'], {}, returnType);\n\nexport const selectUserRegistrationError = (state: AppState) =>\n getIn(state, ['user', 'registration', 'error'], false);\n\nexport const selectUserRegistrationIsLoading = (state: AppState) =>\n getIn(state, ['user', 'registration', 'isLoading'], false);\n\nexport const selectUserRegistrationIsSuccess = (state: AppState) =>\n getIn(state, ['user', 'registration', 'success'], false);\n\nexport const selectPasswordResetRequestSending = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'isSending']);\n\nexport const selectPasswordResetRequestSent = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'sent']);\n\nexport const selectPasswordResetRequestError = (state: AppState) =>\n getIn(state, ['user', 'passwordResetRequest', 'error']);\n\nexport const selectResetPasswordSending = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'isSending']);\n\nexport const selectResetPasswordSent = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'sent']);\n\nexport const selectResetPasswordError = (state: AppState) =>\n getIn(state, ['user', 'resetPassword', 'error']);\n\nexport const selectChangePasswordSending = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'isSending']);\n\nexport const selectChangePasswordSent = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'sent']);\n\nexport const selectChangePasswordError = (state: AppState) =>\n getIn(state, ['user', 'changePassword', 'error']);\n","import { Group } from 'contensis-management-api/lib/models';\nimport { RequireLogin } from '~/routing/routes';\n\nexport const matchUserGroup = (\n userGroups: Group[] = [],\n requiredGroups: RequireLogin = []\n) => {\n if (\n !Array.isArray(requiredGroups) ||\n (Array.isArray(requiredGroups) && requiredGroups.length === 0)\n )\n return true;\n\n const groupMatch = requiredGroups.some(requiredGroup => {\n return userGroups.some(userGroup => {\n if (requiredGroup.id === userGroup.id) {\n return true;\n }\n if (requiredGroup.name === userGroup.name) {\n return true;\n }\n });\n });\n return groupMatch;\n};\n","/* eslint-disable react/display-name */\n/* eslint-disable @typescript-eslint/naming-convention */\nimport React from 'react';\n\nexport const toJS =\n <Props extends { [key: string]: any }>(\n WrappedComponent: React.ComponentType<Props>\n ): React.ComponentType<Props> =>\n (wrappedComponentProps: Props) => {\n const KEY = 0;\n const VALUE = 1;\n\n const propsJS = Object.entries(wrappedComponentProps).reduce<Props>(\n (newProps: any, wrappedComponentProp) => {\n const propKey = wrappedComponentProp[KEY];\n const propValue = wrappedComponentProp[VALUE];\n newProps[propKey] =\n propValue && typeof propValue === 'object' && 'toJS' in propValue\n ? propValue.toJS()\n : propValue;\n return newProps as Props;\n },\n {} as Props\n );\n\n return <WrappedComponent {...propsJS} />;\n };\n"],"names":["selectUserIsLoading","state","getIn","selectUserIsAuthenticated","selectUserIsAuthenticationError","selectUserIsError","selectUserAuthenticationErrorMessage","selectUserErrorMessage","selectClientCredentials","returnType","selectUser","selectUserIsZengentiStaff","selectUserGuid","selectUsername","selectUserEmail","selectUserGroups","selectUserSecurityToken","selectUserRegistration","selectUserRegistrationError","selectUserRegistrationIsLoading","selectUserRegistrationIsSuccess","selectPasswordResetRequestSending","selectPasswordResetRequestSent","selectPasswordResetRequestError","selectResetPasswordSending","selectResetPasswordSent","selectResetPasswordError","selectChangePasswordSending","selectChangePasswordSent","selectChangePasswordError","matchUserGroup","userGroups","requiredGroups","Array","isArray","length","groupMatch","some","requiredGroup","userGroup","id","name","toJS","WrappedComponent","wrappedComponentProps","KEY","VALUE","propsJS","Object","entries","reduce","newProps","wrappedComponentProp","propKey","propValue","React","createElement"],"mappings":"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"}
|
package/cjs/client.js
CHANGED
|
@@ -11,28 +11,28 @@ var reactRouterDom = require('react-router-dom');
|
|
|
11
11
|
var component = require('@loadable/component');
|
|
12
12
|
var queryString = require('query-string');
|
|
13
13
|
var reactCookie = require('react-cookie');
|
|
14
|
-
var version = require('./version-
|
|
15
|
-
var version$1 = require('./version-
|
|
16
|
-
var App = require('./App-
|
|
17
|
-
var selectors = require('./selectors-
|
|
18
|
-
var ContensisDeliveryApi = require('./ContensisDeliveryApi-
|
|
14
|
+
var version = require('./version-38afaf2a.js');
|
|
15
|
+
var version$1 = require('./version-886f49d8.js');
|
|
16
|
+
var App = require('./App-2a7a16ad.js');
|
|
17
|
+
var selectors = require('./selectors-c76c2676.js');
|
|
18
|
+
var ContensisDeliveryApi = require('./ContensisDeliveryApi-de88df2a.js');
|
|
19
19
|
require('redux');
|
|
20
20
|
require('redux-thunk');
|
|
21
21
|
require('redux-saga');
|
|
22
22
|
require('redux-injectors');
|
|
23
23
|
require('immer');
|
|
24
24
|
require('deepmerge');
|
|
25
|
-
require('./reducers-
|
|
25
|
+
require('./reducers-9afb5f89.js');
|
|
26
26
|
require('@redux-saga/core/effects');
|
|
27
27
|
require('history');
|
|
28
28
|
require('loglevel');
|
|
29
|
-
require('./login-
|
|
30
|
-
require('./ToJs-
|
|
29
|
+
require('./login-2ea569cc.js');
|
|
30
|
+
require('./ToJs-61c03582.js');
|
|
31
31
|
require('jsonpath-mapper');
|
|
32
32
|
require('await-to-js');
|
|
33
33
|
require('js-cookie');
|
|
34
34
|
require('contensis-delivery-api');
|
|
35
|
-
require('./RouteLoader-
|
|
35
|
+
require('./RouteLoader-47d70a26.js');
|
|
36
36
|
require('react-router-config');
|
|
37
37
|
require('reselect');
|
|
38
38
|
|
|
@@ -50,7 +50,6 @@ class ClientApp {
|
|
|
50
50
|
withSagas,
|
|
51
51
|
withEvents
|
|
52
52
|
} = config;
|
|
53
|
-
|
|
54
53
|
const GetClientJSX = store => {
|
|
55
54
|
const ClientJsx = /*#__PURE__*/React__default["default"].createElement(reactHotLoader.AppContainer, null, /*#__PURE__*/React__default["default"].createElement(reactCookie.CookiesProvider, null, /*#__PURE__*/React__default["default"].createElement(reactRedux.Provider, {
|
|
56
55
|
store: store
|
|
@@ -62,12 +61,11 @@ class ClientApp {
|
|
|
62
61
|
})))));
|
|
63
62
|
return ClientJsx;
|
|
64
63
|
};
|
|
65
|
-
|
|
66
64
|
const isProduction = !(process.env.NODE_ENV !== 'production');
|
|
65
|
+
|
|
67
66
|
/**
|
|
68
67
|
* Webpack HMR Setup.
|
|
69
68
|
*/
|
|
70
|
-
|
|
71
69
|
const HMRRenderer = Component => {
|
|
72
70
|
if (isProduction) component.loadableReady(() => {
|
|
73
71
|
reactDom.hydrate(Component, documentRoot);
|
|
@@ -75,7 +73,6 @@ class ClientApp {
|
|
|
75
73
|
namespace: 'modern'
|
|
76
74
|
});else reactDom.render(Component, documentRoot);
|
|
77
75
|
};
|
|
78
|
-
|
|
79
76
|
const hmr = store => {
|
|
80
77
|
// webpack Hot Module Replacement API
|
|
81
78
|
if (module.hot) {
|
|
@@ -85,20 +82,17 @@ class ClientApp {
|
|
|
85
82
|
});
|
|
86
83
|
}
|
|
87
84
|
};
|
|
88
|
-
|
|
89
85
|
const qs = queryString.parse(window.location.search);
|
|
90
86
|
const versionStatus = ContensisDeliveryApi.deliveryApi.getClientSideVersionStatus();
|
|
91
|
-
|
|
92
87
|
if (window.isDynamic || window.REDUX_DATA || process.env.NODE_ENV !== 'production') {
|
|
93
88
|
version.createStore(withReducers, window.REDUX_DATA, App.browserHistory, stateType).then(store => {
|
|
94
89
|
const state = store.getState();
|
|
95
90
|
const ssrVersionStatus = version.selectVersionStatus(state);
|
|
96
91
|
if (!ssrVersionStatus) store.dispatch(version$1.setVersionStatus(versionStatus));
|
|
97
|
-
/* eslint-disable no-console */
|
|
98
92
|
|
|
93
|
+
/* eslint-disable no-console */
|
|
99
94
|
console.log('Hydrating from inline Redux');
|
|
100
95
|
/* eslint-enable no-console */
|
|
101
|
-
|
|
102
96
|
store.runSaga(App.rootSaga(withSagas));
|
|
103
97
|
store.dispatch(selectors.setCurrentProject(App.pickProject(window.location.hostname, qs), [], window.location.hostname));
|
|
104
98
|
delete window.REDUX_DATA;
|
|
@@ -118,7 +112,6 @@ class ClientApp {
|
|
|
118
112
|
});
|
|
119
113
|
}
|
|
120
114
|
}
|
|
121
|
-
|
|
122
115
|
}
|
|
123
116
|
|
|
124
117
|
exports.ReactApp = App.AppRoot;
|
package/cjs/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sources":["../src/client/client.tsx"],"sourcesContent":["import 'isomorphic-fetch';\nimport React from 'react';\nimport { render, hydrate } from 'react-dom';\nimport { AppContainer } from 'react-hot-loader';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { Router } from 'react-router-dom';\nimport { loadableReady } from '@loadable/component';\nimport { parse } from 'query-string';\nimport { CookiesProvider } from 'react-cookie';\n\nimport { selectVersionStatus } from '~/redux/selectors/version';\nimport { setVersionStatus } from '~/redux/actions/version';\nimport rootSaga from '~/redux/sagas';\nimport { browserHistory as history } from '~/redux/store/history';\nimport createStore from '~/redux/store/store';\n\nimport { setCurrentProject } from '~/routing/redux/actions';\n\nimport { deliveryApi } from '~/util/ContensisDeliveryApi';\nimport pickProject from '~/util/pickProject';\n\nimport { AppConfig } from '~/config';\n\ndeclare let window: typeof globalThis & {\n isDynamic;\n REDUX_DATA;\n};\n\ntype ReactAppProps = { routes: any; withEvents: any };\n\nclass ClientApp {\n constructor(ReactApp: React.ComponentType<ReactAppProps>, config: AppConfig) {\n const documentRoot = document.getElementById('root');\n\n const {\n stateType = 'immutable',\n routes,\n withReducers,\n withSagas,\n withEvents,\n } = config;\n\n const GetClientJSX = store => {\n const ClientJsx = (\n <AppContainer>\n <CookiesProvider>\n <ReduxProvider store={store}>\n <Router history={history}>\n <ReactApp routes={routes} withEvents={withEvents} />\n </Router>\n </ReduxProvider>\n </CookiesProvider>\n </AppContainer>\n );\n return ClientJsx;\n };\n\n const isProduction = !(process.env.NODE_ENV !== 'production');\n\n /**\n * Webpack HMR Setup.\n */\n const HMRRenderer = Component => {\n if (isProduction)\n loadableReady(\n () => {\n hydrate(Component, documentRoot);\n },\n { namespace: 'modern' }\n );\n else render(Component, documentRoot);\n };\n\n const hmr = store => {\n // webpack Hot Module Replacement API\n if (module.hot) {\n module.hot.accept(ReactApp as unknown as string, () => {\n // if you are using harmony modules ({modules:false})\n HMRRenderer(GetClientJSX(store));\n });\n }\n };\n\n const qs = parse(window.location.search);\n const versionStatus = deliveryApi.getClientSideVersionStatus();\n\n if (\n window.isDynamic ||\n window.REDUX_DATA ||\n process.env.NODE_ENV !== 'production'\n ) {\n createStore(withReducers, window.REDUX_DATA, history, stateType).then(\n store => {\n const state = store.getState();\n const ssrVersionStatus = selectVersionStatus(state);\n if (!ssrVersionStatus)\n store.dispatch(setVersionStatus(versionStatus));\n\n /* eslint-disable no-console */\n console.log('Hydrating from inline Redux');\n /* eslint-enable no-console */\n store.runSaga(rootSaga(withSagas));\n store.dispatch(\n setCurrentProject(\n pickProject(window.location.hostname, qs),\n [],\n window.location.hostname\n )\n );\n\n delete window.REDUX_DATA;\n HMRRenderer(GetClientJSX(store));\n\n hmr(store);\n }\n );\n } else {\n fetch(`${window.location.pathname}?redux=true`)\n .then(response => response.json())\n .then(data => {\n const ssRedux = JSON.parse(data);\n createStore(withReducers, ssRedux, history, stateType).then(store => {\n store.dispatch(setVersionStatus(versionStatus));\n\n store.runSaga(rootSaga(withSagas));\n store.dispatch(\n setCurrentProject(\n pickProject(window.location.hostname, qs),\n [],\n window.location.hostname\n )\n );\n\n HMRRenderer(GetClientJSX(store));\n\n hmr(store);\n });\n });\n }\n }\n}\n\nexport default ClientApp;\n"],"names":["ClientApp","constructor","ReactApp","config","documentRoot","document","getElementById","stateType","routes","withReducers","withSagas","withEvents","GetClientJSX","store","ClientJsx","React","AppContainer","CookiesProvider","ReduxProvider","Router","history","isProduction","process","env","NODE_ENV","HMRRenderer","Component","loadableReady","hydrate","namespace","render","hmr","module","hot","accept","qs","parse","window","location","search","versionStatus","deliveryApi","getClientSideVersionStatus","isDynamic","REDUX_DATA","createStore","then","state","getState","ssrVersionStatus","selectVersionStatus","dispatch","setVersionStatus","console","log","runSaga","rootSaga","setCurrentProject","pickProject","hostname","fetch","pathname","response","json","data","ssRedux","JSON"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BA,MAAMA,
|
|
1
|
+
{"version":3,"file":"client.js","sources":["../src/client/client.tsx"],"sourcesContent":["import 'isomorphic-fetch';\nimport React from 'react';\nimport { render, hydrate } from 'react-dom';\nimport { AppContainer } from 'react-hot-loader';\nimport { Provider as ReduxProvider } from 'react-redux';\nimport { Router } from 'react-router-dom';\nimport { loadableReady } from '@loadable/component';\nimport { parse } from 'query-string';\nimport { CookiesProvider } from 'react-cookie';\n\nimport { selectVersionStatus } from '~/redux/selectors/version';\nimport { setVersionStatus } from '~/redux/actions/version';\nimport rootSaga from '~/redux/sagas';\nimport { browserHistory as history } from '~/redux/store/history';\nimport createStore from '~/redux/store/store';\n\nimport { setCurrentProject } from '~/routing/redux/actions';\n\nimport { deliveryApi } from '~/util/ContensisDeliveryApi';\nimport pickProject from '~/util/pickProject';\n\nimport { AppConfig } from '~/config';\n\ndeclare let window: typeof globalThis & {\n isDynamic;\n REDUX_DATA;\n};\n\ntype ReactAppProps = { routes: any; withEvents: any };\n\nclass ClientApp {\n constructor(ReactApp: React.ComponentType<ReactAppProps>, config: AppConfig) {\n const documentRoot = document.getElementById('root');\n\n const {\n stateType = 'immutable',\n routes,\n withReducers,\n withSagas,\n withEvents,\n } = config;\n\n const GetClientJSX = store => {\n const ClientJsx = (\n <AppContainer>\n <CookiesProvider>\n <ReduxProvider store={store}>\n <Router history={history}>\n <ReactApp routes={routes} withEvents={withEvents} />\n </Router>\n </ReduxProvider>\n </CookiesProvider>\n </AppContainer>\n );\n return ClientJsx;\n };\n\n const isProduction = !(process.env.NODE_ENV !== 'production');\n\n /**\n * Webpack HMR Setup.\n */\n const HMRRenderer = Component => {\n if (isProduction)\n loadableReady(\n () => {\n hydrate(Component, documentRoot);\n },\n { namespace: 'modern' }\n );\n else render(Component, documentRoot);\n };\n\n const hmr = store => {\n // webpack Hot Module Replacement API\n if (module.hot) {\n module.hot.accept(ReactApp as unknown as string, () => {\n // if you are using harmony modules ({modules:false})\n HMRRenderer(GetClientJSX(store));\n });\n }\n };\n\n const qs = parse(window.location.search);\n const versionStatus = deliveryApi.getClientSideVersionStatus();\n\n if (\n window.isDynamic ||\n window.REDUX_DATA ||\n process.env.NODE_ENV !== 'production'\n ) {\n createStore(withReducers, window.REDUX_DATA, history, stateType).then(\n store => {\n const state = store.getState();\n const ssrVersionStatus = selectVersionStatus(state);\n if (!ssrVersionStatus)\n store.dispatch(setVersionStatus(versionStatus));\n\n /* eslint-disable no-console */\n console.log('Hydrating from inline Redux');\n /* eslint-enable no-console */\n store.runSaga(rootSaga(withSagas));\n store.dispatch(\n setCurrentProject(\n pickProject(window.location.hostname, qs),\n [],\n window.location.hostname\n )\n );\n\n delete window.REDUX_DATA;\n HMRRenderer(GetClientJSX(store));\n\n hmr(store);\n }\n );\n } else {\n fetch(`${window.location.pathname}?redux=true`)\n .then(response => response.json())\n .then(data => {\n const ssRedux = JSON.parse(data);\n createStore(withReducers, ssRedux, history, stateType).then(store => {\n store.dispatch(setVersionStatus(versionStatus));\n\n store.runSaga(rootSaga(withSagas));\n store.dispatch(\n setCurrentProject(\n pickProject(window.location.hostname, qs),\n [],\n window.location.hostname\n )\n );\n\n HMRRenderer(GetClientJSX(store));\n\n hmr(store);\n });\n });\n }\n }\n}\n\nexport default ClientApp;\n"],"names":["ClientApp","constructor","ReactApp","config","documentRoot","document","getElementById","stateType","routes","withReducers","withSagas","withEvents","GetClientJSX","store","ClientJsx","React","createElement","AppContainer","CookiesProvider","ReduxProvider","Router","history","isProduction","process","env","NODE_ENV","HMRRenderer","Component","loadableReady","hydrate","namespace","render","hmr","module","hot","accept","qs","parse","window","location","search","versionStatus","deliveryApi","getClientSideVersionStatus","isDynamic","REDUX_DATA","createStore","then","state","getState","ssrVersionStatus","selectVersionStatus","dispatch","setVersionStatus","console","log","runSaga","rootSaga","setCurrentProject","pickProject","hostname","fetch","pathname","response","json","data","ssRedux","JSON"],"mappings":"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"}
|