@panneau/app 3.0.123 → 3.0.126

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/es/index.js +3 -2
  2. package/lib/index.js +1403 -246
  3. package/package.json +40 -39
package/lib/index.js CHANGED
@@ -4,10 +4,17 @@ Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
5
  var _defineProperty = require('@babel/runtime/helpers/defineProperty');
6
6
  var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
7
- var routes = require('@folklore/routes');
8
- var PropTypes = require('prop-types');
7
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
9
8
  var React = require('react');
10
- var wouter = require('wouter');
9
+ var PropTypes = require('prop-types');
10
+ var pathToRegexp = require('path-to-regexp');
11
+ var mitt = require('mitt');
12
+ var _createForOfIteratorHelper = require('@babel/runtime/helpers/createForOfIteratorHelper');
13
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
14
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
15
+ var _toArray = require('@babel/runtime/helpers/toArray');
16
+ var regexparam = require('regexparam');
17
+ var index_js = require('use-sync-external-store/shim/index.js');
11
18
  var auth = require('@panneau/auth');
12
19
  var core = require('@panneau/core');
13
20
  var contexts = require('@panneau/core/contexts');
@@ -20,13 +27,10 @@ var intl = require('@panneau/intl');
20
27
  var ListsProvider = require('@panneau/lists');
21
28
  var ModalsProvider = require('@panneau/modals');
22
29
  var uppy = require('@panneau/uppy');
23
- var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
24
- var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
25
- var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
26
30
  var isObject = require('lodash/isObject');
27
31
  var classNames = require('classnames');
28
32
  var isString = require('lodash/isString');
29
- var queryString = require('query-string');
33
+ var _typeof = require('@babel/runtime/helpers/typeof');
30
34
  var reactIntl = require('react-intl');
31
35
  var hooks = require('@panneau/core/hooks');
32
36
  var Alert = require('@panneau/element-alert');
@@ -43,50 +47,1203 @@ var ResourceForm$1 = require('@panneau/form-resource');
43
47
  var utils = require('@panneau/core/utils');
44
48
  var Filters = require('@panneau/filter-filters');
45
49
 
46
- function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
47
-
48
- var _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);
49
- var _objectSpread__default = /*#__PURE__*/_interopDefaultLegacy(_objectSpread);
50
- var PropTypes__default = /*#__PURE__*/_interopDefaultLegacy(PropTypes);
51
- var React__default = /*#__PURE__*/_interopDefaultLegacy(React);
52
- var DisplaysProvider__default = /*#__PURE__*/_interopDefaultLegacy(DisplaysProvider);
53
- var FieldsProvider__default = /*#__PURE__*/_interopDefaultLegacy(FieldsProvider);
54
- var FiltersProvider__default = /*#__PURE__*/_interopDefaultLegacy(FiltersProvider);
55
- var FormsProvider__default = /*#__PURE__*/_interopDefaultLegacy(FormsProvider);
56
- var ListsProvider__default = /*#__PURE__*/_interopDefaultLegacy(ListsProvider);
57
- var ModalsProvider__default = /*#__PURE__*/_interopDefaultLegacy(ModalsProvider);
58
- var _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);
59
- var _objectWithoutProperties__default = /*#__PURE__*/_interopDefaultLegacy(_objectWithoutProperties);
60
- var _slicedToArray__default = /*#__PURE__*/_interopDefaultLegacy(_slicedToArray);
61
- var isObject__default = /*#__PURE__*/_interopDefaultLegacy(isObject);
62
- var classNames__default = /*#__PURE__*/_interopDefaultLegacy(classNames);
63
- var isString__default = /*#__PURE__*/_interopDefaultLegacy(isString);
64
- var queryString__default = /*#__PURE__*/_interopDefaultLegacy(queryString);
65
- var Alert__default = /*#__PURE__*/_interopDefaultLegacy(Alert);
66
- var Button__default = /*#__PURE__*/_interopDefaultLegacy(Button);
67
- var Dropdown__default = /*#__PURE__*/_interopDefaultLegacy(Dropdown);
68
- var isArray__default = /*#__PURE__*/_interopDefaultLegacy(isArray);
69
- var Link__default = /*#__PURE__*/_interopDefaultLegacy(Link);
70
- var Menu__default = /*#__PURE__*/_interopDefaultLegacy(Menu);
71
- var Navbar__default = /*#__PURE__*/_interopDefaultLegacy(Navbar);
72
- var Label__default = /*#__PURE__*/_interopDefaultLegacy(Label);
73
- var ResourceList__default = /*#__PURE__*/_interopDefaultLegacy(ResourceList);
74
- var ResourceForm__default = /*#__PURE__*/_interopDefaultLegacy(ResourceForm$1);
75
- var Filters__default = /*#__PURE__*/_interopDefaultLegacy(Filters);
50
+ function _interopNamespaceDefault(e) {
51
+ var n = Object.create(null);
52
+ if (e) {
53
+ Object.keys(e).forEach(function (k) {
54
+ if (k !== 'default') {
55
+ var d = Object.getOwnPropertyDescriptor(e, k);
56
+ Object.defineProperty(n, k, d.get ? d : {
57
+ enumerable: true,
58
+ get: function () { return e[k]; }
59
+ });
60
+ }
61
+ });
62
+ }
63
+ n.default = e;
64
+ return Object.freeze(n);
65
+ }
66
+
67
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
68
+
69
+ // React.useInsertionEffect is not available in React <18
70
+ var useEffect = React__namespace.useEffect,
71
+ useLayoutEffect = React__namespace.useLayoutEffect,
72
+ useRef = React__namespace.useRef,
73
+ useBuiltinInsertionEffect = React__namespace.useInsertionEffect;
74
+
75
+ // Copied from:
76
+ // https://github.com/facebook/react/blob/main/packages/shared/ExecutionEnvironment.js
77
+ var canUseDOM = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined");
78
+
79
+ // Copied from:
80
+ // https://github.com/reduxjs/react-redux/blob/master/src/utils/useIsomorphicLayoutEffect.ts
81
+ // "React currently throws a warning when using useLayoutEffect on the server.
82
+ // To get around it, we can conditionally useEffect on the server (no-op) and
83
+ // useLayoutEffect in the browser."
84
+ var useIsomorphicLayoutEffect = canUseDOM ? useLayoutEffect : useEffect;
85
+
86
+ // useInsertionEffect is already a noop on the server.
87
+ // See: https://github.com/facebook/react/blob/main/packages/react-server/src/ReactFizzHooks.js
88
+ var useInsertionEffect = useBuiltinInsertionEffect || useIsomorphicLayoutEffect;
89
+
90
+ // Userland polyfill while we wait for the forthcoming
91
+ // https://github.com/reactjs/rfcs/blob/useevent/text/0000-useevent.md
92
+ // Note: "A high-fidelity polyfill for useEvent is not possible because
93
+ // there is no lifecycle or Hook in React that we can use to switch
94
+ // .current at the right timing."
95
+ // So we will have to make do with this "close enough" approach for now.
96
+ var useEvent = function useEvent(fn) {
97
+ var ref = useRef([fn, function () {
98
+ return ref[0].apply(ref, arguments);
99
+ }]).current;
100
+ // Per Dan Abramov: useInsertionEffect executes marginally closer to the
101
+ // correct timing for ref synchronization than useLayoutEffect on React 18.
102
+ // See: https://github.com/facebook/react/pull/25881#issuecomment-1356244360
103
+ useInsertionEffect(function () {
104
+ ref[0] = fn;
105
+ });
106
+ return ref[1];
107
+ };
108
+
109
+ /**
110
+ * History API docs @see https://developer.mozilla.org/en-US/docs/Web/API/History
111
+ */
112
+ var eventPopstate = "popstate";
113
+ var eventPushState = "pushState";
114
+ var eventReplaceState = "replaceState";
115
+ var eventHashchange = "hashchange";
116
+ var events = [eventPopstate, eventPushState, eventReplaceState, eventHashchange];
117
+ var subscribeToLocationUpdates = function subscribeToLocationUpdates(callback) {
118
+ for (var _i = 0, _events = events; _i < _events.length; _i++) {
119
+ var event = _events[_i];
120
+ addEventListener(event, callback);
121
+ }
122
+ return function () {
123
+ for (var _i2 = 0, _events2 = events; _i2 < _events2.length; _i2++) {
124
+ var _event = _events2[_i2];
125
+ removeEventListener(_event, callback);
126
+ }
127
+ };
128
+ };
129
+ var useLocationProperty = function useLocationProperty(fn, ssrFn) {
130
+ return index_js.useSyncExternalStore(subscribeToLocationUpdates, fn, ssrFn);
131
+ };
132
+ var currentSearch = function currentSearch() {
133
+ return location.search;
134
+ };
135
+ var useSearch$1 = function useSearch() {
136
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
137
+ _ref$ssrSearch = _ref.ssrSearch,
138
+ ssrSearch = _ref$ssrSearch === void 0 ? "" : _ref$ssrSearch;
139
+ return useLocationProperty(currentSearch, function () {
140
+ return ssrSearch;
141
+ });
142
+ };
143
+ var currentPathname = function currentPathname() {
144
+ return location.pathname;
145
+ };
146
+ var usePathname = function usePathname() {
147
+ var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
148
+ ssrPath = _ref2.ssrPath;
149
+ return useLocationProperty(currentPathname, ssrPath ? function () {
150
+ return ssrPath;
151
+ } : currentPathname);
152
+ };
153
+ var navigate = function navigate(to) {
154
+ var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
155
+ _ref3$replace = _ref3.replace,
156
+ replace = _ref3$replace === void 0 ? false : _ref3$replace,
157
+ _ref3$state = _ref3.state,
158
+ state = _ref3$state === void 0 ? null : _ref3$state;
159
+ return history[replace ? eventReplaceState : eventPushState](state, "", to);
160
+ };
161
+
162
+ // the 2nd argument of the `useBrowserLocation` return value is a function
163
+ // that allows to perform a navigation.
164
+ var useBrowserLocation = function useBrowserLocation() {
165
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
166
+ return [usePathname(opts), navigate];
167
+ };
168
+ var patchKey = Symbol["for"]("wouter_v3");
169
+
170
+ // While History API does have `popstate` event, the only
171
+ // proper way to listen to changes via `push/replaceState`
172
+ // is to monkey-patch these methods.
173
+ //
174
+ // See https://stackoverflow.com/a/4585031
175
+ if (typeof history !== "undefined" && typeof window[patchKey] === "undefined") {
176
+ var _loop = function _loop() {
177
+ var type = _arr[_i3];
178
+ var original = history[type];
179
+ // TODO: we should be using unstable_batchedUpdates to avoid multiple re-renders,
180
+ // however that will require an additional peer dependency on react-dom.
181
+ // See: https://github.com/reactwg/react-18/discussions/86#discussioncomment-1567149
182
+ history[type] = function () {
183
+ var result = original.apply(this, arguments);
184
+ var event = new Event(type);
185
+ event.arguments = arguments;
186
+ dispatchEvent(event);
187
+ return result;
188
+ };
189
+ };
190
+ for (var _i3 = 0, _arr = [eventPushState, eventReplaceState]; _i3 < _arr.length; _i3++) {
191
+ _loop();
192
+ }
193
+
194
+ // patch history object only once
195
+ // See: https://github.com/molefrog/wouter/issues/167
196
+ Object.defineProperty(window, patchKey, {
197
+ value: true
198
+ });
199
+ }
200
+
201
+ var _excluded$4 = ["children"],
202
+ _excluded2$1 = ["path", "nest", "match"],
203
+ _excluded3 = ["to", "href", "onClick", "asChild", "children", "replace", "state"];
204
+
205
+ /*
206
+ * Transforms `path` into its relative `base` version
207
+ * If base isn't part of the path provided returns absolute path e.g. `~/app`
208
+ */
209
+ var relativePath = function relativePath() {
210
+ var base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
211
+ var path = arguments.length > 1 ? arguments[1] : undefined;
212
+ return !path.toLowerCase().indexOf(base.toLowerCase()) ? path.slice(base.length) || "/" : "~" + path;
213
+ };
214
+ var absolutePath = function absolutePath(to) {
215
+ var base = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
216
+ return to[0] === "~" ? to.slice(1) : base + to;
217
+ };
218
+
219
+ /*
220
+ * Removes leading question mark
221
+ */
222
+ var stripQm = function stripQm(str) {
223
+ return str[0] === "?" ? str.slice(1) : str;
224
+ };
225
+
226
+ /*
227
+ * decodes escape sequences such as %20
228
+ */
229
+ var unescape = function unescape(str) {
230
+ try {
231
+ return decodeURI(str);
232
+ } catch (_e) {
233
+ // fail-safe mode: if string can't be decoded do nothing
234
+ return str;
235
+ }
236
+ };
237
+
238
+ /*
239
+ * Router and router context. Router is a lightweight object that represents the current
240
+ * routing options: how location is managed, base path etc.
241
+ *
242
+ * There is a default router present for most of the use cases, however it can be overridden
243
+ * via the <Router /> component.
244
+ */
245
+
246
+ var defaultRouter = {
247
+ hook: useBrowserLocation,
248
+ searchHook: useSearch$1,
249
+ parser: regexparam.parse,
250
+ base: "",
251
+ // this option is used to override the current location during SSR
252
+ ssrPath: undefined,
253
+ ssrSearch: undefined
254
+ };
255
+ var RouterCtx = React.createContext(defaultRouter);
256
+
257
+ // gets the closest parent router from the context
258
+ var useRouter = function useRouter() {
259
+ return React.useContext(RouterCtx);
260
+ };
261
+
262
+ /**
263
+ * Parameters context. Used by `useParams()` to get the
264
+ * matched params from the innermost `Route` component.
265
+ */
266
+
267
+ var ParamsCtx = React.createContext({});
268
+
269
+ /*
270
+ * Part 1, Hooks API: useRoute and useLocation
271
+ */
272
+
273
+ // Internal version of useLocation to avoid redundant useRouter calls
274
+
275
+ var useLocationFromRouter = function useLocationFromRouter(router) {
276
+ var _router$hook = router.hook(router),
277
+ _router$hook2 = _slicedToArray(_router$hook, 2),
278
+ location = _router$hook2[0],
279
+ navigate = _router$hook2[1];
280
+
281
+ // the function reference should stay the same between re-renders, so that
282
+ // it can be passed down as an element prop without any performance concerns.
283
+ // (This is achieved via `useEvent`.)
284
+ return [unescape(relativePath(router.base, location)), useEvent(function (to, navOpts) {
285
+ return navigate(absolutePath(to, router.base), navOpts);
286
+ })];
287
+ };
288
+ var useLocation = function useLocation() {
289
+ return useLocationFromRouter(useRouter());
290
+ };
291
+ var useSearch = function useSearch() {
292
+ var router = useRouter();
293
+ return unescape(stripQm(router.searchHook(router)));
294
+ };
295
+ var matchRoute = function matchRoute(parser, route, path, loose) {
296
+ // when parser is in "loose" mode, `$base` is equal to the
297
+ // first part of the route that matches the pattern
298
+ // (e.g. for pattern `/a/:b` and path `/a/1/2/3` the `$base` is `a/1`)
299
+ // we use this for route nesting
300
+ var _parser = parser(route || "*", loose),
301
+ pattern = _parser.pattern,
302
+ keys = _parser.keys;
303
+ var _ref = pattern.exec(path) || [],
304
+ _ref2 = _toArray(_ref),
305
+ $base = _ref2[0],
306
+ matches = _ref2.slice(1);
307
+ return $base !== undefined ? [true,
308
+ // an object with parameters matched, e.g. { foo: "bar" } for "/:foo"
309
+ // we "zip" two arrays here to construct the object
310
+ // ["foo"], ["bar"] → { foo: "bar" }
311
+ Object.fromEntries(keys.map(function (key, i) {
312
+ return [key, matches[i]];
313
+ }))].concat(_toConsumableArray(loose ? [$base] : [])) : [false, null];
314
+ };
315
+
316
+ /*
317
+ * Part 2, Low Carb Router API: Router, Route, Link, Switch
318
+ */
319
+
320
+ var Router = function Router(_ref3) {
321
+ var children = _ref3.children,
322
+ props = _objectWithoutProperties(_ref3, _excluded$4);
323
+ // the router we will inherit from - it is the closest router in the tree,
324
+ // unless the custom `hook` is provided (in that case it's the default one)
325
+ var parent_ = useRouter();
326
+ var parent = props.hook ? defaultRouter : parent_;
327
+
328
+ // holds to the context value: the router object
329
+ var value = parent;
330
+
331
+ // what is happening below: to avoid unnecessary rerenders in child components,
332
+ // we ensure that the router object reference is stable, unless there are any
333
+ // changes that require reload (e.g. `base` prop changes -> all components that
334
+ // get the router from the context should rerender, even if the component is memoized).
335
+ // the expected behaviour is:
336
+ //
337
+ // 1) when the resulted router is no different from the parent, use parent
338
+ // 2) if the custom `hook` prop is provided, we always inherit from the
339
+ // default router instead. this resets all previously overridden options.
340
+ // 3) when the router is customized here, it should stay stable between renders
341
+ var ref = React.useRef({}),
342
+ prev = ref.current,
343
+ next = prev;
344
+ for (var k in parent) {
345
+ var option = k === "base" ? /* base is special case, it is appended to the parent's base */
346
+ parent[k] + (props[k] || "") : props[k] || parent[k];
347
+ if (prev === next && option !== next[k]) {
348
+ ref.current = next = _objectSpread({}, next);
349
+ }
350
+ next[k] = option;
351
+
352
+ // the new router is no different from the parent, use parent
353
+ if (option !== parent[k]) value = next;
354
+ }
355
+ return React.createElement(RouterCtx.Provider, {
356
+ value: value,
357
+ children: children
358
+ });
359
+ };
360
+ var h_route = function h_route(_ref4, params) {
361
+ var children = _ref4.children,
362
+ component = _ref4.component;
363
+ // React-Router style `component` prop
364
+ if (component) return React.createElement(component, {
365
+ params: params
366
+ });
367
+
368
+ // support render prop or plain children
369
+ return typeof children === "function" ? children(params) : children;
370
+ };
371
+ var Route = function Route(_ref5) {
372
+ var path = _ref5.path,
373
+ nest = _ref5.nest,
374
+ match = _ref5.match,
375
+ renderProps = _objectWithoutProperties(_ref5, _excluded2$1);
376
+ var router = useRouter();
377
+ var _useLocationFromRoute = useLocationFromRouter(router),
378
+ _useLocationFromRoute2 = _slicedToArray(_useLocationFromRoute, 1),
379
+ location = _useLocationFromRoute2[0];
380
+ var _ref6 = // `match` is a special prop to give up control to the parent,
381
+ // it is used by the `Switch` to avoid double matching
382
+ match !== null && match !== void 0 ? match : matchRoute(router.parser, path, location, nest),
383
+ _ref7 = _slicedToArray(_ref6, 3),
384
+ matches = _ref7[0],
385
+ params = _ref7[1],
386
+ base = _ref7[2];
387
+ if (!matches) return null;
388
+ var children = base ? React.createElement(Router, {
389
+ base: base
390
+ }, h_route(renderProps, params)) : h_route(renderProps, params);
391
+ return React.createElement(ParamsCtx.Provider, {
392
+ value: params,
393
+ children: children
394
+ });
395
+ };
396
+ React.forwardRef(function (props, ref) {
397
+ var router = useRouter();
398
+ var _useLocationFromRoute3 = useLocationFromRouter(router),
399
+ _useLocationFromRoute4 = _slicedToArray(_useLocationFromRoute3, 2),
400
+ navigate = _useLocationFromRoute4[1];
401
+ var to = props.to,
402
+ _props$href = props.href,
403
+ _href = _props$href === void 0 ? to : _props$href,
404
+ _onClick = props.onClick,
405
+ asChild = props.asChild,
406
+ children = props.children;
407
+ props.replace;
408
+ props.state;
409
+ var restProps = _objectWithoutProperties(props, _excluded3);
410
+ var onClick = useEvent(function (event) {
411
+ // ignores the navigation when clicked using right mouse button or
412
+ // by holding a special modifier key: ctrl, command, win, alt, shift
413
+ if (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey || event.button !== 0) return;
414
+ _onClick && _onClick(event); // TODO: is it safe to use _onClick?.(event)
415
+ if (!event.defaultPrevented) {
416
+ event.preventDefault();
417
+ navigate(_href, props);
418
+ }
419
+ });
420
+
421
+ // handle nested routers and absolute paths
422
+ var href = _href[0] === "~" ? _href.slice(1) : router.base + _href;
423
+ return asChild && React.isValidElement(children) ? React.cloneElement(children, {
424
+ href: href,
425
+ onClick: onClick
426
+ }) : React.createElement("a", _objectSpread(_objectSpread({}, restProps), {}, {
427
+ href: href,
428
+ onClick: onClick,
429
+ children: children,
430
+ ref: ref
431
+ }));
432
+ });
433
+ var flattenChildren = function flattenChildren(children) {
434
+ var _ref8;
435
+ return Array.isArray(children) ? (_ref8 = []).concat.apply(_ref8, _toConsumableArray(children.map(function (c) {
436
+ return c && c.type === React.Fragment ? flattenChildren(c.props.children) : flattenChildren(c);
437
+ }))) : [children];
438
+ };
439
+ var Switch = function Switch(_ref9) {
440
+ var children = _ref9.children,
441
+ location = _ref9.location;
442
+ var router = useRouter();
443
+ var _useLocationFromRoute5 = useLocationFromRouter(router),
444
+ _useLocationFromRoute6 = _slicedToArray(_useLocationFromRoute5, 1),
445
+ originalLocation = _useLocationFromRoute6[0];
446
+ var _iterator = _createForOfIteratorHelper(flattenChildren(children)),
447
+ _step;
448
+ try {
449
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
450
+ var element = _step.value;
451
+ var match = 0;
452
+ if (React.isValidElement(element) &&
453
+ // we don't require an element to be of type Route,
454
+ // but we do require it to contain a truthy `path` prop.
455
+ // this allows to use different components that wrap Route
456
+ // inside of a switch, for example <AnimatedRoute />.
457
+ (match = matchRoute(router.parser, element.props.path, location || originalLocation, element.props.nest))[0]) return React.cloneElement(element, {
458
+ match: match
459
+ });
460
+ }
461
+ } catch (err) {
462
+ _iterator.e(err);
463
+ } finally {
464
+ _iterator.f();
465
+ }
466
+ return null;
467
+ };
468
+ var Redirect = function Redirect(props) {
469
+ var to = props.to,
470
+ _props$href2 = props.href,
471
+ href = _props$href2 === void 0 ? to : _props$href2;
472
+ var _useLocation = useLocation(),
473
+ _useLocation2 = _slicedToArray(_useLocation, 2),
474
+ navigate = _useLocation2[1];
475
+ var redirect = useEvent(function () {
476
+ return navigate(to || href, props);
477
+ });
478
+
479
+ // redirect is guaranteed to be stable since it is returned from useEvent
480
+ useIsomorphicLayoutEffect(function () {
481
+ redirect();
482
+ }, []); // eslint-disable-line react-hooks/exhaustive-deps
483
+
484
+ return null;
485
+ };
486
+
487
+ ({
488
+ children: PropTypes.node.isRequired,
489
+ routes: PropTypes.objectOf(PropTypes.string).isRequired,
490
+ basePath: PropTypes.string
491
+ });
492
+ function parseLocation(location) {
493
+ var search = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
494
+ var hash = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
495
+ var _split = (location || '').split('?', 2),
496
+ _split2 = _slicedToArray(_split, 2),
497
+ pathname = _split2[0],
498
+ _split2$ = _split2[1],
499
+ searchFromPath = _split2$ === void 0 ? null : _split2$;
500
+ var _split3 = (searchFromPath || '').split('#', 2),
501
+ _split4 = _slicedToArray(_split3, 2),
502
+ searchWithoutHash = _split4[0],
503
+ _split4$ = _split4[1],
504
+ hashFromPath = _split4$ === void 0 ? null : _split4$;
505
+ return {
506
+ pathname: pathname !== '' ? pathname : '/',
507
+ search: search || searchWithoutHash || null,
508
+ hash: hash || hashFromPath || null
509
+ };
510
+ }
511
+ function useMemoryRouter() {
512
+ var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
513
+ _ref3$path = _ref3.path,
514
+ path = _ref3$path === void 0 ? '/' : _ref3$path,
515
+ _ref3$static = _ref3["static"],
516
+ staticLocation = _ref3$static === void 0 ? false : _ref3$static;
517
+ _ref3.record;
518
+ var currentPath = parseLocation(path);
519
+ var emitter = mitt();
520
+ var navigateImplementation = function navigateImplementation(newPath) {
521
+ var newParsedPath = parseLocation(newPath);
522
+ currentPath = newParsedPath;
523
+ emitter.emit('navigate', path);
524
+ };
525
+ var navigate = !staticLocation ? navigateImplementation : function () {
526
+ return null;
527
+ };
528
+ var subscribe = function subscribe(cb) {
529
+ emitter.on('navigate', cb);
530
+ return function () {
531
+ return emitter.off('navigate', cb);
532
+ };
533
+ };
534
+ function reset() {
535
+ navigateImplementation(path);
536
+ }
537
+ var locationHook = function locationHook() {
538
+ return [React.useSyncExternalStore(subscribe, function () {
539
+ return currentPath.pathname;
540
+ }), navigate];
541
+ };
542
+ var searchHook = function searchHook() {
543
+ return React.useSyncExternalStore(subscribe, function () {
544
+ return currentPath.search || '';
545
+ });
546
+ };
547
+ return {
548
+ hook: locationHook,
549
+ searchHook: searchHook,
550
+ reset: reset,
551
+ navigate: navigate
552
+ };
553
+ }
554
+ function createPathToRegexpParser(opts) {
555
+ return function (path, loose) {
556
+ var keys = [];
557
+ var isWildcard = path.match(/(\/|^)\*$/) !== null;
558
+ var pattern = pathToRegexp.pathToRegexp(isWildcard ? path.replace(/(\/|^)\*$/, '$1(.*)') : path, keys, _objectSpread({
559
+ end: !loose && !isWildcard
560
+ }, opts));
561
+ return {
562
+ pattern: pattern,
563
+ // `pathToRegexp` returns some metadata about the keys,
564
+ // we want to strip it to just an array of keys
565
+ keys: keys.map(function (k) {
566
+ return k.name;
567
+ })
568
+ };
569
+ };
570
+ }
571
+
572
+ var token = '%[a-f0-9]{2}';
573
+ var singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');
574
+ var multiMatcher = new RegExp('(' + token + ')+', 'gi');
575
+ function decodeComponents(components, split) {
576
+ try {
577
+ // Try to decode the entire string first
578
+ return [decodeURIComponent(components.join(''))];
579
+ } catch (_unused) {
580
+ // Do nothing
581
+ }
582
+ if (components.length === 1) {
583
+ return components;
584
+ }
585
+ split = split || 1;
586
+
587
+ // Split the array in 2 parts
588
+ var left = components.slice(0, split);
589
+ var right = components.slice(split);
590
+ return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));
591
+ }
592
+ function decode$1(input) {
593
+ try {
594
+ return decodeURIComponent(input);
595
+ } catch (_unused2) {
596
+ var tokens = input.match(singleMatcher) || [];
597
+ for (var i = 1; i < tokens.length; i++) {
598
+ input = decodeComponents(tokens, i).join('');
599
+ tokens = input.match(singleMatcher) || [];
600
+ }
601
+ return input;
602
+ }
603
+ }
604
+ function customDecodeURIComponent(input) {
605
+ // Keep track of all the replacements and prefill the map with the `BOM`
606
+ var replaceMap = {
607
+ '%FE%FF': "\uFFFD\uFFFD",
608
+ '%FF%FE': "\uFFFD\uFFFD"
609
+ };
610
+ var match = multiMatcher.exec(input);
611
+ while (match) {
612
+ try {
613
+ // Decode as big chunks as possible
614
+ replaceMap[match[0]] = decodeURIComponent(match[0]);
615
+ } catch (_unused3) {
616
+ var result = decode$1(match[0]);
617
+ if (result !== match[0]) {
618
+ replaceMap[match[0]] = result;
619
+ }
620
+ }
621
+ match = multiMatcher.exec(input);
622
+ }
623
+
624
+ // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else
625
+ replaceMap['%C2'] = "\uFFFD";
626
+ var entries = Object.keys(replaceMap);
627
+ for (var _i = 0, _entries = entries; _i < _entries.length; _i++) {
628
+ var key = _entries[_i];
629
+ // Replace all decoded components
630
+ input = input.replace(new RegExp(key, 'g'), replaceMap[key]);
631
+ }
632
+ return input;
633
+ }
634
+ function decodeUriComponent(encodedURI) {
635
+ if (typeof encodedURI !== 'string') {
636
+ throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + _typeof(encodedURI) + '`');
637
+ }
638
+ try {
639
+ // Try the built in decoder first
640
+ return decodeURIComponent(encodedURI);
641
+ } catch (_unused4) {
642
+ // Fallback to a more advanced decoder
643
+ return customDecodeURIComponent(encodedURI);
644
+ }
645
+ }
646
+
647
+ function splitOnFirst(string, separator) {
648
+ if (!(typeof string === 'string' && typeof separator === 'string')) {
649
+ throw new TypeError('Expected the arguments to be of type `string`');
650
+ }
651
+ if (string === '' || separator === '') {
652
+ return [];
653
+ }
654
+ var separatorIndex = string.indexOf(separator);
655
+ if (separatorIndex === -1) {
656
+ return [];
657
+ }
658
+ return [string.slice(0, separatorIndex), string.slice(separatorIndex + separator.length)];
659
+ }
660
+
661
+ function includeKeys(object, predicate) {
662
+ var result = {};
663
+ if (Array.isArray(predicate)) {
664
+ var _iterator = _createForOfIteratorHelper(predicate),
665
+ _step;
666
+ try {
667
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
668
+ var key = _step.value;
669
+ var descriptor = Object.getOwnPropertyDescriptor(object, key);
670
+ if (descriptor !== null && descriptor !== void 0 && descriptor.enumerable) {
671
+ Object.defineProperty(result, key, descriptor);
672
+ }
673
+ }
674
+ } catch (err) {
675
+ _iterator.e(err);
676
+ } finally {
677
+ _iterator.f();
678
+ }
679
+ } else {
680
+ // `Reflect.ownKeys()` is required to retrieve symbol properties
681
+ var _iterator2 = _createForOfIteratorHelper(Reflect.ownKeys(object)),
682
+ _step2;
683
+ try {
684
+ for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
685
+ var _key = _step2.value;
686
+ var _descriptor = Object.getOwnPropertyDescriptor(object, _key);
687
+ if (_descriptor.enumerable) {
688
+ var value = object[_key];
689
+ if (predicate(_key, value, object)) {
690
+ Object.defineProperty(result, _key, _descriptor);
691
+ }
692
+ }
693
+ }
694
+ } catch (err) {
695
+ _iterator2.e(err);
696
+ } finally {
697
+ _iterator2.f();
698
+ }
699
+ }
700
+ return result;
701
+ }
702
+
703
+ const isNullOrUndefined = value => value === null || value === undefined;
704
+
705
+ // eslint-disable-next-line unicorn/prefer-code-point
706
+ const strictUriEncode = string => encodeURIComponent(string).replaceAll(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);
707
+
708
+ const encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');
709
+
710
+ function encoderForArrayFormat(options) {
711
+ switch (options.arrayFormat) {
712
+ case 'index': {
713
+ return key => (result, value) => {
714
+ const index = result.length;
715
+
716
+ if (
717
+ value === undefined
718
+ || (options.skipNull && value === null)
719
+ || (options.skipEmptyString && value === '')
720
+ ) {
721
+ return result;
722
+ }
723
+
724
+ if (value === null) {
725
+ return [
726
+ ...result, [encode(key, options), '[', index, ']'].join(''),
727
+ ];
728
+ }
729
+
730
+ return [
731
+ ...result,
732
+ [encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join(''),
733
+ ];
734
+ };
735
+ }
736
+
737
+ case 'bracket': {
738
+ return key => (result, value) => {
739
+ if (
740
+ value === undefined
741
+ || (options.skipNull && value === null)
742
+ || (options.skipEmptyString && value === '')
743
+ ) {
744
+ return result;
745
+ }
746
+
747
+ if (value === null) {
748
+ return [
749
+ ...result,
750
+ [encode(key, options), '[]'].join(''),
751
+ ];
752
+ }
753
+
754
+ return [
755
+ ...result,
756
+ [encode(key, options), '[]=', encode(value, options)].join(''),
757
+ ];
758
+ };
759
+ }
760
+
761
+ case 'colon-list-separator': {
762
+ return key => (result, value) => {
763
+ if (
764
+ value === undefined
765
+ || (options.skipNull && value === null)
766
+ || (options.skipEmptyString && value === '')
767
+ ) {
768
+ return result;
769
+ }
770
+
771
+ if (value === null) {
772
+ return [
773
+ ...result,
774
+ [encode(key, options), ':list='].join(''),
775
+ ];
776
+ }
777
+
778
+ return [
779
+ ...result,
780
+ [encode(key, options), ':list=', encode(value, options)].join(''),
781
+ ];
782
+ };
783
+ }
784
+
785
+ case 'comma':
786
+ case 'separator':
787
+ case 'bracket-separator': {
788
+ const keyValueSeparator = options.arrayFormat === 'bracket-separator'
789
+ ? '[]='
790
+ : '=';
791
+
792
+ return key => (result, value) => {
793
+ if (
794
+ value === undefined
795
+ || (options.skipNull && value === null)
796
+ || (options.skipEmptyString && value === '')
797
+ ) {
798
+ return result;
799
+ }
800
+
801
+ // Translate null to an empty string so that it doesn't serialize as 'null'
802
+ value = value === null ? '' : value;
803
+
804
+ if (result.length === 0) {
805
+ return [[encode(key, options), keyValueSeparator, encode(value, options)].join('')];
806
+ }
807
+
808
+ return [[result, encode(value, options)].join(options.arrayFormatSeparator)];
809
+ };
810
+ }
811
+
812
+ default: {
813
+ return key => (result, value) => {
814
+ if (
815
+ value === undefined
816
+ || (options.skipNull && value === null)
817
+ || (options.skipEmptyString && value === '')
818
+ ) {
819
+ return result;
820
+ }
821
+
822
+ if (value === null) {
823
+ return [
824
+ ...result,
825
+ encode(key, options),
826
+ ];
827
+ }
828
+
829
+ return [
830
+ ...result,
831
+ [encode(key, options), '=', encode(value, options)].join(''),
832
+ ];
833
+ };
834
+ }
835
+ }
836
+ }
837
+
838
+ function parserForArrayFormat(options) {
839
+ let result;
840
+
841
+ switch (options.arrayFormat) {
842
+ case 'index': {
843
+ return (key, value, accumulator) => {
844
+ result = /\[(\d*)]$/.exec(key);
845
+
846
+ key = key.replace(/\[\d*]$/, '');
847
+
848
+ if (!result) {
849
+ accumulator[key] = value;
850
+ return;
851
+ }
852
+
853
+ if (accumulator[key] === undefined) {
854
+ accumulator[key] = {};
855
+ }
856
+
857
+ accumulator[key][result[1]] = value;
858
+ };
859
+ }
860
+
861
+ case 'bracket': {
862
+ return (key, value, accumulator) => {
863
+ result = /(\[])$/.exec(key);
864
+ key = key.replace(/\[]$/, '');
865
+
866
+ if (!result) {
867
+ accumulator[key] = value;
868
+ return;
869
+ }
870
+
871
+ if (accumulator[key] === undefined) {
872
+ accumulator[key] = [value];
873
+ return;
874
+ }
875
+
876
+ accumulator[key] = [...accumulator[key], value];
877
+ };
878
+ }
879
+
880
+ case 'colon-list-separator': {
881
+ return (key, value, accumulator) => {
882
+ result = /(:list)$/.exec(key);
883
+ key = key.replace(/:list$/, '');
884
+
885
+ if (!result) {
886
+ accumulator[key] = value;
887
+ return;
888
+ }
889
+
890
+ if (accumulator[key] === undefined) {
891
+ accumulator[key] = [value];
892
+ return;
893
+ }
894
+
895
+ accumulator[key] = [...accumulator[key], value];
896
+ };
897
+ }
898
+
899
+ case 'comma':
900
+ case 'separator': {
901
+ return (key, value, accumulator) => {
902
+ const isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);
903
+ const isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));
904
+ value = isEncodedArray ? decode(value, options) : value;
905
+ const newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : (value === null ? value : decode(value, options));
906
+ accumulator[key] = newValue;
907
+ };
908
+ }
909
+
910
+ case 'bracket-separator': {
911
+ return (key, value, accumulator) => {
912
+ const isArray = /(\[])$/.test(key);
913
+ key = key.replace(/\[]$/, '');
914
+
915
+ if (!isArray) {
916
+ accumulator[key] = value ? decode(value, options) : value;
917
+ return;
918
+ }
919
+
920
+ const arrayValue = value === null
921
+ ? []
922
+ : value.split(options.arrayFormatSeparator).map(item => decode(item, options));
923
+
924
+ if (accumulator[key] === undefined) {
925
+ accumulator[key] = arrayValue;
926
+ return;
927
+ }
928
+
929
+ accumulator[key] = [...accumulator[key], ...arrayValue];
930
+ };
931
+ }
932
+
933
+ default: {
934
+ return (key, value, accumulator) => {
935
+ if (accumulator[key] === undefined) {
936
+ accumulator[key] = value;
937
+ return;
938
+ }
939
+
940
+ accumulator[key] = [...[accumulator[key]].flat(), value];
941
+ };
942
+ }
943
+ }
944
+ }
945
+
946
+ function validateArrayFormatSeparator(value) {
947
+ if (typeof value !== 'string' || value.length !== 1) {
948
+ throw new TypeError('arrayFormatSeparator must be single character string');
949
+ }
950
+ }
951
+
952
+ function encode(value, options) {
953
+ if (options.encode) {
954
+ return options.strict ? strictUriEncode(value) : encodeURIComponent(value);
955
+ }
956
+
957
+ return value;
958
+ }
959
+
960
+ function decode(value, options) {
961
+ if (options.decode) {
962
+ return decodeUriComponent(value);
963
+ }
964
+
965
+ return value;
966
+ }
967
+
968
+ function keysSorter(input) {
969
+ if (Array.isArray(input)) {
970
+ return input.sort();
971
+ }
972
+
973
+ if (typeof input === 'object') {
974
+ return keysSorter(Object.keys(input))
975
+ .sort((a, b) => Number(a) - Number(b))
976
+ .map(key => input[key]);
977
+ }
978
+
979
+ return input;
980
+ }
981
+
982
+ function removeHash(input) {
983
+ const hashStart = input.indexOf('#');
984
+ if (hashStart !== -1) {
985
+ input = input.slice(0, hashStart);
986
+ }
987
+
988
+ return input;
989
+ }
990
+
991
+ function getHash(url) {
992
+ let hash = '';
993
+ const hashStart = url.indexOf('#');
994
+ if (hashStart !== -1) {
995
+ hash = url.slice(hashStart);
996
+ }
997
+
998
+ return hash;
999
+ }
1000
+
1001
+ function parseValue(value, options) {
1002
+ if (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {
1003
+ value = Number(value);
1004
+ } else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {
1005
+ value = value.toLowerCase() === 'true';
1006
+ }
1007
+
1008
+ return value;
1009
+ }
1010
+
1011
+ function extract(input) {
1012
+ input = removeHash(input);
1013
+ const queryStart = input.indexOf('?');
1014
+ if (queryStart === -1) {
1015
+ return '';
1016
+ }
1017
+
1018
+ return input.slice(queryStart + 1);
1019
+ }
1020
+
1021
+ function parse(query, options) {
1022
+ options = {
1023
+ decode: true,
1024
+ sort: true,
1025
+ arrayFormat: 'none',
1026
+ arrayFormatSeparator: ',',
1027
+ parseNumbers: false,
1028
+ parseBooleans: false,
1029
+ ...options,
1030
+ };
1031
+
1032
+ validateArrayFormatSeparator(options.arrayFormatSeparator);
1033
+
1034
+ const formatter = parserForArrayFormat(options);
1035
+
1036
+ // Create an object with no prototype
1037
+ const returnValue = Object.create(null);
1038
+
1039
+ if (typeof query !== 'string') {
1040
+ return returnValue;
1041
+ }
1042
+
1043
+ query = query.trim().replace(/^[?#&]/, '');
1044
+
1045
+ if (!query) {
1046
+ return returnValue;
1047
+ }
1048
+
1049
+ for (const parameter of query.split('&')) {
1050
+ if (parameter === '') {
1051
+ continue;
1052
+ }
1053
+
1054
+ const parameter_ = options.decode ? parameter.replaceAll('+', ' ') : parameter;
1055
+
1056
+ let [key, value] = splitOnFirst(parameter_, '=');
1057
+
1058
+ if (key === undefined) {
1059
+ key = parameter_;
1060
+ }
1061
+
1062
+ // Missing `=` should be `null`:
1063
+ // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
1064
+ value = value === undefined ? null : (['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options));
1065
+ formatter(decode(key, options), value, returnValue);
1066
+ }
1067
+
1068
+ for (const [key, value] of Object.entries(returnValue)) {
1069
+ if (typeof value === 'object' && value !== null) {
1070
+ for (const [key2, value2] of Object.entries(value)) {
1071
+ value[key2] = parseValue(value2, options);
1072
+ }
1073
+ } else {
1074
+ returnValue[key] = parseValue(value, options);
1075
+ }
1076
+ }
1077
+
1078
+ if (options.sort === false) {
1079
+ return returnValue;
1080
+ }
1081
+
1082
+ // TODO: Remove the use of `reduce`.
1083
+ // eslint-disable-next-line unicorn/no-array-reduce
1084
+ return (options.sort === true ? Object.keys(returnValue).sort() : Object.keys(returnValue).sort(options.sort)).reduce((result, key) => {
1085
+ const value = returnValue[key];
1086
+ result[key] = Boolean(value) && typeof value === 'object' && !Array.isArray(value) ? keysSorter(value) : value;
1087
+ return result;
1088
+ }, Object.create(null));
1089
+ }
1090
+
1091
+ function stringify(object, options) {
1092
+ if (!object) {
1093
+ return '';
1094
+ }
1095
+
1096
+ options = {
1097
+ encode: true,
1098
+ strict: true,
1099
+ arrayFormat: 'none',
1100
+ arrayFormatSeparator: ',',
1101
+ ...options,
1102
+ };
1103
+
1104
+ validateArrayFormatSeparator(options.arrayFormatSeparator);
1105
+
1106
+ const shouldFilter = key => (
1107
+ (options.skipNull && isNullOrUndefined(object[key]))
1108
+ || (options.skipEmptyString && object[key] === '')
1109
+ );
1110
+
1111
+ const formatter = encoderForArrayFormat(options);
1112
+
1113
+ const objectCopy = {};
1114
+
1115
+ for (const [key, value] of Object.entries(object)) {
1116
+ if (!shouldFilter(key)) {
1117
+ objectCopy[key] = value;
1118
+ }
1119
+ }
1120
+
1121
+ const keys = Object.keys(objectCopy);
1122
+
1123
+ if (options.sort !== false) {
1124
+ keys.sort(options.sort);
1125
+ }
1126
+
1127
+ return keys.map(key => {
1128
+ const value = object[key];
1129
+
1130
+ if (value === undefined) {
1131
+ return '';
1132
+ }
1133
+
1134
+ if (value === null) {
1135
+ return encode(key, options);
1136
+ }
1137
+
1138
+ if (Array.isArray(value)) {
1139
+ if (value.length === 0 && options.arrayFormat === 'bracket-separator') {
1140
+ return encode(key, options) + '[]';
1141
+ }
1142
+
1143
+ return value
1144
+ .reduce(formatter(key), [])
1145
+ .join('&');
1146
+ }
1147
+
1148
+ return encode(key, options) + '=' + encode(value, options);
1149
+ }).filter(x => x.length > 0).join('&');
1150
+ }
1151
+
1152
+ function parseUrl(url, options) {
1153
+ options = {
1154
+ decode: true,
1155
+ ...options,
1156
+ };
1157
+
1158
+ let [url_, hash] = splitOnFirst(url, '#');
1159
+
1160
+ if (url_ === undefined) {
1161
+ url_ = url;
1162
+ }
1163
+
1164
+ return {
1165
+ url: url_?.split('?')?.[0] ?? '',
1166
+ query: parse(extract(url), options),
1167
+ ...(options && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}),
1168
+ };
1169
+ }
1170
+
1171
+ function stringifyUrl(object, options) {
1172
+ options = {
1173
+ encode: true,
1174
+ strict: true,
1175
+ [encodeFragmentIdentifier]: true,
1176
+ ...options,
1177
+ };
1178
+
1179
+ const url = removeHash(object.url).split('?')[0] || '';
1180
+ const queryFromUrl = extract(object.url);
1181
+
1182
+ const query = {
1183
+ ...parse(queryFromUrl, {sort: false}),
1184
+ ...object.query,
1185
+ };
1186
+
1187
+ let queryString = stringify(query, options);
1188
+ queryString &&= `?${queryString}`;
1189
+
1190
+ let hash = getHash(object.url);
1191
+ if (typeof object.fragmentIdentifier === 'string') {
1192
+ const urlObjectForFragmentEncode = new URL(url);
1193
+ urlObjectForFragmentEncode.hash = object.fragmentIdentifier;
1194
+ hash = options[encodeFragmentIdentifier] ? urlObjectForFragmentEncode.hash : `#${object.fragmentIdentifier}`;
1195
+ }
1196
+
1197
+ return `${url}${queryString}${hash}`;
1198
+ }
1199
+
1200
+ function pick(input, filter, options) {
1201
+ options = {
1202
+ parseFragmentIdentifier: true,
1203
+ [encodeFragmentIdentifier]: false,
1204
+ ...options,
1205
+ };
1206
+
1207
+ const {url, query, fragmentIdentifier} = parseUrl(input, options);
1208
+
1209
+ return stringifyUrl({
1210
+ url,
1211
+ query: includeKeys(query, filter),
1212
+ fragmentIdentifier,
1213
+ }, options);
1214
+ }
1215
+
1216
+ function exclude(input, filter, options) {
1217
+ const exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);
1218
+
1219
+ return pick(input, exclusionFilter, options);
1220
+ }
1221
+
1222
+ var queryString = /*#__PURE__*/Object.freeze({
1223
+ __proto__: null,
1224
+ exclude: exclude,
1225
+ extract: extract,
1226
+ parse: parse,
1227
+ parseUrl: parseUrl,
1228
+ pick: pick,
1229
+ stringify: stringify,
1230
+ stringifyUrl: stringifyUrl
1231
+ });
76
1232
 
77
1233
  /* eslint-disable react/jsx-props-no-spreading */
1234
+ // import PropTypes from 'prop-types';
78
1235
 
79
1236
  // Kept for backward compatibility with exports
80
1237
  var ResourceFormWrapper = function ResourceFormWrapper(props) {
81
- return /*#__PURE__*/React__default["default"].createElement(ResourceForm__default["default"], props);
1238
+ return /*#__PURE__*/React.createElement(ResourceForm$1, props);
82
1239
  };
83
1240
  var ResourceForm = ResourceFormWrapper;
84
1241
 
85
1242
  var propTypes$j = {
86
- withAccountForm: PropTypes__default["default"].bool,
87
- className: PropTypes__default["default"].string,
88
- itemClassName: PropTypes__default["default"].string,
89
- linkClassName: PropTypes__default["default"].string
1243
+ withAccountForm: PropTypes.bool,
1244
+ className: PropTypes.string,
1245
+ itemClassName: PropTypes.string,
1246
+ linkClassName: PropTypes.string
90
1247
  };
91
1248
  var defaultProps$i = {
92
1249
  withAccountForm: false,
@@ -109,7 +1266,7 @@ var AccountMenu = function AccountMenu(_ref) {
109
1266
  var items = React.useMemo(function () {
110
1267
  return user !== null ? [{
111
1268
  id: 'account',
112
- label: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1269
+ label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
113
1270
  id: "IuqEHB",
114
1271
  defaultMessage: [{
115
1272
  "type": 0,
@@ -117,8 +1274,8 @@ var AccountMenu = function AccountMenu(_ref) {
117
1274
  }]
118
1275
  }),
119
1276
  href: route('account'),
120
- dropdown: [].concat(_toConsumableArray__default["default"](withAccountForm ? [{
121
- label: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1277
+ dropdown: [].concat(_toConsumableArray(withAccountForm ? [{
1278
+ label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
122
1279
  id: "V7Us0a",
123
1280
  defaultMessage: [{
124
1281
  "type": 0,
@@ -127,7 +1284,7 @@ var AccountMenu = function AccountMenu(_ref) {
127
1284
  }),
128
1285
  href: route('account')
129
1286
  }] : []), [{
130
- label: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1287
+ label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
131
1288
  id: "REIcPg",
132
1289
  defaultMessage: [{
133
1290
  "type": 0,
@@ -138,7 +1295,7 @@ var AccountMenu = function AccountMenu(_ref) {
138
1295
  onClick: onClickLogout
139
1296
  }])
140
1297
  }] : [{
141
- label: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1298
+ label: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
142
1299
  id: "d0g58T",
143
1300
  defaultMessage: [{
144
1301
  "type": 0,
@@ -148,7 +1305,7 @@ var AccountMenu = function AccountMenu(_ref) {
148
1305
  href: route('auth.login')
149
1306
  }];
150
1307
  }, [user, route, onClickLogout, withAccountForm]);
151
- return items !== null ? /*#__PURE__*/React__default["default"].createElement(Menu__default["default"], {
1308
+ return items !== null ? /*#__PURE__*/React.createElement(Menu, {
152
1309
  className: className,
153
1310
  itemClassName: itemClassName,
154
1311
  linkClassName: linkClassName,
@@ -161,9 +1318,9 @@ AccountMenu.defaultProps = defaultProps$i;
161
1318
  var AccountMenu$1 = AccountMenu;
162
1319
 
163
1320
  var propTypes$i = {
164
- className: PropTypes__default["default"].string,
165
- itemClassName: PropTypes__default["default"].string,
166
- linkClassName: PropTypes__default["default"].string
1321
+ className: PropTypes.string,
1322
+ itemClassName: PropTypes.string,
1323
+ linkClassName: PropTypes.string
167
1324
  };
168
1325
  var defaultProps$h = {
169
1326
  className: null,
@@ -174,8 +1331,8 @@ var ResourcesMenu = function ResourcesMenu(_ref) {
174
1331
  var className = _ref.className,
175
1332
  itemClassName = _ref.itemClassName,
176
1333
  linkClassName = _ref.linkClassName;
177
- var _useLocation = wouter.useLocation(),
178
- _useLocation2 = _slicedToArray__default["default"](_useLocation, 1),
1334
+ var _useLocation = useLocation(),
1335
+ _useLocation2 = _slicedToArray(_useLocation, 1),
179
1336
  pathname = _useLocation2[0];
180
1337
  var resources = contexts.usePanneauResources();
181
1338
  var resourceRoute = hooks.useResourceUrlGenerator();
@@ -196,7 +1353,7 @@ var ResourcesMenu = function ResourcesMenu(_ref) {
196
1353
  };
197
1354
  });
198
1355
  }, [resources, pathname, resourceRoute]);
199
- return /*#__PURE__*/React__default["default"].createElement(Menu__default["default"], {
1356
+ return /*#__PURE__*/React.createElement(Menu, {
200
1357
  items: items,
201
1358
  className: className,
202
1359
  itemClassName: itemClassName,
@@ -227,11 +1384,11 @@ var MainNavbar = function MainNavbar(props) {
227
1384
  var menuItems = (user !== null ? main : guest) || [];
228
1385
  var hasResources = menuItems.indexOf('resources') !== -1;
229
1386
  var hasAccount = menuItems.indexOf('account') !== -1;
230
- return [!hasResources && user !== null ? 'resources' : null].concat(_toConsumableArray__default["default"](menuItems), [!hasAccount && menuItems.indexOf('separator') === -1 ? 'separator' : null, !hasAccount ? 'account' : null]).filter(function (it) {
1387
+ return [!hasResources && user !== null ? 'resources' : null].concat(_toConsumableArray(menuItems), [!hasAccount && menuItems.indexOf('separator') === -1 ? 'separator' : null, !hasAccount ? 'account' : null]).filter(function (it) {
231
1388
  return it !== null;
232
1389
  }).reduce(function (currentItems, item, index) {
233
1390
  if (item === 'resources') {
234
- return [].concat(_toConsumableArray__default["default"](currentItems), [/*#__PURE__*/React__default["default"].createElement(ResourcesMenu$1, {
1391
+ return [].concat(_toConsumableArray(currentItems), [/*#__PURE__*/React.createElement(ResourcesMenu$1, {
235
1392
  key: "menu-item-resource-".concat(index + 1),
236
1393
  className: "navbar-nav",
237
1394
  itemClassName: "nav-item",
@@ -239,7 +1396,7 @@ var MainNavbar = function MainNavbar(props) {
239
1396
  })]);
240
1397
  }
241
1398
  if (item === 'account') {
242
- return [].concat(_toConsumableArray__default["default"](currentItems), [/*#__PURE__*/React__default["default"].createElement(AccountMenu$1, {
1399
+ return [].concat(_toConsumableArray(currentItems), [/*#__PURE__*/React.createElement(AccountMenu$1, {
243
1400
  key: "menu-item-account-".concat(index + 1),
244
1401
  className: "navbar-nav",
245
1402
  itemClassName: "nav-item",
@@ -247,15 +1404,15 @@ var MainNavbar = function MainNavbar(props) {
247
1404
  })]);
248
1405
  }
249
1406
  if (item === 'separator') {
250
- return [].concat(_toConsumableArray__default["default"](currentItems), [/*#__PURE__*/React__default["default"].createElement("span", {
1407
+ return [].concat(_toConsumableArray(currentItems), [/*#__PURE__*/React.createElement("span", {
251
1408
  key: "menu-item-spacer-".concat(index + 1),
252
1409
  className: "ms-auto"
253
1410
  })]);
254
1411
  }
255
1412
  var lastItem = currentItems.length > 0 ? currentItems[currentItems.length - 1] : null;
256
- return isArray__default["default"](lastItem) ? [].concat(_toConsumableArray__default["default"](currentItems.slice(0, currentItems.length - 1)), [[].concat(_toConsumableArray__default["default"](lastItem), [item])]) : [].concat(_toConsumableArray__default["default"](currentItems), [[item]]);
1413
+ return isArray(lastItem) ? [].concat(_toConsumableArray(currentItems.slice(0, currentItems.length - 1)), [[].concat(_toConsumableArray(lastItem), [item])]) : [].concat(_toConsumableArray(currentItems), [[item]]);
257
1414
  }, []).map(function (it, index) {
258
- return isArray__default["default"](it) ? /*#__PURE__*/React__default["default"].createElement(Menu__default["default"], {
1415
+ return isArray(it) ? /*#__PURE__*/React.createElement(Menu, {
259
1416
  items: it,
260
1417
  key: "submenu-item-".concat(index + 1),
261
1418
  className: "navbar-nav",
@@ -264,9 +1421,9 @@ var MainNavbar = function MainNavbar(props) {
264
1421
  }) : it;
265
1422
  });
266
1423
  }, [main]);
267
- return /*#__PURE__*/React__default["default"].createElement(Navbar__default["default"], Object.assign({
1424
+ return /*#__PURE__*/React.createElement(Navbar, Object.assign({
268
1425
  theme: background
269
- }, props), name !== null ? /*#__PURE__*/React__default["default"].createElement(Link__default["default"], {
1426
+ }, props), name !== null ? /*#__PURE__*/React.createElement(Link, {
270
1427
  href: route('home'),
271
1428
  className: "navbar-brand"
272
1429
  }, name) : null, items);
@@ -278,8 +1435,8 @@ var MainNavbar$1 = MainNavbar;
278
1435
  var styles$1 = {};
279
1436
 
280
1437
  var propTypes$g = {
281
- children: PropTypes__default["default"].node.isRequired,
282
- fullscreen: PropTypes__default["default"].bool
1438
+ children: PropTypes.node.isRequired,
1439
+ fullscreen: PropTypes.bool
283
1440
  };
284
1441
  var defaultProps$f = {
285
1442
  fullscreen: false
@@ -294,16 +1451,16 @@ var MainLayout = function MainLayout(_ref) {
294
1451
  background = _usePanneauColorSchem3 === void 0 ? null : _usePanneauColorSchem3,
295
1452
  _usePanneauColorSchem4 = _usePanneauColorSchem.text,
296
1453
  text = _usePanneauColorSchem4 === void 0 ? null : _usePanneauColorSchem4;
297
- return /*#__PURE__*/React__default["default"].createElement("div", {
298
- className: classNames__default["default"]([styles$1.container, 'd-flex', 'flex-column', 'min-vh-100']),
1454
+ return /*#__PURE__*/React.createElement("div", {
1455
+ className: classNames([styles$1.container, 'd-flex', 'flex-column', 'min-vh-100']),
299
1456
  "data-bs-theme": theme !== null ? theme : null
300
- }, /*#__PURE__*/React__default["default"].createElement(MainNavbar$1, {
301
- className: classNames__default["default"](['border-bottom', 'sticky-top', 'px-3'])
302
- }), /*#__PURE__*/React__default["default"].createElement("div", {
303
- className: classNames__default["default"](['flex-grow-1', _defineProperty__default["default"](_defineProperty__default["default"]({
1457
+ }, /*#__PURE__*/React.createElement(MainNavbar$1, {
1458
+ className: classNames(['border-bottom', 'sticky-top', 'px-3'])
1459
+ }), /*#__PURE__*/React.createElement("div", {
1460
+ className: classNames(['flex-grow-1', _defineProperty(_defineProperty({
304
1461
  'd-flex flex-column': fullscreen
305
1462
  }, "bg-".concat(background), background !== null), "text-".concat(text), text !== null)])
306
- }, children), /*#__PURE__*/React__default["default"].createElement(elementModal.Modals, null));
1463
+ }, children), /*#__PURE__*/React.createElement(elementModal.Modals, null));
307
1464
  };
308
1465
  MainLayout.propTypes = propTypes$g;
309
1466
  MainLayout.defaultProps = defaultProps$f;
@@ -311,10 +1468,10 @@ var MainLayout$1 = MainLayout;
311
1468
 
312
1469
  var propTypes$f = {
313
1470
  title: core.PropTypes.label,
314
- actions: PropTypes__default["default"].node,
315
- small: PropTypes__default["default"].bool,
316
- className: PropTypes__default["default"].string,
317
- children: PropTypes__default["default"].node
1471
+ actions: PropTypes.node,
1472
+ small: PropTypes.bool,
1473
+ className: PropTypes.string,
1474
+ children: PropTypes.node
318
1475
  };
319
1476
  var defaultProps$e = {
320
1477
  title: null,
@@ -335,22 +1492,22 @@ var PageHeader = function PageHeader(_ref) {
335
1492
  var _usePanneauColorSchem = contexts.usePanneauColorScheme(),
336
1493
  text = _usePanneauColorSchem.text,
337
1494
  background = _usePanneauColorSchem.background;
338
- var inner = /*#__PURE__*/React__default["default"].createElement("div", {
1495
+ var inner = /*#__PURE__*/React.createElement("div", {
339
1496
  className: "d-flex align-items-center flex-wrap"
340
- }, title !== null ? /*#__PURE__*/React__default["default"].createElement("h1", {
341
- className: classNames__default["default"](['mb-0', {
1497
+ }, title !== null ? /*#__PURE__*/React.createElement("h1", {
1498
+ className: classNames(['mb-0', {
342
1499
  h2: small
343
1500
  }])
344
- }, /*#__PURE__*/React__default["default"].createElement(Label__default["default"], null, title)) : null, actions !== null ? /*#__PURE__*/React__default["default"].createElement("div", {
1501
+ }, /*#__PURE__*/React.createElement(Label, null, title)) : null, actions !== null ? /*#__PURE__*/React.createElement("div", {
345
1502
  className: "ms-auto"
346
1503
  }, actions) : null);
347
- return /*#__PURE__*/React__default["default"].createElement("div", {
348
- className: classNames__default["default"](['py-4', _defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"](_defineProperty__default["default"]({}, "bg-".concat(background), background !== null), "text-".concat(text), text !== null), "border-bottom", background || text !== null), className, className !== null)])
349
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1504
+ return /*#__PURE__*/React.createElement("div", {
1505
+ className: classNames(['py-4', _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, "bg-".concat(background), background !== null), "text-".concat(text), text !== null), "border-bottom", background || text !== null), className, className !== null)])
1506
+ }, /*#__PURE__*/React.createElement("div", {
350
1507
  className: "container-sm"
351
- }, small ? /*#__PURE__*/React__default["default"].createElement("div", {
1508
+ }, small ? /*#__PURE__*/React.createElement("div", {
352
1509
  className: "row justify-content-center"
353
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1510
+ }, /*#__PURE__*/React.createElement("div", {
354
1511
  className: "col-12 col-md-8 col-lg-7"
355
1512
  }, inner)) : inner), children);
356
1513
  };
@@ -364,13 +1521,13 @@ var propTypes$e = {
364
1521
  var defaultProps$d = {};
365
1522
  var ResourceCreatePage = function ResourceCreatePage(_ref) {
366
1523
  var resource = _ref.resource;
367
- var _useLocation = wouter.useLocation(),
368
- _useLocation2 = _slicedToArray__default["default"](_useLocation, 2),
1524
+ var _useLocation = useLocation(),
1525
+ _useLocation2 = _slicedToArray(_useLocation, 2),
369
1526
  navigate = _useLocation2[1];
370
- var search = wouter.useSearch();
1527
+ var search = useSearch();
371
1528
  var resourceRoute = hooks.useResourceUrlGenerator(resource);
372
1529
  var _useMemo = React.useMemo(function () {
373
- return queryString__default["default"].parse(search, {
1530
+ return queryString.parse(search, {
374
1531
  arrayFormat: 'bracket'
375
1532
  });
376
1533
  }, [search]),
@@ -381,10 +1538,10 @@ var ResourceCreatePage = function ResourceCreatePage(_ref) {
381
1538
  var onSuccess = React.useCallback(function () {
382
1539
  navigate("".concat(resourceRoute('index'), "?created=true"));
383
1540
  }, [navigate, resourceRoute]);
384
- return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
1541
+ return /*#__PURE__*/React.createElement(contexts.ResourceProvider, {
385
1542
  resource: resource
386
- }, /*#__PURE__*/React__default["default"].createElement(MainLayout$1, null, /*#__PURE__*/React__default["default"].createElement(PageHeader$1, {
387
- title: /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1543
+ }, /*#__PURE__*/React.createElement(MainLayout$1, null, /*#__PURE__*/React.createElement(PageHeader$1, {
1544
+ title: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
388
1545
  values: resourceValues,
389
1546
  id: "6viUpq",
390
1547
  defaultMessage: [{
@@ -394,17 +1551,17 @@ var ResourceCreatePage = function ResourceCreatePage(_ref) {
394
1551
  "type": 1,
395
1552
  "value": "a_singular"
396
1553
  }]
397
- }), typeName !== null ? /*#__PURE__*/React__default["default"].createElement("span", {
1554
+ }), typeName !== null ? /*#__PURE__*/React.createElement("span", {
398
1555
  className: "text-body-secondary"
399
1556
  }, " (", typeName, ")") : null),
400
1557
  small: true
401
- }), /*#__PURE__*/React__default["default"].createElement("div", {
1558
+ }), /*#__PURE__*/React.createElement("div", {
402
1559
  className: "container-sm py-4"
403
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1560
+ }, /*#__PURE__*/React.createElement("div", {
404
1561
  className: "row justify-content-center"
405
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1562
+ }, /*#__PURE__*/React.createElement("div", {
406
1563
  className: "col-12 col-md-8 col-lg-7"
407
- }, /*#__PURE__*/React__default["default"].createElement(ResourceForm, {
1564
+ }, /*#__PURE__*/React.createElement(ResourceForm, {
408
1565
  resource: resource,
409
1566
  type: type,
410
1567
  onSuccess: onSuccess
@@ -415,15 +1572,15 @@ ResourceCreatePage.defaultProps = defaultProps$d;
415
1572
  var ResourceCreate = ResourceCreatePage;
416
1573
 
417
1574
  var propTypes$d = {
418
- itemId: PropTypes__default["default"].string.isRequired,
1575
+ itemId: PropTypes.string.isRequired,
419
1576
  resource: core.PropTypes.resource.isRequired
420
1577
  };
421
1578
  var defaultProps$c = {};
422
1579
  var ResourceDeletePage = function ResourceDeletePage(_ref) {
423
1580
  var itemId = _ref.itemId,
424
1581
  resource = _ref.resource;
425
- var _useLocation = wouter.useLocation(),
426
- _useLocation2 = _slicedToArray__default["default"](_useLocation, 2),
1582
+ var _useLocation = useLocation(),
1583
+ _useLocation2 = _slicedToArray(_useLocation, 2),
427
1584
  navigate = _useLocation2[1];
428
1585
  var resourceRoute = hooks.useResourceUrlGenerator(resource);
429
1586
  var _useResourceItem = data.useResourceItem(resource, itemId),
@@ -436,10 +1593,10 @@ var ResourceDeletePage = function ResourceDeletePage(_ref) {
436
1593
  var onSuccess = React.useCallback(function () {
437
1594
  return navigate("".concat(resourceRoute('index'), "?deleted=true"));
438
1595
  }, [navigate, resourceRoute]);
439
- return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
1596
+ return /*#__PURE__*/React.createElement(contexts.ResourceProvider, {
440
1597
  resource: resource
441
- }, /*#__PURE__*/React__default["default"].createElement(MainLayout$1, null, /*#__PURE__*/React__default["default"].createElement(PageHeader$1, {
442
- title: /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1598
+ }, /*#__PURE__*/React.createElement(MainLayout$1, null, /*#__PURE__*/React.createElement(PageHeader$1, {
1599
+ title: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
443
1600
  values: resourceValues,
444
1601
  id: "zN5N/Q",
445
1602
  defaultMessage: [{
@@ -449,17 +1606,17 @@ var ResourceDeletePage = function ResourceDeletePage(_ref) {
449
1606
  "type": 1,
450
1607
  "value": "a_singular"
451
1608
  }]
452
- }), typeName !== null ? /*#__PURE__*/React__default["default"].createElement("span", {
1609
+ }), typeName !== null ? /*#__PURE__*/React.createElement("span", {
453
1610
  className: "text-body-secondary"
454
1611
  }, " (", typeName, ")") : null),
455
1612
  small: true
456
- }), /*#__PURE__*/React__default["default"].createElement("div", {
1613
+ }), /*#__PURE__*/React.createElement("div", {
457
1614
  className: "container-sm py-4"
458
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1615
+ }, /*#__PURE__*/React.createElement("div", {
459
1616
  className: "row justify-content-center"
460
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1617
+ }, /*#__PURE__*/React.createElement("div", {
461
1618
  className: "col-12 col-md-8 col-lg-7"
462
- }, item !== null ? /*#__PURE__*/React__default["default"].createElement(ResourceForm, {
1619
+ }, item !== null ? /*#__PURE__*/React.createElement(ResourceForm, {
463
1620
  resource: resource,
464
1621
  item: item,
465
1622
  onSuccess: onSuccess,
@@ -471,7 +1628,7 @@ ResourceDeletePage.defaultProps = defaultProps$c;
471
1628
  var ResourceDelete = ResourceDeletePage;
472
1629
 
473
1630
  var propTypes$c = {
474
- itemId: PropTypes__default["default"].string.isRequired,
1631
+ itemId: PropTypes.string.isRequired,
475
1632
  resource: core.PropTypes.resource.isRequired
476
1633
  };
477
1634
  var defaultProps$b = {};
@@ -484,7 +1641,7 @@ var ResourceEditPage = function ResourceEditPage(_ref) {
484
1641
  _ref2$type = _ref2.type,
485
1642
  type = _ref2$type === void 0 ? null : _ref2$type;
486
1643
  var _useState = React.useState(item),
487
- _useState2 = _slicedToArray__default["default"](_useState, 2),
1644
+ _useState2 = _slicedToArray(_useState, 2),
488
1645
  editItem = _useState2[0],
489
1646
  setEditItem = _useState2[1];
490
1647
  var typeName = hooks.useResourceTypeName(resource, type);
@@ -495,10 +1652,10 @@ var ResourceEditPage = function ResourceEditPage(_ref) {
495
1652
  setEditItem(item);
496
1653
  }, [item, setEditItem]);
497
1654
  var resourceValues = intl.useResourceValues(resource);
498
- return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
1655
+ return /*#__PURE__*/React.createElement(contexts.ResourceProvider, {
499
1656
  resource: resource
500
- }, /*#__PURE__*/React__default["default"].createElement(MainLayout$1, null, /*#__PURE__*/React__default["default"].createElement(PageHeader$1, {
501
- title: /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1657
+ }, /*#__PURE__*/React.createElement(MainLayout$1, null, /*#__PURE__*/React.createElement(PageHeader$1, {
1658
+ title: /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
502
1659
  values: resourceValues,
503
1660
  id: "mCfzkJ",
504
1661
  defaultMessage: [{
@@ -508,17 +1665,17 @@ var ResourceEditPage = function ResourceEditPage(_ref) {
508
1665
  "type": 1,
509
1666
  "value": "a_singular"
510
1667
  }]
511
- }), typeName !== null ? /*#__PURE__*/React__default["default"].createElement("span", {
1668
+ }), typeName !== null ? /*#__PURE__*/React.createElement("span", {
512
1669
  className: "text-body-secondary"
513
1670
  }, " (", typeName, ")") : null),
514
1671
  small: true
515
- }), /*#__PURE__*/React__default["default"].createElement("div", {
1672
+ }), /*#__PURE__*/React.createElement("div", {
516
1673
  className: "container-sm py-4"
517
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1674
+ }, /*#__PURE__*/React.createElement("div", {
518
1675
  className: "row justify-content-center"
519
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1676
+ }, /*#__PURE__*/React.createElement("div", {
520
1677
  className: "col-12 col-md-8 col-lg-7"
521
- }, editItem !== null ? /*#__PURE__*/React__default["default"].createElement(ResourceForm, {
1678
+ }, editItem !== null ? /*#__PURE__*/React.createElement(ResourceForm, {
522
1679
  resource: resource,
523
1680
  item: editItem,
524
1681
  type: type,
@@ -531,7 +1688,7 @@ var ResourceEdit = ResourceEditPage;
531
1688
 
532
1689
  var propTypes$b = {
533
1690
  resource: core.PropTypes.resource.isRequired,
534
- className: PropTypes__default["default"].string
1691
+ className: PropTypes.string
535
1692
  };
536
1693
  var defaultProps$a = {
537
1694
  className: null
@@ -545,7 +1702,7 @@ var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
545
1702
  var resourceRoute = hooks.useResourceUrlGenerator(resource);
546
1703
  var resourceValues = intl.useResourceValues(resource);
547
1704
  var _useState = React.useState(false),
548
- _useState2 = _slicedToArray__default["default"](_useState, 2),
1705
+ _useState2 = _slicedToArray(_useState, 2),
549
1706
  dropdownOpened = _useState2[0],
550
1707
  setDropdownOpened = _useState2[1];
551
1708
  var onClickDropdown = React.useCallback(function (e) {
@@ -566,15 +1723,15 @@ var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
566
1723
  setDropdownOpened(false);
567
1724
  }
568
1725
  }, [setDropdownOpened, dropdownOpened]);
569
- var button = /*#__PURE__*/React__default["default"].createElement(Button__default["default"], {
1726
+ var button = /*#__PURE__*/React.createElement(Button, {
570
1727
  href: !hasMultipleTypes ? "".concat(resourceRoute('create')).concat(finalTypes !== null && finalTypes.length === 1 ? "?type=".concat(finalTypes[0].id) : '') : '#',
571
1728
  size: "lg",
572
1729
  theme: "primary",
573
- className: classNames__default["default"]([_defineProperty__default["default"]({
1730
+ className: classNames([_defineProperty({
574
1731
  'dropdown-toggle': hasMultipleTypes
575
1732
  }, className, className !== null)]),
576
1733
  onClick: hasMultipleTypes ? onClickDropdown : null
577
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1734
+ }, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
578
1735
  values: resourceValues,
579
1736
  id: "l+ddDH",
580
1737
  defaultMessage: [{
@@ -585,11 +1742,11 @@ var ResourceCreateButtom = function ResourceCreateButtom(_ref) {
585
1742
  "value": "a_singular"
586
1743
  }]
587
1744
  }));
588
- return hasMultipleTypes ? /*#__PURE__*/React__default["default"].createElement("div", {
589
- className: classNames__default["default"](['dropdown', {
1745
+ return hasMultipleTypes ? /*#__PURE__*/React.createElement("div", {
1746
+ className: classNames(['dropdown', {
590
1747
  show: dropdownOpened
591
1748
  }])
592
- }, button, /*#__PURE__*/React__default["default"].createElement(Dropdown__default["default"], {
1749
+ }, button, /*#__PURE__*/React.createElement(Dropdown, {
593
1750
  items: finalTypes.map(function (it) {
594
1751
  return {
595
1752
  id: it.id,
@@ -608,21 +1765,21 @@ var ResourceCreateButton = ResourceCreateButtom;
608
1765
 
609
1766
  var _excluded$3 = ["resource"];
610
1767
  var propTypes$a = {
611
- resource: PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].shape({
612
- id: PropTypes__default["default"].string
1768
+ resource: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({
1769
+ id: PropTypes.string
613
1770
  })]).isRequired
614
1771
  };
615
1772
 
616
1773
  // Kept for backward compatibility with exports
617
1774
  var ResourceItemsList = function ResourceItemsList(_ref) {
618
1775
  var resource = _ref.resource,
619
- props = _objectWithoutProperties__default["default"](_ref, _excluded$3);
620
- var _ref2 = isObject__default["default"](resource) ? resource : {
1776
+ props = _objectWithoutProperties(_ref, _excluded$3);
1777
+ var _ref2 = isObject(resource) ? resource : {
621
1778
  id: resource
622
1779
  },
623
1780
  _ref2$id = _ref2.id,
624
1781
  finalResource = _ref2$id === void 0 ? null : _ref2$id;
625
- return /*#__PURE__*/React__default["default"].createElement(ResourceList__default["default"], Object.assign({
1782
+ return /*#__PURE__*/React.createElement(ResourceList, Object.assign({
626
1783
  resource: finalResource
627
1784
  }, props));
628
1785
  };
@@ -632,7 +1789,7 @@ var ResourceItemsList$1 = ResourceItemsList;
632
1789
  var _excluded$2 = ["id", "component"];
633
1790
  var propTypes$9 = {
634
1791
  resource: core.PropTypes.resource.isRequired,
635
- defaultActions: PropTypes__default["default"].arrayOf(PropTypes__default["default"].oneOfType([PropTypes__default["default"].string, PropTypes__default["default"].object])) // eslint-disable-line react/forbid-prop-types
1792
+ defaultActions: PropTypes.arrayOf(PropTypes.oneOfType([PropTypes.string, PropTypes.object])) // eslint-disable-line react/forbid-prop-types
636
1793
  };
637
1794
  var defaultProps$9 = {
638
1795
  defaultActions: ['create']
@@ -670,12 +1827,12 @@ var ResourceIndexPage = function ResourceIndexPage(_ref) {
670
1827
  }, [canCreate, actions]);
671
1828
  var resourceValues = intl.useResourceValues(resource);
672
1829
  var componentsManager = contexts.useComponentsManager();
673
- var _useLocation = wouter.useLocation(),
674
- _useLocation2 = _slicedToArray__default["default"](_useLocation, 2),
1830
+ var _useLocation = useLocation(),
1831
+ _useLocation2 = _slicedToArray(_useLocation, 2),
675
1832
  navigate = _useLocation2[1];
676
- var search = wouter.useSearch();
1833
+ var search = useSearch();
677
1834
  var query = React.useMemo(function () {
678
- return queryString__default["default"].parse(search, {
1835
+ return queryString.parse(search, {
679
1836
  arrayFormat: 'bracket'
680
1837
  });
681
1838
  }, [search]);
@@ -692,14 +1849,14 @@ var ResourceIndexPage = function ResourceIndexPage(_ref) {
692
1849
  var onQueryChange = React.useCallback(function (submitQuery) {
693
1850
  var newQuery = submitQuery !== null ? Object.keys(submitQuery).reduce(function (currentQuery, key) {
694
1851
  var value = submitQuery[key];
695
- return value !== null ? _objectSpread__default["default"](_objectSpread__default["default"]({}, currentQuery), {}, _defineProperty__default["default"]({}, key, value)) : currentQuery;
1852
+ return value !== null ? _objectSpread(_objectSpread({}, currentQuery), {}, _defineProperty({}, key, value)) : currentQuery;
696
1853
  }, null) : null;
697
- navigate("".concat(url).concat(newQuery !== null ? "?".concat(queryString__default["default"].stringify(newQuery, {
1854
+ navigate("".concat(url).concat(newQuery !== null ? "?".concat(queryString.stringify(newQuery, {
698
1855
  arrayFormat: 'bracket'
699
1856
  })) : ''));
700
1857
  }, [navigate, url, query, paginated]);
701
1858
  var onQueryReset = React.useCallback(function () {
702
- var resetQuery = queryString__default["default"].stringify(null, {
1859
+ var resetQuery = queryString.stringify(null, {
703
1860
  arrayFormat: 'bracket'
704
1861
  });
705
1862
  navigate("".concat(url, "?").concat(resetQuery));
@@ -709,32 +1866,32 @@ var ResourceIndexPage = function ResourceIndexPage(_ref) {
709
1866
  replace: true
710
1867
  });
711
1868
  }, [navigate, url]);
712
- return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
1869
+ return /*#__PURE__*/React.createElement(contexts.ResourceProvider, {
713
1870
  resource: resource
714
- }, /*#__PURE__*/React__default["default"].createElement(MainLayout$1, null, /*#__PURE__*/React__default["default"].createElement(PageHeader$1, {
1871
+ }, /*#__PURE__*/React.createElement(MainLayout$1, null, /*#__PURE__*/React.createElement(PageHeader$1, {
715
1872
  title: name,
716
- actions: finalActions.length > 0 ? /*#__PURE__*/React__default["default"].createElement("div", {
1873
+ actions: finalActions.length > 0 ? /*#__PURE__*/React.createElement("div", {
717
1874
  className: "d-flex align-items-center"
718
1875
  }, finalActions.map(function (_ref5) {
719
1876
  var id = _ref5.id,
720
1877
  _ref5$component = _ref5.component,
721
- component = _ref5$component === void 0 ? Button__default["default"] : _ref5$component,
722
- actionProps = _objectWithoutProperties__default["default"](_ref5, _excluded$2);
723
- var ActionComponent = isString__default["default"](component) ? componentsManager.getComponent(component) : component;
724
- return ActionComponent !== null ? /*#__PURE__*/React__default["default"].createElement(ActionComponent, Object.assign({
1878
+ component = _ref5$component === void 0 ? Button : _ref5$component,
1879
+ actionProps = _objectWithoutProperties(_ref5, _excluded$2);
1880
+ var ActionComponent = isString(component) ? componentsManager.getComponent(component) : component;
1881
+ return ActionComponent !== null ? /*#__PURE__*/React.createElement(ActionComponent, Object.assign({
725
1882
  key: "action-".concat(id)
726
- }, actionProps, ActionComponent !== Button__default["default"] ? {
1883
+ }, actionProps, ActionComponent !== Button ? {
727
1884
  resource: resource,
728
1885
  query: query,
729
1886
  onQueryChange: onQueryChange
730
1887
  } : {})) : null;
731
1888
  })) : null
732
- }), /*#__PURE__*/React__default["default"].createElement("div", {
733
- className: classNames__default["default"](['container-sm py-4'])
734
- }, created ? /*#__PURE__*/React__default["default"].createElement(Alert__default["default"], {
1889
+ }), /*#__PURE__*/React.createElement("div", {
1890
+ className: classNames(['container-sm py-4'])
1891
+ }, created ? /*#__PURE__*/React.createElement(Alert, {
735
1892
  className: "mb-4",
736
1893
  onClose: onClickCloseAlert
737
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1894
+ }, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
738
1895
  values: resourceValues,
739
1896
  id: "bfP/d8",
740
1897
  defaultMessage: [{
@@ -744,10 +1901,10 @@ var ResourceIndexPage = function ResourceIndexPage(_ref) {
744
1901
  "type": 0,
745
1902
  "value": " has been created."
746
1903
  }]
747
- })) : null, deleted ? /*#__PURE__*/React__default["default"].createElement(Alert__default["default"], {
1904
+ })) : null, deleted ? /*#__PURE__*/React.createElement(Alert, {
748
1905
  className: "mb-4",
749
1906
  onClose: onClickCloseAlert
750
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1907
+ }, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
751
1908
  values: resourceValues,
752
1909
  id: "dkRdks",
753
1910
  defaultMessage: [{
@@ -757,7 +1914,7 @@ var ResourceIndexPage = function ResourceIndexPage(_ref) {
757
1914
  "type": 0,
758
1915
  "value": " has been deleted."
759
1916
  }]
760
- })) : null, /*#__PURE__*/React__default["default"].createElement(ResourceItemsList$1, {
1917
+ })) : null, /*#__PURE__*/React.createElement(ResourceItemsList$1, {
761
1918
  resource: resource,
762
1919
  baseUrl: url,
763
1920
  query: listQuery,
@@ -773,7 +1930,7 @@ var ResourceIndex = ResourceIndexPage;
773
1930
 
774
1931
  var propTypes$8 = {
775
1932
  resource: core.PropTypes.resource.isRequired,
776
- itemId: PropTypes__default["default"].string.isRequired
1933
+ itemId: PropTypes.string.isRequired
777
1934
  };
778
1935
  var defaultProps$8 = {};
779
1936
  var ResourceShowPage = function ResourceShowPage(_ref) {
@@ -785,18 +1942,18 @@ var ResourceShowPage = function ResourceShowPage(_ref) {
785
1942
  var _ref2 = item || {},
786
1943
  _ref2$type = _ref2.type,
787
1944
  type = _ref2$type === void 0 ? null : _ref2$type;
788
- return /*#__PURE__*/React__default["default"].createElement(contexts.ResourceProvider, {
1945
+ return /*#__PURE__*/React.createElement(contexts.ResourceProvider, {
789
1946
  resource: resource
790
- }, /*#__PURE__*/React__default["default"].createElement(MainLayout$1, null, /*#__PURE__*/React__default["default"].createElement(PageHeader$1, {
1947
+ }, /*#__PURE__*/React.createElement(MainLayout$1, null, /*#__PURE__*/React.createElement(PageHeader$1, {
791
1948
  title: "".concat(name, " #").concat(itemId),
792
1949
  small: true
793
- }), /*#__PURE__*/React__default["default"].createElement("div", {
1950
+ }), /*#__PURE__*/React.createElement("div", {
794
1951
  className: "container-sm py-4"
795
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1952
+ }, /*#__PURE__*/React.createElement("div", {
796
1953
  className: "row justify-content-center"
797
- }, /*#__PURE__*/React__default["default"].createElement("div", {
1954
+ }, /*#__PURE__*/React.createElement("div", {
798
1955
  className: "col-12 col-md-8 col-lg-7"
799
- }, /*#__PURE__*/React__default["default"].createElement(ResourceForm, {
1956
+ }, /*#__PURE__*/React.createElement(ResourceForm, {
800
1957
  resource: resource,
801
1958
  item: item,
802
1959
  type: type,
@@ -820,19 +1977,19 @@ var HomePage = function HomePage() {
820
1977
  hideInNavbar = _ref$settings2$hideIn === void 0 ? false : _ref$settings2$hideIn;
821
1978
  return !hideInNavbar;
822
1979
  });
823
- return /*#__PURE__*/React__default["default"].createElement(MainLayout$1, null, /*#__PURE__*/React__default["default"].createElement("div", {
1980
+ return /*#__PURE__*/React.createElement(MainLayout$1, null, /*#__PURE__*/React.createElement("div", {
824
1981
  className: "container-sm py-4"
825
1982
  }, visibleResources.map(function (resource) {
826
1983
  var _ref2 = resource || {},
827
1984
  resourceId = _ref2.id;
828
1985
  var resourceValues = intl.useResourceValues(resource);
829
- return /*#__PURE__*/React__default["default"].createElement(Link__default["default"], {
1986
+ return /*#__PURE__*/React.createElement(Link, {
830
1987
  className: "d-block my-2",
831
1988
  key: "resource-link-".concat(resourceId),
832
1989
  href: route('resources.index', {
833
1990
  resource: resourceId
834
1991
  })
835
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
1992
+ }, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
836
1993
  values: resourceValues,
837
1994
  id: "FntHPK",
838
1995
  defaultMessage: [{
@@ -852,7 +2009,7 @@ var HomePage$1 = HomePage;
852
2009
  var propTypes$6 = {};
853
2010
  var defaultProps$6 = {};
854
2011
  var AccountPage = function AccountPage() {
855
- return /*#__PURE__*/React__default["default"].createElement(MainLayout$1, null, /*#__PURE__*/React__default["default"].createElement("div", {
2012
+ return /*#__PURE__*/React.createElement(MainLayout$1, null, /*#__PURE__*/React.createElement("div", {
856
2013
  className: "container-sm py-4"
857
2014
  }, "Account page"));
858
2015
  };
@@ -862,8 +2019,8 @@ var AccountPage$1 = AccountPage;
862
2019
 
863
2020
  /* eslint-disable react/jsx-props-no-spreading */
864
2021
  var propTypes$5 = {
865
- className: PropTypes__default["default"].string,
866
- onSuccess: PropTypes__default["default"].func
2022
+ className: PropTypes.string,
2023
+ onSuccess: PropTypes.func
867
2024
  };
868
2025
  var defaultProps$5 = {
869
2026
  className: null,
@@ -882,12 +2039,12 @@ var LoginForm = function LoginForm(_ref) {
882
2039
  }, [login]);
883
2040
  var FormComponents = contexts.useFormsComponents();
884
2041
  var FormComponent = utils.getComponentFromName('login', FormComponents);
885
- return FormComponent !== null ? /*#__PURE__*/React__default["default"].createElement(FormComponent, {
2042
+ return FormComponent !== null ? /*#__PURE__*/React.createElement(FormComponent, {
886
2043
  action: url('auth.login'),
887
2044
  postForm: postForm,
888
2045
  onComplete: onSuccess,
889
2046
  className: className,
890
- submitButtonLabel: /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
2047
+ submitButtonLabel: /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
891
2048
  id: "g6qbbX",
892
2049
  defaultMessage: [{
893
2050
  "type": 0,
@@ -903,8 +2060,8 @@ var LoginForm$1 = LoginForm;
903
2060
  var styles = {};
904
2061
 
905
2062
  var propTypes$4 = {
906
- children: PropTypes__default["default"].node.isRequired,
907
- fullscreen: PropTypes__default["default"].bool
2063
+ children: PropTypes.node.isRequired,
2064
+ fullscreen: PropTypes.bool
908
2065
  };
909
2066
  var defaultProps$4 = {
910
2067
  fullscreen: false
@@ -919,19 +2076,19 @@ var GuestLayout = function GuestLayout(_ref) {
919
2076
  background = _usePanneauColorSchem3 === void 0 ? null : _usePanneauColorSchem3,
920
2077
  _usePanneauColorSchem4 = _usePanneauColorSchem.text,
921
2078
  text = _usePanneauColorSchem4 === void 0 ? null : _usePanneauColorSchem4;
922
- return /*#__PURE__*/React__default["default"].createElement("div", {
923
- className: classNames__default["default"]([styles.container, {
2079
+ return /*#__PURE__*/React.createElement("div", {
2080
+ className: classNames([styles.container, {
924
2081
  'd-flex flex-column min-vh-100': fullscreen
925
2082
  }]),
926
2083
  "data-bs-theme": theme !== null ? theme : null
927
- }, /*#__PURE__*/React__default["default"].createElement(MainNavbar$1, {
928
- className: classNames__default["default"](['sticky-top', 'px-3'])
929
- }), /*#__PURE__*/React__default["default"].createElement("div", {
930
- className: classNames__default["default"](_defineProperty__default["default"](_defineProperty__default["default"]({
2084
+ }, /*#__PURE__*/React.createElement(MainNavbar$1, {
2085
+ className: classNames(['sticky-top', 'px-3'])
2086
+ }), /*#__PURE__*/React.createElement("div", {
2087
+ className: classNames(_defineProperty(_defineProperty({
931
2088
  'd-flex flex-column flex-grow-1': fullscreen
932
2089
  }, "bg-".concat(background), background !== null), "text-".concat(text), text !== null))
933
- }, /*#__PURE__*/React__default["default"].createElement("div", {
934
- className: classNames__default["default"]({
2090
+ }, /*#__PURE__*/React.createElement("div", {
2091
+ className: classNames({
935
2092
  'w-100 my-auto': fullscreen
936
2093
  })
937
2094
  }, children)));
@@ -950,23 +2107,23 @@ var LoginPage = function LoginPage() {
950
2107
  var onSuccess = React.useCallback(function () {
951
2108
  window.location.href = route('home');
952
2109
  }, [route]);
953
- return /*#__PURE__*/React__default["default"].createElement(GuestLayout$1, {
2110
+ return /*#__PURE__*/React.createElement(GuestLayout$1, {
954
2111
  fullscreen: true
955
- }, /*#__PURE__*/React__default["default"].createElement("div", {
2112
+ }, /*#__PURE__*/React.createElement("div", {
956
2113
  className: "container-sm py-4"
957
- }, /*#__PURE__*/React__default["default"].createElement("div", {
2114
+ }, /*#__PURE__*/React.createElement("div", {
958
2115
  className: "row justify-content-center"
959
- }, /*#__PURE__*/React__default["default"].createElement("div", {
2116
+ }, /*#__PURE__*/React.createElement("div", {
960
2117
  className: "col-12 col-sm-8 col-md-6"
961
- }, /*#__PURE__*/React__default["default"].createElement("h1", {
2118
+ }, /*#__PURE__*/React.createElement("h1", {
962
2119
  className: "mb-4"
963
- }, /*#__PURE__*/React__default["default"].createElement(reactIntl.FormattedMessage, {
2120
+ }, /*#__PURE__*/React.createElement(reactIntl.FormattedMessage, {
964
2121
  id: "AeOZq+",
965
2122
  defaultMessage: [{
966
2123
  "type": 0,
967
2124
  "value": "Login"
968
2125
  }]
969
- })), /*#__PURE__*/React__default["default"].createElement(LoginForm$1, {
2126
+ })), /*#__PURE__*/React.createElement(LoginForm$1, {
970
2127
  onSuccess: onSuccess
971
2128
  })))));
972
2129
  };
@@ -1075,15 +2232,15 @@ var defaultProps$2 = {
1075
2232
  };
1076
2233
  var ErrorPage = function ErrorPage(_ref) {
1077
2234
  var statusCode = _ref.statusCode;
1078
- return /*#__PURE__*/React__default["default"].createElement(GuestLayout$1, {
2235
+ return /*#__PURE__*/React.createElement(GuestLayout$1, {
1079
2236
  fullscreen: true
1080
- }, /*#__PURE__*/React__default["default"].createElement("div", {
2237
+ }, /*#__PURE__*/React.createElement("div", {
1081
2238
  className: "container-sm py-4"
1082
- }, /*#__PURE__*/React__default["default"].createElement("div", {
2239
+ }, /*#__PURE__*/React.createElement("div", {
1083
2240
  className: "row justify-content-center"
1084
- }, /*#__PURE__*/React__default["default"].createElement("div", {
2241
+ }, /*#__PURE__*/React.createElement("div", {
1085
2242
  className: "col-12 col-sm-8 col-md-6"
1086
- }, /*#__PURE__*/React__default["default"].createElement("h1", null, /*#__PURE__*/React__default["default"].createElement(Label__default["default"], null, messages["title".concat(statusCode || 404)])), /*#__PURE__*/React__default["default"].createElement("p", null, /*#__PURE__*/React__default["default"].createElement(Label__default["default"], null, messages["description".concat(statusCode || 404)]))))));
2243
+ }, /*#__PURE__*/React.createElement("h1", null, /*#__PURE__*/React.createElement(Label, null, messages["title".concat(statusCode || 404)])), /*#__PURE__*/React.createElement("p", null, /*#__PURE__*/React.createElement(Label, null, messages["description".concat(statusCode || 404)]))))));
1087
2244
  };
1088
2245
  ErrorPage.propTypes = propTypes$2;
1089
2246
  ErrorPage.defaultProps = defaultProps$2;
@@ -1129,17 +2286,17 @@ var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1129
2286
  var ResourceCreateComponent = componentsManager.getComponent(resourceCreatePage === null || resourceCreatePage === void 0 ? void 0 : resourceCreatePage.component) || componentsManager.getComponent(createPage === null || createPage === void 0 ? void 0 : createPage.component) || ResourceCreate;
1130
2287
  var ResourceEditComponent = componentsManager.getComponent(resourceEditPage === null || resourceEditPage === void 0 ? void 0 : resourceEditPage.component) || componentsManager.getComponent(editPage === null || editPage === void 0 ? void 0 : editPage.component) || ResourceEdit;
1131
2288
  var ResourceDeleteComponent = componentsManager.getComponent(resourceDeletePage === null || resourceDeletePage === void 0 ? void 0 : resourceDeletePage.component) || componentsManager.getComponent(deletePage === null || deletePage === void 0 ? void 0 : deletePage.component) || ResourceDelete;
1132
- return [/*#__PURE__*/React__default["default"].createElement(wouter.Route, {
2289
+ return [/*#__PURE__*/React.createElement(Route, {
1133
2290
  key: "".concat(resourceId, "-create"),
1134
2291
  path: route('resources.create', {
1135
2292
  resource: resourceId
1136
2293
  }),
1137
2294
  exact: true
1138
2295
  }, function () {
1139
- return /*#__PURE__*/React__default["default"].createElement(ResourceCreateComponent, {
2296
+ return /*#__PURE__*/React.createElement(ResourceCreateComponent, {
1140
2297
  resource: resource
1141
2298
  });
1142
- }), /*#__PURE__*/React__default["default"].createElement(wouter.Route, {
2299
+ }), /*#__PURE__*/React.createElement(Route, {
1143
2300
  key: "".concat(resourceId, "-show"),
1144
2301
  path: route('resources.show', {
1145
2302
  resource: resourceId,
@@ -1148,11 +2305,11 @@ var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1148
2305
  }, function (_ref4) {
1149
2306
  var _ref4$id = _ref4.id,
1150
2307
  id = _ref4$id === void 0 ? null : _ref4$id;
1151
- return /*#__PURE__*/React__default["default"].createElement(ResourceShowComponent, {
2308
+ return /*#__PURE__*/React.createElement(ResourceShowComponent, {
1152
2309
  itemId: id,
1153
2310
  resource: resource
1154
2311
  });
1155
- }), /*#__PURE__*/React__default["default"].createElement(wouter.Route, {
2312
+ }), /*#__PURE__*/React.createElement(Route, {
1156
2313
  key: "".concat(resourceId, "-edit"),
1157
2314
  path: route('resources.edit', {
1158
2315
  resource: resourceId,
@@ -1161,11 +2318,11 @@ var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1161
2318
  }, function (_ref5) {
1162
2319
  var _ref5$id = _ref5.id,
1163
2320
  id = _ref5$id === void 0 ? null : _ref5$id;
1164
- return /*#__PURE__*/React__default["default"].createElement(ResourceEditComponent, {
2321
+ return /*#__PURE__*/React.createElement(ResourceEditComponent, {
1165
2322
  itemId: id,
1166
2323
  resource: resource
1167
2324
  });
1168
- }), /*#__PURE__*/React__default["default"].createElement(wouter.Route, {
2325
+ }), /*#__PURE__*/React.createElement(Route, {
1169
2326
  key: "".concat(resourceId, "-delete"),
1170
2327
  path: route('resources.delete', {
1171
2328
  resource: resourceId,
@@ -1174,35 +2331,34 @@ var createResourceRoutes = function createResourceRoutes(resource, _ref) {
1174
2331
  }, function (_ref6) {
1175
2332
  var _ref6$id = _ref6.id,
1176
2333
  id = _ref6$id === void 0 ? null : _ref6$id;
1177
- return /*#__PURE__*/React__default["default"].createElement(ResourceDeleteComponent, {
2334
+ return /*#__PURE__*/React.createElement(ResourceDeleteComponent, {
1178
2335
  itemId: id,
1179
2336
  resource: resource
1180
2337
  });
1181
- })].concat(_toConsumableArray__default["default"](extraRoutes.map(function (_ref7) {
2338
+ })].concat(_toConsumableArray(extraRoutes.map(function (_ref7) {
1182
2339
  var path = _ref7.path,
1183
2340
  component = _ref7.component,
1184
- pageProps = _objectWithoutProperties__default["default"](_ref7, _excluded$1);
2341
+ pageProps = _objectWithoutProperties(_ref7, _excluded$1);
1185
2342
  var RouteComponent = componentsManager.getComponent(component);
1186
- return RouteComponent !== null ? /*#__PURE__*/React__default["default"].createElement(wouter.Route, {
2343
+ return RouteComponent !== null ? /*#__PURE__*/React.createElement(Route, {
1187
2344
  key: "route-".concat(path),
1188
2345
  path: path
1189
2346
  }, function () {
1190
- return /*#__PURE__*/React__default["default"].createElement(RouteComponent, Object.assign({
2347
+ return /*#__PURE__*/React.createElement(RouteComponent, Object.assign({
1191
2348
  resource: resource
1192
2349
  }, pageProps));
1193
2350
  }) : null;
1194
- })), [/*#__PURE__*/React__default["default"].createElement(wouter.Route, {
2351
+ })), [/*#__PURE__*/React.createElement(Route, {
1195
2352
  key: "".concat(resourceId, "-index"),
1196
2353
  path: route('resources.index', {
1197
2354
  resource: resourceId
1198
2355
  })
1199
2356
  }, function () {
1200
- return /*#__PURE__*/React__default["default"].createElement(ResourceIndexComponent, {
2357
+ return /*#__PURE__*/React.createElement(ResourceIndexComponent, {
1201
2358
  resource: resource
1202
2359
  });
1203
2360
  })]);
1204
2361
  };
1205
- var createResourceRoutes$1 = createResourceRoutes;
1206
2362
 
1207
2363
  var _excluded = ["home", "login", "account", "error", "index", "show", "create", "edit", "delete"],
1208
2364
  _excluded2 = ["path", "route", "component"];
@@ -1215,14 +2371,14 @@ var defaultProps$1 = {
1215
2371
  var PanneauRoutes = function PanneauRoutes(_ref) {
1216
2372
  var initialStatusCode = _ref.statusCode;
1217
2373
  var routes = contexts.useRoutes();
1218
- var _useLocation = wouter.useLocation(),
1219
- _useLocation2 = _slicedToArray__default["default"](_useLocation, 1),
2374
+ var _useLocation = useLocation(),
2375
+ _useLocation2 = _slicedToArray(_useLocation, 1),
1220
2376
  pathname = _useLocation2[0];
1221
2377
  var _useState = React.useState({
1222
2378
  statusCode: initialStatusCode,
1223
2379
  pathname: pathname
1224
2380
  }),
1225
- _useState2 = _slicedToArray__default["default"](_useState, 2),
2381
+ _useState2 = _slicedToArray(_useState, 2),
1226
2382
  _useState2$ = _useState2[0],
1227
2383
  statusCode = _useState2$.statusCode,
1228
2384
  lastPathname = _useState2$.pathname,
@@ -1259,16 +2415,16 @@ var PanneauRoutes = function PanneauRoutes(_ref) {
1259
2415
  _ref2.create;
1260
2416
  _ref2.edit;
1261
2417
  _ref2["delete"];
1262
- var otherPages = _objectWithoutProperties__default["default"](_ref2, _excluded);
2418
+ var otherPages = _objectWithoutProperties(_ref2, _excluded);
1263
2419
  var customRoutes = React.useMemo(function () {
1264
- return [].concat(_toConsumableArray__default["default"](Object.keys(routesDefinition).filter(function (key) {
2420
+ return [].concat(_toConsumableArray(Object.keys(routesDefinition).filter(function (key) {
1265
2421
  return key.match(/^(resources\.|auth\.)/) === null && key !== 'home' && key !== 'account';
1266
2422
  }).filter(function (key) {
1267
2423
  var routeDef = routesDefinition[key];
1268
- return isObject__default["default"](routeDef) && typeof routeDef.component !== 'undefined' && typeof routeDef.path !== 'undefined';
2424
+ return isObject(routeDef) && typeof routeDef.component !== 'undefined' && typeof routeDef.path !== 'undefined';
1269
2425
  }).map(function (key) {
1270
2426
  return routesDefinition[key];
1271
- })), _toConsumableArray__default["default"](Object.keys(otherPages).map(function (key) {
2427
+ })), _toConsumableArray(Object.keys(otherPages).map(function (key) {
1272
2428
  return otherPages[key];
1273
2429
  }).filter(function (_ref3) {
1274
2430
  var _ref3$path = _ref3.path,
@@ -1285,66 +2441,66 @@ var PanneauRoutes = function PanneauRoutes(_ref) {
1285
2441
 
1286
2442
  // If there is an error status code
1287
2443
  if (statusCode !== null) {
1288
- return /*#__PURE__*/React__default["default"].createElement(ErrorComponent, Object.assign({
2444
+ return /*#__PURE__*/React.createElement(ErrorComponent, Object.assign({
1289
2445
  statusCode: statusCode
1290
2446
  }, errorPage));
1291
2447
  }
1292
2448
 
1293
2449
  // If user is unauthenticated
1294
2450
  if (user === null) {
1295
- return /*#__PURE__*/React__default["default"].createElement(wouter.Switch, null, /*#__PURE__*/React__default["default"].createElement(wouter.Route, {
2451
+ return /*#__PURE__*/React.createElement(Switch, null, /*#__PURE__*/React.createElement(Route, {
1296
2452
  path: routes['auth.login']
1297
- }, /*#__PURE__*/React__default["default"].createElement(LoginComponent, loginPage)), /*#__PURE__*/React__default["default"].createElement(wouter.Route, null, /*#__PURE__*/React__default["default"].createElement(wouter.Redirect, {
2453
+ }, /*#__PURE__*/React.createElement(LoginComponent, loginPage)), /*#__PURE__*/React.createElement(Route, null, /*#__PURE__*/React.createElement(Redirect, {
1298
2454
  to: "".concat(route('auth.login'), "?next=").concat(encodeURIComponent(pathname))
1299
2455
  })));
1300
2456
  }
1301
2457
 
1302
2458
  // Normal routes
1303
- return /*#__PURE__*/React__default["default"].createElement(wouter.Switch, null, user !== null ? /*#__PURE__*/React__default["default"].createElement(wouter.Route, {
2459
+ return /*#__PURE__*/React.createElement(Switch, null, user !== null ? /*#__PURE__*/React.createElement(Route, {
1304
2460
  path: routes['auth.login']
1305
- }, /*#__PURE__*/React__default["default"].createElement(wouter.Redirect, {
2461
+ }, /*#__PURE__*/React.createElement(Redirect, {
1306
2462
  to: routes.home,
1307
2463
  replace: true
1308
2464
  })) : null, resources.map(function (resource) {
1309
2465
  var _ref4 = resource || {},
1310
2466
  resourceId = _ref4.id;
1311
- return /*#__PURE__*/React__default["default"].createElement(React.Fragment, {
2467
+ return /*#__PURE__*/React.createElement(React.Fragment, {
1312
2468
  key: "resource-".concat(resourceId)
1313
- }, createResourceRoutes$1(resource, {
2469
+ }, createResourceRoutes(resource, {
1314
2470
  route: route,
1315
2471
  componentsManager: componentsManager,
1316
2472
  pages: pages
1317
2473
  }));
1318
- }), /*#__PURE__*/React__default["default"].createElement(wouter.Route, {
2474
+ }), /*#__PURE__*/React.createElement(Route, {
1319
2475
  path: routes.account
1320
- }, /*#__PURE__*/React__default["default"].createElement(AccountComponent, accountPage)), customRoutes.map(function (_ref5) {
2476
+ }, /*#__PURE__*/React.createElement(AccountComponent, accountPage)), customRoutes.map(function (_ref5) {
1321
2477
  var _ref5$path = _ref5.path,
1322
2478
  path = _ref5$path === void 0 ? null : _ref5$path,
1323
2479
  _ref5$route = _ref5.route,
1324
2480
  pageRoute = _ref5$route === void 0 ? null : _ref5$route,
1325
2481
  component = _ref5.component,
1326
- props = _objectWithoutProperties__default["default"](_ref5, _excluded2);
2482
+ props = _objectWithoutProperties(_ref5, _excluded2);
1327
2483
  var PageComponent = componentsManager.getComponent(component);
1328
2484
  var finalPath = path || routes[pageRoute];
1329
- return PageComponent !== null ? /*#__PURE__*/React__default["default"].createElement(wouter.Route, {
2485
+ return PageComponent !== null ? /*#__PURE__*/React.createElement(Route, {
1330
2486
  key: "custom-route-".concat(finalPath),
1331
2487
  path: path || routes[pageRoute]
1332
- }, /*#__PURE__*/React__default["default"].createElement(PageComponent, props)) : null;
1333
- }), /*#__PURE__*/React__default["default"].createElement(wouter.Route, {
2488
+ }, /*#__PURE__*/React.createElement(PageComponent, props)) : null;
2489
+ }), /*#__PURE__*/React.createElement(Route, {
1334
2490
  path: routes.home
1335
- }, /*#__PURE__*/React__default["default"].createElement(HomeComponent, homePage)), /*#__PURE__*/React__default["default"].createElement(wouter.Route, null, /*#__PURE__*/React__default["default"].createElement(ErrorComponent, null)));
2491
+ }, /*#__PURE__*/React.createElement(HomeComponent, homePage)), /*#__PURE__*/React.createElement(Route, null, /*#__PURE__*/React.createElement(ErrorComponent, null)));
1336
2492
  };
1337
2493
  PanneauRoutes.propTypes = propTypes$1;
1338
2494
  PanneauRoutes.defaultProps = defaultProps$1;
1339
2495
  var Routes = PanneauRoutes;
1340
2496
 
1341
- var pathToRegexpParser = routes.createPathToRegexpParser();
2497
+ var pathToRegexpParser = createPathToRegexpParser();
1342
2498
  var propTypes = {
1343
2499
  definition: core.PropTypes.panneauDefinition.isRequired,
1344
- components: PropTypes__default["default"].oneOfType([PropTypes__default["default"].objectOf(PropTypes__default["default"].elementType), PropTypes__default["default"].objectOf(PropTypes__default["default"].objectOf(PropTypes__default["default"].elementType))]),
2500
+ components: PropTypes.oneOfType([PropTypes.objectOf(PropTypes.elementType), PropTypes.objectOf(PropTypes.objectOf(PropTypes.elementType))]),
1345
2501
  user: core.PropTypes.user,
1346
- memoryRouter: PropTypes__default["default"].bool,
1347
- baseUrl: PropTypes__default["default"].string,
2502
+ memoryRouter: PropTypes.bool,
2503
+ baseUrl: PropTypes.string,
1348
2504
  uppy: core.PropTypes.uppy,
1349
2505
  statusCode: core.PropTypes.statusCode
1350
2506
  };
@@ -1371,7 +2527,7 @@ var Container = function Container(_ref) {
1371
2527
  _definition$intl2$loc2 = _definition$intl2.locales,
1372
2528
  locales = _definition$intl2$loc2 === void 0 ? [] : _definition$intl2$loc2,
1373
2529
  _definition$routes = definition.routes,
1374
- routes$1 = _definition$routes === void 0 ? {} : _definition$routes,
2530
+ routes = _definition$routes === void 0 ? {} : _definition$routes,
1375
2531
  _definition$settings = definition.settings,
1376
2532
  _definition$settings2 = _definition$settings === void 0 ? {} : _definition$settings,
1377
2533
  _definition$settings3 = _definition$settings2.memoryRouter,
@@ -1384,14 +2540,14 @@ var Container = function Container(_ref) {
1384
2540
  messages = _definition$intl4$mes === void 0 ? null : _definition$intl4$mes,
1385
2541
  _definition$resources = definition.resources,
1386
2542
  resources = _definition$resources === void 0 ? [] : _definition$resources;
1387
- return _objectSpread__default["default"](_objectSpread__default["default"]({}, messages), resources.reduce(function (allMessages, _ref2) {
2543
+ return _objectSpread(_objectSpread({}, messages), resources.reduce(function (allMessages, _ref2) {
1388
2544
  var id = _ref2.id,
1389
2545
  _ref2$intl = _ref2.intl,
1390
2546
  _ref2$intl2 = _ref2$intl === void 0 ? {} : _ref2$intl,
1391
2547
  _ref2$intl2$messages = _ref2$intl2.messages,
1392
2548
  resourceMessages = _ref2$intl2$messages === void 0 ? {} : _ref2$intl2$messages;
1393
- return _objectSpread__default["default"](_objectSpread__default["default"]({}, allMessages), Object.keys(resourceMessages).reduce(function (allResourceMessages, key) {
1394
- return _objectSpread__default["default"](_objectSpread__default["default"]({}, allResourceMessages), {}, _defineProperty__default["default"]({}, "resources.".concat(id, ".").concat(key), resourceMessages[key]));
2549
+ return _objectSpread(_objectSpread({}, allMessages), Object.keys(resourceMessages).reduce(function (allResourceMessages, key) {
2550
+ return _objectSpread(_objectSpread({}, allResourceMessages), {}, _defineProperty({}, "resources.".concat(id, ".").concat(key), resourceMessages[key]));
1395
2551
  }, {}));
1396
2552
  }, {}));
1397
2553
  }, [definition]);
@@ -1401,30 +2557,30 @@ var Container = function Container(_ref) {
1401
2557
  var onLogout = React.useCallback(function () {
1402
2558
  window.location.reload();
1403
2559
  }, [baseUrl]);
1404
- var _useMemoryRouter = routes.useMemoryRouter(),
2560
+ var _useMemoryRouter = useMemoryRouter(),
1405
2561
  memoryLocationHook = _useMemoryRouter.hook,
1406
2562
  memorySearchHook = _useMemoryRouter.searchHook;
1407
- return /*#__PURE__*/React__default["default"].createElement(wouter.Router, {
2563
+ return /*#__PURE__*/React.createElement(Router, {
1408
2564
  hook: isMemoryRouter ? memoryLocationHook : null,
1409
2565
  searchHook: isMemoryRouter ? memorySearchHook : null,
1410
2566
  parser: pathToRegexpParser
1411
- }, /*#__PURE__*/React__default["default"].createElement(intl.IntlProvider, {
2567
+ }, /*#__PURE__*/React.createElement(intl.IntlProvider, {
1412
2568
  locale: locale,
1413
2569
  locales: locales,
1414
2570
  extraMessages: extraMessages
1415
- }, /*#__PURE__*/React__default["default"].createElement(contexts.PanneauProvider, {
2571
+ }, /*#__PURE__*/React.createElement(contexts.PanneauProvider, {
1416
2572
  definition: definition
1417
- }, /*#__PURE__*/React__default["default"].createElement(uppy.UppyProvider, uppy$1, /*#__PURE__*/React__default["default"].createElement(contexts.RoutesProvider, {
1418
- routes: routes$1
1419
- }, /*#__PURE__*/React__default["default"].createElement(FieldsProvider__default["default"], null, /*#__PURE__*/React__default["default"].createElement(FormsProvider__default["default"], null, /*#__PURE__*/React__default["default"].createElement(ListsProvider__default["default"], null, /*#__PURE__*/React__default["default"].createElement(DisplaysProvider__default["default"], null, /*#__PURE__*/React__default["default"].createElement(FiltersProvider__default["default"], null, /*#__PURE__*/React__default["default"].createElement(contexts.ModalProvider, null, /*#__PURE__*/React__default["default"].createElement(ModalsProvider__default["default"], null, /*#__PURE__*/React__default["default"].createElement(data.ApiProvider, {
2573
+ }, /*#__PURE__*/React.createElement(uppy.UppyProvider, uppy$1, /*#__PURE__*/React.createElement(contexts.RoutesProvider, {
2574
+ routes: routes
2575
+ }, /*#__PURE__*/React.createElement(FieldsProvider, null, /*#__PURE__*/React.createElement(FormsProvider, null, /*#__PURE__*/React.createElement(ListsProvider, null, /*#__PURE__*/React.createElement(DisplaysProvider, null, /*#__PURE__*/React.createElement(FiltersProvider, null, /*#__PURE__*/React.createElement(contexts.ModalProvider, null, /*#__PURE__*/React.createElement(ModalsProvider, null, /*#__PURE__*/React.createElement(data.ApiProvider, {
1420
2576
  baseUrl: baseUrl,
1421
2577
  onUnauthorized: onUnauthorized
1422
- }, /*#__PURE__*/React__default["default"].createElement(auth.AuthProvider, {
2578
+ }, /*#__PURE__*/React.createElement(auth.AuthProvider, {
1423
2579
  user: user,
1424
2580
  onLogout: onLogout
1425
- }, /*#__PURE__*/React__default["default"].createElement(contexts.ComponentsProvider, {
2581
+ }, /*#__PURE__*/React.createElement(contexts.ComponentsProvider, {
1426
2582
  components: components
1427
- }, /*#__PURE__*/React__default["default"].createElement(Routes, {
2583
+ }, /*#__PURE__*/React.createElement(Routes, {
1428
2584
  statusCode: statusCode
1429
2585
  }))))))))))))))));
1430
2586
  };
@@ -1433,10 +2589,11 @@ Container.defaultProps = defaultProps;
1433
2589
  var PanneauContainer = Container;
1434
2590
 
1435
2591
  /* eslint-disable react/jsx-props-no-spreading */
2592
+ // import PropTypes from 'prop-types';
1436
2593
 
1437
2594
  // Kept for backward compatibility with exports
1438
2595
  var ResourceFilters = function ResourceFilters(props) {
1439
- return /*#__PURE__*/React__default["default"].createElement(Filters__default["default"], props);
2596
+ return /*#__PURE__*/React.createElement(Filters, props);
1440
2597
  };
1441
2598
  var ResourceFilters$1 = ResourceFilters;
1442
2599
 
@@ -1446,4 +2603,4 @@ exports.PageHeader = PageHeader$1;
1446
2603
  exports.ResourceFilters = ResourceFilters$1;
1447
2604
  exports.ResourceForm = ResourceForm;
1448
2605
  exports.ResourceItemsList = ResourceItemsList$1;
1449
- exports["default"] = PanneauContainer;
2606
+ exports.default = PanneauContainer;