@panneau/core 3.0.300 → 4.0.0

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.
@@ -0,0 +1,1406 @@
1
+ 'use strict';
2
+
3
+ var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
4
+ var isString = require('lodash-es/isString');
5
+ var React = require('react');
6
+ var core = require('@panneau/core');
7
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
8
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
9
+ var uniqBy = require('lodash-es/uniqBy');
10
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
11
+ var fetch = require('@folklore/fetch');
12
+ var isObject = require('lodash-es/isObject');
13
+ var services = require('@folklore/services');
14
+ var reactIntl = require('react-intl');
15
+ var utils = require('@panneau/core/utils');
16
+ var _objectWithoutProperties = require('@babel/runtime/helpers/objectWithoutProperties');
17
+ var PropTypes = require('prop-types');
18
+ var jsxRuntime = require('react/jsx-runtime');
19
+ var pathToRegexp = require('path-to-regexp');
20
+ var regexparam = require('regexparam');
21
+ var index_js = require('use-sync-external-store/shim/index.js');
22
+ var tracking = require('@folklore/tracking');
23
+
24
+ function _interopNamespaceDefault(e) {
25
+ var n = Object.create(null);
26
+ if (e) {
27
+ Object.keys(e).forEach(function (k) {
28
+ if (k !== 'default') {
29
+ var d = Object.getOwnPropertyDescriptor(e, k);
30
+ Object.defineProperty(n, k, d.get ? d : {
31
+ enumerable: true,
32
+ get: function () { return e[k]; }
33
+ });
34
+ }
35
+ });
36
+ }
37
+ n.default = e;
38
+ return Object.freeze(n);
39
+ }
40
+
41
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
42
+
43
+ var MODALS_NAMESPACE = 'modals';
44
+ var FIELDS_NAMESPACE = 'fields';
45
+ var FORMS_NAMESPACE = 'forms';
46
+ var FILTERS_NAMESPACE = 'filters';
47
+ var LISTS_NAMESPACE = 'lists';
48
+ var DISPLAYS_NAMESPACE = 'displays';
49
+ var ACTIONS_NAMESPACE = 'actions';
50
+ var BUTTONS_NAMESPACE = 'buttons';
51
+ var PAGES_NAMESPACE = 'pages';
52
+ var PREVIEWS_NAMESPACE = 'previews';
53
+ var APP_NAMESPACE = 'app';
54
+ var ComponentsContext = /*#__PURE__*/React.createContext(null);
55
+
56
+ /**
57
+ * Hooks
58
+ */
59
+ var useComponentsManager = function useComponentsManager() {
60
+ var namespace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
61
+ var manager = React.useContext(ComponentsContext);
62
+ var finalManager = React.useMemo(function () {
63
+ return namespace !== null ? new core.ComponentsManager(manager.getComponents(namespace)) : manager;
64
+ }, [manager, namespace]);
65
+ return finalManager;
66
+ };
67
+ var useComponents = function useComponents() {
68
+ var namespace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
69
+ var defaultComponents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
70
+ var manager = useComponentsManager();
71
+ return manager.getComponents(namespace) || defaultComponents;
72
+ };
73
+ var useComponent = function useComponent(name) {
74
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
75
+ var namespace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
76
+ var manager = useComponentsManager(namespace);
77
+ return React.useMemo(function () {
78
+ if (!isString(name)) {
79
+ return name || defaultComponent;
80
+ }
81
+ return manager.getComponent(name) || defaultComponent;
82
+ }, [manager, name, defaultComponent]);
83
+ };
84
+
85
+ /**
86
+ * Fields hooks
87
+ */
88
+ var useFieldsComponentsManager = function useFieldsComponentsManager() {
89
+ return useComponentsManager(FIELDS_NAMESPACE);
90
+ };
91
+ var useFieldsComponents = function useFieldsComponents() {
92
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
93
+ return useComponents(FIELDS_NAMESPACE, defaultComponents);
94
+ };
95
+ var useFieldComponent = function useFieldComponent(name) {
96
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
97
+ return useComponent(name, defaultComponent, FIELDS_NAMESPACE);
98
+ };
99
+
100
+ /**
101
+ * Forms hooks
102
+ */
103
+ var useFormsComponentsManager = function useFormsComponentsManager() {
104
+ return useComponentsManager(FORMS_NAMESPACE);
105
+ };
106
+ var useFormsComponents = function useFormsComponents() {
107
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
108
+ return useComponents(FORMS_NAMESPACE, defaultComponents);
109
+ };
110
+ var useFormComponent = function useFormComponent(name) {
111
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
112
+ return useComponent(name, defaultComponent, FORMS_NAMESPACE);
113
+ };
114
+
115
+ /**
116
+ * Modals hooks
117
+ */
118
+ var useModalsComponentsManager = function useModalsComponentsManager() {
119
+ return useComponentsManager(MODALS_NAMESPACE);
120
+ };
121
+ var useModalsComponents = function useModalsComponents() {
122
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
123
+ return useComponents(MODALS_NAMESPACE, defaultComponents);
124
+ };
125
+ var useModalComponent = function useModalComponent(name) {
126
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
127
+ return useComponent(name, defaultComponent, MODALS_NAMESPACE);
128
+ };
129
+
130
+ /**
131
+ * Filters hooks
132
+ */
133
+ var useFiltersComponentsManager = function useFiltersComponentsManager() {
134
+ return useComponentsManager(FILTERS_NAMESPACE);
135
+ };
136
+ var useFiltersComponents = function useFiltersComponents() {
137
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
138
+ return useComponents(FILTERS_NAMESPACE, defaultComponents);
139
+ };
140
+ var useFilterComponent = function useFilterComponent(name) {
141
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
142
+ return useComponent(name, defaultComponent, FILTERS_NAMESPACE);
143
+ };
144
+
145
+ /**
146
+ * Lists hooks
147
+ */
148
+ var useListsComponentsManager = function useListsComponentsManager() {
149
+ return useComponentsManager(LISTS_NAMESPACE);
150
+ };
151
+ var useListsComponents = function useListsComponents() {
152
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
153
+ return useComponents(LISTS_NAMESPACE, defaultComponents);
154
+ };
155
+ var useListComponent = function useListComponent(name) {
156
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
157
+ return useComponent(name, defaultComponent, LISTS_NAMESPACE);
158
+ };
159
+
160
+ /**
161
+ * Displays hooks
162
+ */
163
+ var useDisplaysComponentsManager = function useDisplaysComponentsManager() {
164
+ return useComponentsManager(DISPLAYS_NAMESPACE);
165
+ };
166
+ var useDisplaysComponents = function useDisplaysComponents() {
167
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
168
+ return useComponents(DISPLAYS_NAMESPACE, defaultComponents);
169
+ };
170
+ var useDisplayComponent = function useDisplayComponent(name) {
171
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
172
+ return useComponent(name, defaultComponent, DISPLAYS_NAMESPACE);
173
+ };
174
+
175
+ /**
176
+ * Actions hooks
177
+ */
178
+ var useActionsComponentsManager = function useActionsComponentsManager() {
179
+ return useComponentsManager(ACTIONS_NAMESPACE);
180
+ };
181
+ var useActionsComponents = function useActionsComponents() {
182
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
183
+ return useComponents(ACTIONS_NAMESPACE, defaultComponents);
184
+ };
185
+ var useActionComponent = function useActionComponent(name) {
186
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
187
+ return useComponent(name, defaultComponent, ACTIONS_NAMESPACE);
188
+ };
189
+
190
+ /**
191
+ * Buttons hooks
192
+ */
193
+ var useButtonsComponentsManager = function useButtonsComponentsManager() {
194
+ return useComponentsManager(BUTTONS_NAMESPACE);
195
+ };
196
+ var useButtonsComponents = function useButtonsComponents() {
197
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
198
+ return useComponents(BUTTONS_NAMESPACE, defaultComponents);
199
+ };
200
+ var useButtonComponent = function useButtonComponent(name) {
201
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
202
+ return useComponent(name, defaultComponent, BUTTONS_NAMESPACE);
203
+ };
204
+
205
+ /**
206
+ * Pages hooks
207
+ */
208
+ var usePagesComponentsManager = function usePagesComponentsManager() {
209
+ return useComponentsManager(PAGES_NAMESPACE);
210
+ };
211
+ var usePagesComponents = function usePagesComponents() {
212
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
213
+ return useComponents(PAGES_NAMESPACE, defaultComponents);
214
+ };
215
+ var usePageComponent = function usePageComponent(name) {
216
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
217
+ return useComponent(name, defaultComponent, PAGES_NAMESPACE);
218
+ };
219
+
220
+ /**
221
+ * Previews hooks
222
+ */
223
+ var usePreviewsComponentsManager = function usePreviewsComponentsManager() {
224
+ return useComponentsManager(PREVIEWS_NAMESPACE);
225
+ };
226
+ var usePreviewsComponents = function usePreviewsComponents() {
227
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
228
+ return useComponents(PREVIEWS_NAMESPACE, defaultComponents);
229
+ };
230
+ var usePreviewComponent = function usePreviewComponent(name) {
231
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
232
+ return useComponent(name, defaultComponent, PREVIEWS_NAMESPACE);
233
+ };
234
+
235
+ /**
236
+ * App hooks
237
+ */
238
+ var useAppComponentsManager = function useAppComponentsManager() {
239
+ return useComponentsManager(APP_NAMESPACE);
240
+ };
241
+ var useAppComponents = function useAppComponents() {
242
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
243
+ return useComponents(APP_NAMESPACE, defaultComponents);
244
+ };
245
+ var useAppComponent = function useAppComponent(name) {
246
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
247
+ return useComponent(name, defaultComponent, APP_NAMESPACE);
248
+ };
249
+
250
+ /**
251
+ * Provider
252
+ */
253
+
254
+ var DEFAULT_COMPONENTS$1 = {};
255
+ function ComponentsProvider(_ref) {
256
+ var _ref$components = _ref.components,
257
+ components = _ref$components === void 0 ? DEFAULT_COMPONENTS$1 : _ref$components,
258
+ _ref$manager = _ref.manager,
259
+ manager = _ref$manager === void 0 ? null : _ref$manager,
260
+ _ref$namespace = _ref.namespace,
261
+ namespace = _ref$namespace === void 0 ? null : _ref$namespace,
262
+ children = _ref.children;
263
+ var previousManager = useComponentsManager() || null;
264
+ var finalManager = React.useMemo(function () {
265
+ return new core.ComponentsManager(_objectSpread(_objectSpread(_objectSpread({}, previousManager !== null ? previousManager.getComponents() : null), manager !== null ? manager.getComponents() : null), new core.ComponentsManager(components).addNamespace(namespace).getComponents()));
266
+ }, [previousManager, manager, components, namespace]);
267
+ return /*#__PURE__*/React.createElement(ComponentsContext.Provider, {
268
+ value: finalManager
269
+ }, children);
270
+ }
271
+
272
+ /* eslint-disable react/jsx-props-no-spreading */
273
+ var DefinitionContext = /*#__PURE__*/React.createContext(null);
274
+ var useDefinitionContext = function useDefinitionContext() {
275
+ return React.useContext(DefinitionContext);
276
+ };
277
+ var useDefinition = function useDefinition() {
278
+ var definition = useDefinitionContext();
279
+ return definition || null;
280
+ };
281
+ function DefinitionProvider(_ref) {
282
+ var definition = _ref.definition,
283
+ children = _ref.children;
284
+ return /*#__PURE__*/React.createElement(DefinitionContext.Provider, {
285
+ value: definition
286
+ }, children);
287
+ }
288
+
289
+ var FieldsContext = /*#__PURE__*/React.createContext(null);
290
+ var useFieldsManager = function useFieldsManager() {
291
+ return React.useContext(FieldsContext);
292
+ };
293
+ var useField = function useField(id) {
294
+ var manager = useFieldsManager();
295
+ return manager.getDefinition(id);
296
+ };
297
+ var useFields = function useFields() {
298
+ var manager = useFieldsManager();
299
+ return manager.getDefinitions();
300
+ };
301
+ function FieldsProvider(_ref) {
302
+ var _ref$fields = _ref.fields,
303
+ fields = _ref$fields === void 0 ? null : _ref$fields,
304
+ _ref$manager = _ref.manager,
305
+ manager = _ref$manager === void 0 ? null : _ref$manager,
306
+ children = _ref.children;
307
+ var previousManager = useFieldsManager() || null;
308
+ var finalManager = React.useMemo(function () {
309
+ var newFields = uniqBy([].concat(_toConsumableArray(fields || []), _toConsumableArray(manager !== null ? manager.getDefinitions() : []), _toConsumableArray(previousManager !== null ? previousManager.getDefinitions() : [])), function (_ref2) {
310
+ var id = _ref2.id;
311
+ return id;
312
+ }).reverse();
313
+ return new core.FieldsManager(newFields);
314
+ }, [previousManager, manager, fields]);
315
+ var components = React.useMemo(function () {
316
+ var newComponents = finalManager.getComponents();
317
+ return Object.keys(newComponents).reduce(function (map, id) {
318
+ var component = newComponents[id];
319
+ return isString(component) ? map : _objectSpread(_objectSpread({}, map), {}, _defineProperty({}, id, component));
320
+ }, {});
321
+ }, [finalManager]);
322
+ return /*#__PURE__*/React.createElement(FieldsContext.Provider, {
323
+ value: finalManager
324
+ }, /*#__PURE__*/React.createElement(ComponentsProvider, {
325
+ namespace: FIELDS_NAMESPACE,
326
+ components: components
327
+ }, children));
328
+ }
329
+
330
+ /* eslint-disable react/jsx-props-no-spreading */
331
+ var GoogleKeysContext = /*#__PURE__*/React.createContext({
332
+ apiKey: null
333
+ });
334
+ var useGoogleKeys = function useGoogleKeys() {
335
+ return React.useContext(GoogleKeysContext);
336
+ };
337
+ function GoogleKeysProvider(_ref) {
338
+ var children = _ref.children,
339
+ _ref$apiKey = _ref.apiKey,
340
+ apiKey = _ref$apiKey === void 0 ? null : _ref$apiKey;
341
+ var _useGoogleKeys = useGoogleKeys(),
342
+ previousApiKey = _useGoogleKeys.apiKey;
343
+ var value = React.useMemo(function () {
344
+ return {
345
+ apiKey: apiKey || previousApiKey
346
+ };
347
+ }, [previousApiKey, apiKey]);
348
+ return /*#__PURE__*/React.createElement(GoogleKeysContext.Provider, {
349
+ value: value
350
+ }, children);
351
+ }
352
+
353
+ var FontsContext = /*#__PURE__*/React.createContext({
354
+ systemFonts: null,
355
+ googleFonts: null,
356
+ customFonts: null
357
+ });
358
+ var useGoogleFonts = function useGoogleFonts() {
359
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
360
+ _ref$disabled = _ref.disabled,
361
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
362
+ _ref$setFonts = _ref.setFonts,
363
+ setFonts = _ref$setFonts === void 0 ? null : _ref$setFonts;
364
+ var _useGoogleKeys = useGoogleKeys(),
365
+ apiKey = _useGoogleKeys.apiKey;
366
+ var _useState = React.useState(null),
367
+ _useState2 = _slicedToArray(_useState, 2),
368
+ googleFonts = _useState2[0],
369
+ setGoogleFonts = _useState2[1];
370
+ React.useEffect(function () {
371
+ var canceled = false;
372
+ if (apiKey !== null && !disabled) {
373
+ fetch.getJSON("https://www.googleapis.com/webfonts/v1/webfonts?key=".concat(apiKey, "&sort=popularity")).then(function (_ref2) {
374
+ var _ref2$items = _ref2.items,
375
+ items = _ref2$items === void 0 ? [] : _ref2$items;
376
+ if (!canceled) {
377
+ var newFonts = items.map(function (it) {
378
+ return {
379
+ type: 'google',
380
+ name: it.family,
381
+ variants: it.variants
382
+ };
383
+ });
384
+ if (setFonts !== null) {
385
+ setFonts(newFonts);
386
+ } else {
387
+ setGoogleFonts(newFonts);
388
+ }
389
+ }
390
+ });
391
+ }
392
+ return function () {
393
+ canceled = true;
394
+ };
395
+ }, [apiKey, disabled, setFonts, setGoogleFonts]);
396
+ return googleFonts;
397
+ };
398
+ var useFonts = function useFonts() {
399
+ var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
400
+ _ref3$withoutGoogleFo = _ref3.withoutGoogleFonts,
401
+ withoutGoogleFonts = _ref3$withoutGoogleFo === void 0 ? false : _ref3$withoutGoogleFo;
402
+ var _useContext = React.useContext(FontsContext),
403
+ _useContext$setGoogle = _useContext.setGoogleFonts,
404
+ setGoogleFonts = _useContext$setGoogle === void 0 ? null : _useContext$setGoogle,
405
+ _useContext$systemFon = _useContext.systemFonts,
406
+ systemFonts = _useContext$systemFon === void 0 ? null : _useContext$systemFon,
407
+ _useContext$googleFon = _useContext.googleFonts,
408
+ googleFonts = _useContext$googleFon === void 0 ? null : _useContext$googleFon,
409
+ _useContext$customFon = _useContext.customFonts,
410
+ customFonts = _useContext$customFon === void 0 ? null : _useContext$customFon;
411
+ useGoogleFonts({
412
+ disabled: withoutGoogleFonts || googleFonts !== null && googleFonts.length > 0,
413
+ setFonts: setGoogleFonts
414
+ });
415
+ var fonts = React.useMemo(function () {
416
+ return {
417
+ systemFonts: systemFonts,
418
+ googleFonts: googleFonts,
419
+ customFonts: customFonts
420
+ };
421
+ }, [systemFonts, googleFonts, customFonts]);
422
+ return fonts;
423
+ };
424
+ var DEFAULT_SYSTEM_FONTS = ['Arial', 'Courier', 'Georgia', 'Times New Roman', 'Verdana'];
425
+ function FontsProvider(_ref4) {
426
+ var _ref4$systemFonts = _ref4.systemFonts,
427
+ systemFonts = _ref4$systemFonts === void 0 ? DEFAULT_SYSTEM_FONTS : _ref4$systemFonts,
428
+ _ref4$customFonts = _ref4.customFonts,
429
+ customFonts = _ref4$customFonts === void 0 ? null : _ref4$customFonts,
430
+ children = _ref4.children;
431
+ var _useFonts = useFonts(),
432
+ _useFonts$systemFonts = _useFonts.systemFonts,
433
+ previousSystemFonts = _useFonts$systemFonts === void 0 ? null : _useFonts$systemFonts,
434
+ _useFonts$googleFonts = _useFonts.googleFonts,
435
+ previousGoogleFonts = _useFonts$googleFonts === void 0 ? null : _useFonts$googleFonts,
436
+ _useFonts$customFonts = _useFonts.customFonts,
437
+ previousCustomFonts = _useFonts$customFonts === void 0 ? null : _useFonts$customFonts;
438
+ var _useState3 = React.useState(null),
439
+ _useState4 = _slicedToArray(_useState3, 2),
440
+ googleFonts = _useState4[0],
441
+ setGoogleFonts = _useState4[1];
442
+ var fonts = React.useMemo(function () {
443
+ return {
444
+ systemFonts: uniqBy([].concat(_toConsumableArray(previousSystemFonts || []), _toConsumableArray(systemFonts || [])), function (font) {
445
+ return isObject(font) ? font.name : font;
446
+ }),
447
+ googleFonts: uniqBy([].concat(_toConsumableArray(previousGoogleFonts || []), _toConsumableArray(googleFonts || [])), function (font) {
448
+ return isObject(font) ? font.name : font;
449
+ }),
450
+ customFonts: uniqBy([].concat(_toConsumableArray(previousCustomFonts || []), _toConsumableArray(customFonts || [])), function (font) {
451
+ return isObject(font) ? font.name : font;
452
+ }),
453
+ setGoogleFonts: setGoogleFonts
454
+ };
455
+ }, [previousSystemFonts, previousGoogleFonts, previousCustomFonts, customFonts, systemFonts, googleFonts, setGoogleFonts]);
456
+ return /*#__PURE__*/React.createElement(FontsContext.Provider, {
457
+ value: fonts
458
+ }, children);
459
+ }
460
+
461
+ /* eslint-disable react/jsx-props-no-spreading */
462
+ var FormContext = /*#__PURE__*/React.createContext(null);
463
+ var useForm = function useForm() {
464
+ return React.useContext(FormContext);
465
+ };
466
+ var useFormValue = function useFormValue() {
467
+ var _useForm = useForm(),
468
+ value = _useForm.value;
469
+ return value;
470
+ };
471
+ var useFormSetValue = function useFormSetValue() {
472
+ var _useForm2 = useForm(),
473
+ setValue = _useForm2.setValue;
474
+ return setValue;
475
+ };
476
+ function FormProvider(_ref) {
477
+ var value = _ref.value,
478
+ setValue = _ref.setValue,
479
+ children = _ref.children;
480
+ var values = React.useMemo(function () {
481
+ return {
482
+ value: value,
483
+ setValue: setValue
484
+ };
485
+ }, [value, setValue]);
486
+ return /*#__PURE__*/React.createElement(FormContext.Provider, {
487
+ value: values
488
+ }, children);
489
+ }
490
+
491
+ var GoogleApiClientContext = /*#__PURE__*/React.createContext(null);
492
+ var useGoogleApiClient = function useGoogleApiClient() {
493
+ return React.useContext(GoogleApiClientContext);
494
+ };
495
+ var withGoogleApiClient = function withGoogleApiClient(WrappedComponent) {
496
+ var getDisplayName = function getDisplayName(_ref) {
497
+ var _ref$displayName = _ref.displayName,
498
+ displayName = _ref$displayName === void 0 ? null : _ref$displayName,
499
+ _ref$name = _ref.name,
500
+ name = _ref$name === void 0 ? null : _ref$name;
501
+ return displayName || name || 'Component';
502
+ };
503
+ var WithGoogleApiClientComponent = function WithGoogleApiClientComponent(props) {
504
+ return /*#__PURE__*/React.createElement(GoogleApiClientContext.Consumer, null, function (client) {
505
+ return /*#__PURE__*/React.createElement(WrappedComponent, Object.assign({
506
+ googleApiClient: client
507
+ }, props));
508
+ });
509
+ };
510
+ WithGoogleApiClientComponent.displayName = "WithGoogleApiClient(".concat(getDisplayName(WrappedComponent), ")");
511
+ return WithGoogleApiClientComponent;
512
+ };
513
+ function GoogleApiClientProvider(_ref2) {
514
+ var children = _ref2.children;
515
+ var _useGoogleKeys = useGoogleKeys(),
516
+ apiKey = _useGoogleKeys.apiKey;
517
+ var _useState = React.useState(null),
518
+ _useState2 = _slicedToArray(_useState, 2),
519
+ client = _useState2[0],
520
+ setClient = _useState2[1];
521
+ React.useEffect(function () {
522
+ services.loadGoogleApi().then(function (gapi) {
523
+ return gapi.client.init({
524
+ apiKey: apiKey
525
+ }).then(function () {
526
+ return gapi;
527
+ });
528
+ }).then(function (gapi) {
529
+ return setClient(gapi);
530
+ });
531
+ }, [apiKey, setClient]);
532
+ return /*#__PURE__*/React.createElement(GoogleApiClientContext.Provider, {
533
+ value: client
534
+ }, children);
535
+ }
536
+
537
+ var GoogleMapsClientContext = /*#__PURE__*/React.createContext(null);
538
+ var useGoogleMapsClient = function useGoogleMapsClient() {
539
+ return React.useContext(GoogleMapsClientContext);
540
+ };
541
+ var withGoogleMapsClient = function withGoogleMapsClient(WrappedComponent) {
542
+ var getDisplayName = function getDisplayName(_ref) {
543
+ var _ref$displayName = _ref.displayName,
544
+ displayName = _ref$displayName === void 0 ? null : _ref$displayName,
545
+ _ref$name = _ref.name,
546
+ name = _ref$name === void 0 ? null : _ref$name;
547
+ return displayName || name || 'Component';
548
+ };
549
+ var WithGoogleMapsClientComponent = function WithGoogleMapsClientComponent(props) {
550
+ return /*#__PURE__*/React.createElement(GoogleMapsClientContext.Consumer, null, function (client) {
551
+ return /*#__PURE__*/React.createElement(WrappedComponent, Object.assign({
552
+ googleApiClient: client
553
+ }, props));
554
+ });
555
+ };
556
+ WithGoogleMapsClientComponent.displayName = "WithGoogleMapsClient(".concat(getDisplayName(WrappedComponent), ")");
557
+ return WithGoogleMapsClientComponent;
558
+ };
559
+ function GoogleMapsClientProvider(_ref2) {
560
+ var children = _ref2.children,
561
+ _ref2$locale = _ref2.locale,
562
+ locale = _ref2$locale === void 0 ? 'fr' : _ref2$locale,
563
+ _ref2$libraries = _ref2.libraries,
564
+ libraries = _ref2$libraries === void 0 ? null : _ref2$libraries;
565
+ var _useGoogleKeys = useGoogleKeys(),
566
+ apiKey = _useGoogleKeys.apiKey;
567
+ var exisitingClient = useGoogleMapsClient();
568
+ var _useState = React.useState(exisitingClient),
569
+ _useState2 = _slicedToArray(_useState, 2),
570
+ client = _useState2[0],
571
+ setClient = _useState2[1];
572
+ React.useEffect(function () {
573
+ if (exisitingClient === null) {
574
+ services.loadGoogleMaps({
575
+ apiKey: apiKey,
576
+ locale: locale,
577
+ libraries: libraries
578
+ }).then(function (newClient) {
579
+ setClient(newClient);
580
+ });
581
+ }
582
+ }, [apiKey, locale, libraries, setClient, exisitingClient]);
583
+ return /*#__PURE__*/React.createElement(GoogleMapsClientContext.Provider, {
584
+ value: client
585
+ }, children);
586
+ }
587
+
588
+ /* eslint-disable react/jsx-props-no-spreading */
589
+ var defaultLocales = ['en', 'fr'];
590
+ var LocalesContext = /*#__PURE__*/React.createContext({
591
+ locales: defaultLocales
592
+ });
593
+ var useLocalesContext = function useLocalesContext() {
594
+ var context = React.useContext(LocalesContext);
595
+ return context;
596
+ };
597
+ var useLocales = function useLocales() {
598
+ var _useLocalesContext = useLocalesContext(),
599
+ locales = _useLocalesContext.locales;
600
+ return locales;
601
+ };
602
+ var useOtherLocales = function useOtherLocales() {
603
+ var _useLocalesContext2 = useLocalesContext(),
604
+ locales = _useLocalesContext2.locales;
605
+ var _useIntl = reactIntl.useIntl(),
606
+ locale = _useIntl.locale;
607
+ var otherLocales = React.useMemo(function () {
608
+ return locales.filter(function (it) {
609
+ return it !== locale;
610
+ });
611
+ }, [locales, locale]);
612
+ return otherLocales;
613
+ };
614
+ var DEFAULT_LOCALES = [];
615
+ function LocalesProvider(_ref) {
616
+ var _ref$locales = _ref.locales,
617
+ locales = _ref$locales === void 0 ? DEFAULT_LOCALES : _ref$locales,
618
+ children = _ref.children;
619
+ var value = React.useMemo(function () {
620
+ return {
621
+ locales: locales
622
+ };
623
+ }, [locales]);
624
+ return /*#__PURE__*/React.createElement(LocalesContext.Provider, {
625
+ value: value
626
+ }, children);
627
+ }
628
+
629
+ var ModalContext = /*#__PURE__*/React.createContext(null);
630
+ var useModal = function useModal() {
631
+ return React.useContext(ModalContext) || {};
632
+ };
633
+ var DEFAULT_MODALS = [];
634
+ function ModalProvider(_ref) {
635
+ var children = _ref.children,
636
+ _ref$container = _ref.container,
637
+ initialContainer = _ref$container === void 0 ? null : _ref$container;
638
+ var _useState = React.useState(initialContainer),
639
+ _useState2 = _slicedToArray(_useState, 2),
640
+ container = _useState2[0],
641
+ setContainer = _useState2[1];
642
+ var _useState3 = React.useState(DEFAULT_MODALS),
643
+ _useState4 = _slicedToArray(_useState3, 2),
644
+ modals = _useState4[0],
645
+ setModals = _useState4[1];
646
+ var modalsRef = React.useRef(modals);
647
+ var register = React.useCallback(function (id) {
648
+ var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
649
+ var _modalsRef$current = modalsRef.current,
650
+ currentModals = _modalsRef$current === void 0 ? [] : _modalsRef$current;
651
+ var newModals = [].concat(_toConsumableArray(currentModals), [_objectSpread({
652
+ id: id
653
+ }, data)]);
654
+ setModals(newModals);
655
+ modalsRef.current = newModals;
656
+ }, [setModals]);
657
+ var unregister = React.useCallback(function () {
658
+ var id = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
659
+ var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
660
+ var _modalsRef$current2 = modalsRef.current,
661
+ currentModals = _modalsRef$current2 === void 0 ? [] : _modalsRef$current2;
662
+ var foundIndex = currentModals.findIndex(function (_ref2) {
663
+ var modalId = _ref2.id;
664
+ return modalId === id;
665
+ });
666
+ if (foundIndex !== -1) {
667
+ var _ref3 = data || {},
668
+ _ref3$onClose = _ref3.onClose,
669
+ onClose = _ref3$onClose === void 0 ? null : _ref3$onClose;
670
+ if (onClose !== null) {
671
+ onClose();
672
+ }
673
+ var newModals = currentModals.filter(function (_ref4) {
674
+ var modalId = _ref4.id;
675
+ return modalId !== id;
676
+ });
677
+ setModals(newModals);
678
+ modalsRef.current = newModals;
679
+ }
680
+ }, [setModals]);
681
+ var closeLastModal = React.useCallback(function () {
682
+ var lastModal = modals.pop() || null;
683
+ if (lastModal !== null) {
684
+ var _ref5 = lastModal || {},
685
+ _ref5$id = _ref5.id,
686
+ lastModalId = _ref5$id === void 0 ? null : _ref5$id,
687
+ _ref5$onClose = _ref5.onClose,
688
+ onClose = _ref5$onClose === void 0 ? null : _ref5$onClose;
689
+ if (onClose !== null) {
690
+ onClose();
691
+ }
692
+ var newModals = modals.filter(function (_ref6) {
693
+ var modalId = _ref6.id;
694
+ return modalId !== lastModalId;
695
+ });
696
+ setModals(newModals);
697
+ modalsRef.current = newModals;
698
+ }
699
+ }, [modals, setModals]);
700
+ var getModalById = React.useCallback(function (modalId) {
701
+ return (modals || []).find(function (modal) {
702
+ return (modal === null || modal === void 0 ? void 0 : modal.id) === modalId;
703
+ }) || null;
704
+ }, [modals]);
705
+ var value = React.useMemo(function () {
706
+ return {
707
+ modals: modals,
708
+ container: container,
709
+ setContainer: setContainer,
710
+ register: register,
711
+ unregister: unregister,
712
+ closeLastModal: closeLastModal,
713
+ getModalById: getModalById
714
+ };
715
+ }, [modals, container, setContainer, register, unregister, closeLastModal, getModalById]);
716
+ return /*#__PURE__*/React.createElement(ModalContext.Provider, {
717
+ value: value
718
+ }, children);
719
+ }
720
+
721
+ var PanelsContext = /*#__PURE__*/React.createContext({
722
+ panels: [],
723
+ container: null,
724
+ setContainer: function setContainer() {},
725
+ register: function register() {},
726
+ unregister: function unregister() {}
727
+ });
728
+ var usePanels = function usePanels() {
729
+ return React.useContext(PanelsContext) || {};
730
+ };
731
+ var withPanels = function withPanels(WrappedComponent) {
732
+ var WithPanelsComponent = function WithPanelsComponent(props) {
733
+ return /*#__PURE__*/React.createElement(PanelsContext.Consumer, null, function (_ref) {
734
+ var panels = _ref.panels,
735
+ setContainer = _ref.setContainer,
736
+ container = _ref.container,
737
+ register = _ref.register,
738
+ unregister = _ref.unregister;
739
+ return /*#__PURE__*/React.createElement(WrappedComponent, Object.assign({
740
+ panelsContainer: container,
741
+ setPanelsContainer: setContainer,
742
+ panels: panels,
743
+ registerPanel: register,
744
+ unregisterPanel: unregister
745
+ }, props));
746
+ });
747
+ };
748
+ WithPanelsComponent.displayName = "WithPanels(".concat(utils.getDisplayName(WrappedComponent), ")");
749
+ return WithPanelsComponent;
750
+ };
751
+ function PanelsProvider(_ref2) {
752
+ var children = _ref2.children,
753
+ _ref2$container = _ref2.container,
754
+ initialContainer = _ref2$container === void 0 ? null : _ref2$container;
755
+ var _useState = React.useState(initialContainer),
756
+ _useState2 = _slicedToArray(_useState, 2),
757
+ container = _useState2[0],
758
+ setContainer = _useState2[1];
759
+ var _useState3 = React.useState([]),
760
+ _useState4 = _slicedToArray(_useState3, 2),
761
+ panels = _useState4[0],
762
+ setPanels = _useState4[1];
763
+ var panelsRef = React.useRef(panels);
764
+ var register = React.useCallback(function (id) {
765
+ var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
766
+ var currentPanels = panelsRef.current;
767
+ var newPanels = [].concat(_toConsumableArray(currentPanels), [_objectSpread({
768
+ id: id
769
+ }, data)]);
770
+ setPanels(newPanels);
771
+ panelsRef.current = newPanels;
772
+ }, [panels, setPanels]);
773
+ var unregister = React.useCallback(function (id) {
774
+ var currentPanels = panelsRef.current;
775
+ var foundIndex = currentPanels.findIndex(function (_ref3) {
776
+ var modalId = _ref3.id;
777
+ return modalId === id;
778
+ });
779
+ if (foundIndex !== -1) {
780
+ var newPanels = currentPanels.filter(function (_ref4) {
781
+ var modalId = _ref4.id;
782
+ return modalId !== id;
783
+ });
784
+ setPanels(newPanels);
785
+ panelsRef.current = newPanels;
786
+ }
787
+ }, [panels, setPanels]);
788
+ var value = React.useMemo(function () {
789
+ return {
790
+ panels: panels,
791
+ setContainer: setContainer,
792
+ container: container,
793
+ register: register,
794
+ unregister: unregister
795
+ };
796
+ }, [panels, setContainer, container, register, unregister]);
797
+ return /*#__PURE__*/React.createElement(PanelsContext.Provider, {
798
+ value: value
799
+ }, children);
800
+ }
801
+
802
+ var _excluded = ["component"];
803
+ var PanneauContext = /*#__PURE__*/React.createContext(null);
804
+ var usePanneau = function usePanneau() {
805
+ return React.useContext(PanneauContext);
806
+ };
807
+ var DEFAULT_RESOURCES = [];
808
+ var usePanneauResources = function usePanneauResources() {
809
+ var _ref = usePanneau() || {},
810
+ _ref$resources = _ref.resources,
811
+ resources = _ref$resources === void 0 ? DEFAULT_RESOURCES : _ref$resources;
812
+ return resources;
813
+ };
814
+ var usePanneauResource = function usePanneauResource(id) {
815
+ var resources = usePanneauResources();
816
+ return resources.find(function (it) {
817
+ return it.id === id;
818
+ }) || null;
819
+ };
820
+ var usePanneauColorScheme = function usePanneauColorScheme() {
821
+ var _ref2 = usePanneau() || {},
822
+ _ref2$theme = _ref2.theme,
823
+ theme = _ref2$theme === void 0 ? {} : _ref2$theme;
824
+ var _ref3 = theme || {},
825
+ _ref3$colorScheme = _ref3.colorScheme,
826
+ colorScheme = _ref3$colorScheme === void 0 ? 'light' : _ref3$colorScheme;
827
+ if (colorScheme === null || colorScheme === 'light' || colorScheme === 'dark') {
828
+ return colorScheme === 'dark' ? {
829
+ theme: 'dark',
830
+ background: 'dark',
831
+ text: 'light'
832
+ } : {
833
+ theme: 'light',
834
+ background: 'light',
835
+ text: 'dark'
836
+ };
837
+ }
838
+ return {
839
+ theme: colorScheme,
840
+ background: null,
841
+ text: null
842
+ };
843
+ };
844
+ var DEFAULT_COMPONENTS = {};
845
+ var usePanneauComponents = function usePanneauComponents() {
846
+ var _ref4 = usePanneau() || {},
847
+ _ref4$components = _ref4.components,
848
+ components = _ref4$components === void 0 ? DEFAULT_COMPONENTS : _ref4$components;
849
+ return components;
850
+ };
851
+ var usePanneauComponent = function usePanneauComponent(namespace, name) {
852
+ var _ref5 = usePanneau() || {},
853
+ _ref5$components = _ref5.components,
854
+ components = _ref5$components === void 0 ? {} : _ref5$components;
855
+ var path = namespace !== null ? "".concat(namespace, ".").concat(name) : name || null;
856
+ var component = components[path] || null;
857
+ if (isString(component)) {
858
+ return component;
859
+ }
860
+ if (isObject(component) && isString(component === null || component === void 0 ? void 0 : component.componnent)) {
861
+ // eslint-disable-next-line no-unused-vars
862
+ component.component;
863
+ _objectWithoutProperties(component, _excluded);
864
+ return component.component;
865
+ }
866
+ return null;
867
+ };
868
+ var usePanneauAuth = function usePanneauAuth() {
869
+ var _ref6 = usePanneau() || {},
870
+ _ref6$auth = _ref6.auth,
871
+ auth = _ref6$auth === void 0 ? {} : _ref6$auth;
872
+ return auth;
873
+ };
874
+ var usePanneauSettings = function usePanneauSettings() {
875
+ var _ref7 = usePanneau() || {},
876
+ _ref7$settings = _ref7.settings,
877
+ settings = _ref7$settings === void 0 ? {} : _ref7$settings;
878
+ return settings;
879
+ };
880
+ function PanneauProvider(_ref8) {
881
+ var definition = _ref8.definition,
882
+ children = _ref8.children;
883
+ return /*#__PURE__*/React.createElement(PanneauContext.Provider, {
884
+ value: definition
885
+ }, children);
886
+ }
887
+
888
+ /* eslint-disable react/jsx-props-no-spreading */
889
+ var ResourceContext = /*#__PURE__*/React.createContext(null);
890
+ var useResource = function useResource() {
891
+ return React.useContext(ResourceContext);
892
+ };
893
+ function ResourceProvider(_ref) {
894
+ var resource = _ref.resource,
895
+ children = _ref.children;
896
+ return /*#__PURE__*/React.createElement(ResourceContext.Provider, {
897
+ value: resource
898
+ }, children);
899
+ }
900
+
901
+ // React.useInsertionEffect is not available in React <18
902
+ // This hack fixes a transpilation issue on some apps
903
+ var useBuiltinInsertionEffect = React__namespace["useInsertion" + "Effect"];
904
+
905
+ // Copied from:
906
+ // https://github.com/facebook/react/blob/main/packages/shared/ExecutionEnvironment.js
907
+ var canUseDOM = !!(typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined");
908
+
909
+ // Copied from:
910
+ // https://github.com/reduxjs/react-redux/blob/master/src/utils/useIsomorphicLayoutEffect.ts
911
+ // "React currently throws a warning when using useLayoutEffect on the server.
912
+ // To get around it, we can conditionally useEffect on the server (no-op) and
913
+ // useLayoutEffect in the browser."
914
+ var useIsomorphicLayoutEffect = canUseDOM ? React__namespace.useLayoutEffect : React__namespace.useEffect;
915
+
916
+ // useInsertionEffect is already a noop on the server.
917
+ // See: https://github.com/facebook/react/blob/main/packages/react-server/src/ReactFizzHooks.js
918
+ var useInsertionEffect = useBuiltinInsertionEffect || useIsomorphicLayoutEffect;
919
+
920
+ // Userland polyfill while we wait for the forthcoming
921
+ // https://github.com/reactjs/rfcs/blob/useevent/text/0000-useevent.md
922
+ // Note: "A high-fidelity polyfill for useEvent is not possible because
923
+ // there is no lifecycle or Hook in React that we can use to switch
924
+ // .current at the right timing."
925
+ // So we will have to make do with this "close enough" approach for now.
926
+ var useEvent = function useEvent(fn) {
927
+ var ref = React__namespace.useRef([fn, function () {
928
+ return ref[0].apply(ref, arguments);
929
+ }]).current;
930
+ // Per Dan Abramov: useInsertionEffect executes marginally closer to the
931
+ // correct timing for ref synchronization than useLayoutEffect on React 18.
932
+ // See: https://github.com/facebook/react/pull/25881#issuecomment-1356244360
933
+ useInsertionEffect(function () {
934
+ ref[0] = fn;
935
+ });
936
+ return ref[1];
937
+ };
938
+
939
+ /**
940
+ * History API docs @see https://developer.mozilla.org/en-US/docs/Web/API/History
941
+ */
942
+ var eventPopstate = "popstate";
943
+ var eventPushState = "pushState";
944
+ var eventReplaceState = "replaceState";
945
+ var eventHashchange = "hashchange";
946
+ var events = [eventPopstate, eventPushState, eventReplaceState, eventHashchange];
947
+ var subscribeToLocationUpdates = function subscribeToLocationUpdates(callback) {
948
+ for (var _i = 0, _events = events; _i < _events.length; _i++) {
949
+ var event = _events[_i];
950
+ addEventListener(event, callback);
951
+ }
952
+ return function () {
953
+ for (var _i2 = 0, _events2 = events; _i2 < _events2.length; _i2++) {
954
+ var _event = _events2[_i2];
955
+ removeEventListener(_event, callback);
956
+ }
957
+ };
958
+ };
959
+ var useLocationProperty = function useLocationProperty(fn, ssrFn) {
960
+ return index_js.useSyncExternalStore(subscribeToLocationUpdates, fn, ssrFn);
961
+ };
962
+ var currentSearch = function currentSearch() {
963
+ return location.search;
964
+ };
965
+ var useSearch = function useSearch() {
966
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
967
+ _ref$ssrSearch = _ref.ssrSearch,
968
+ ssrSearch = _ref$ssrSearch === void 0 ? "" : _ref$ssrSearch;
969
+ return useLocationProperty(currentSearch, function () {
970
+ return ssrSearch;
971
+ });
972
+ };
973
+ var currentPathname = function currentPathname() {
974
+ return location.pathname;
975
+ };
976
+ var usePathname = function usePathname() {
977
+ var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
978
+ ssrPath = _ref2.ssrPath;
979
+ return useLocationProperty(currentPathname, ssrPath ? function () {
980
+ return ssrPath;
981
+ } : currentPathname);
982
+ };
983
+ var navigate = function navigate(to) {
984
+ var _ref3 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
985
+ _ref3$replace = _ref3.replace,
986
+ replace = _ref3$replace === void 0 ? false : _ref3$replace,
987
+ _ref3$state = _ref3.state,
988
+ state = _ref3$state === void 0 ? null : _ref3$state;
989
+ return history[replace ? eventReplaceState : eventPushState](state, "", to);
990
+ };
991
+
992
+ // the 2nd argument of the `useBrowserLocation` return value is a function
993
+ // that allows to perform a navigation.
994
+ var useBrowserLocation = function useBrowserLocation() {
995
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
996
+ return [usePathname(opts), navigate];
997
+ };
998
+ var patchKey = Symbol["for"]("wouter_v3");
999
+
1000
+ // While History API does have `popstate` event, the only
1001
+ // proper way to listen to changes via `push/replaceState`
1002
+ // is to monkey-patch these methods.
1003
+ //
1004
+ // See https://stackoverflow.com/a/4585031
1005
+ if (typeof history !== "undefined" && typeof window[patchKey] === "undefined") {
1006
+ var _loop = function _loop() {
1007
+ var type = _arr[_i3];
1008
+ var original = history[type];
1009
+ // TODO: we should be using unstable_batchedUpdates to avoid multiple re-renders,
1010
+ // however that will require an additional peer dependency on react-dom.
1011
+ // See: https://github.com/reactwg/react-18/discussions/86#discussioncomment-1567149
1012
+ history[type] = function () {
1013
+ var result = original.apply(this, arguments);
1014
+ var event = new Event(type);
1015
+ event.arguments = arguments;
1016
+ dispatchEvent(event);
1017
+ return result;
1018
+ };
1019
+ };
1020
+ for (var _i3 = 0, _arr = [eventPushState, eventReplaceState]; _i3 < _arr.length; _i3++) {
1021
+ _loop();
1022
+ }
1023
+
1024
+ // patch history object only once
1025
+ // See: https://github.com/molefrog/wouter/issues/167
1026
+ Object.defineProperty(window, patchKey, {
1027
+ value: true
1028
+ });
1029
+ }
1030
+
1031
+ var _excluded3 = ["to", "href", "onClick", "asChild", "children", "className", "replace", "state"];
1032
+
1033
+ /*
1034
+ * Transforms `path` into its relative `base` version
1035
+ * If base isn't part of the path provided returns absolute path e.g. `~/app`
1036
+ */
1037
+ var _relativePath = function _relativePath(base, path) {
1038
+ return !path.toLowerCase().indexOf(base.toLowerCase()) ? path.slice(base.length) || "/" : "~" + path;
1039
+ };
1040
+
1041
+ /**
1042
+ * When basepath is `undefined` or '/' it is ignored (we assume it's empty string)
1043
+ */
1044
+ var baseDefaults = function baseDefaults() {
1045
+ var base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
1046
+ return base === "/" ? "" : base;
1047
+ };
1048
+ var absolutePath = function absolutePath(to, base) {
1049
+ return to[0] === "~" ? to.slice(1) : baseDefaults(base) + to;
1050
+ };
1051
+ var relativePath = function relativePath() {
1052
+ var base = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
1053
+ var path = arguments.length > 1 ? arguments[1] : undefined;
1054
+ return _relativePath(unescape(baseDefaults(base)), unescape(path));
1055
+ };
1056
+
1057
+ /*
1058
+ * decodes escape sequences such as %20
1059
+ */
1060
+ var unescape = function unescape(str) {
1061
+ try {
1062
+ return decodeURI(str);
1063
+ } catch (_e) {
1064
+ // fail-safe mode: if string can't be decoded do nothing
1065
+ return str;
1066
+ }
1067
+ };
1068
+
1069
+ /*
1070
+ * Router and router context. Router is a lightweight object that represents the current
1071
+ * routing options: how location is managed, base path etc.
1072
+ *
1073
+ * There is a default router present for most of the use cases, however it can be overridden
1074
+ * via the <Router /> component.
1075
+ */
1076
+
1077
+ var defaultRouter = {
1078
+ hook: useBrowserLocation,
1079
+ searchHook: useSearch,
1080
+ parser: regexparam.parse,
1081
+ base: "",
1082
+ // this option is used to override the current location during SSR
1083
+ ssrPath: undefined,
1084
+ ssrSearch: undefined,
1085
+ // optional context to track render state during SSR
1086
+ ssrContext: undefined,
1087
+ // customizes how `href` props are transformed for <Link />
1088
+ hrefs: function hrefs(x) {
1089
+ return x;
1090
+ }
1091
+ };
1092
+ var RouterCtx = React.createContext(defaultRouter);
1093
+
1094
+ // gets the closest parent router from the context
1095
+ var useRouter = function useRouter() {
1096
+ return React.useContext(RouterCtx);
1097
+ };
1098
+
1099
+ /**
1100
+ * Parameters context. Used by `useParams()` to get the
1101
+ * matched params from the innermost `Route` component.
1102
+ */
1103
+
1104
+ var Params0 = {};
1105
+ React.createContext(Params0);
1106
+
1107
+ /*
1108
+ * Part 1, Hooks API: useRoute and useLocation
1109
+ */
1110
+
1111
+ // Internal version of useLocation to avoid redundant useRouter calls
1112
+
1113
+ var useLocationFromRouter = function useLocationFromRouter(router) {
1114
+ var _router$hook = router.hook(router),
1115
+ _router$hook2 = _slicedToArray(_router$hook, 2),
1116
+ location = _router$hook2[0],
1117
+ navigate = _router$hook2[1];
1118
+
1119
+ // the function reference should stay the same between re-renders, so that
1120
+ // it can be passed down as an element prop without any performance concerns.
1121
+ // (This is achieved via `useEvent`.)
1122
+ return [relativePath(router.base, location), useEvent(function (to, navOpts) {
1123
+ return navigate(absolutePath(to, router.base), navOpts);
1124
+ })];
1125
+ };
1126
+ var useLocation = function useLocation() {
1127
+ return useLocationFromRouter(useRouter());
1128
+ };
1129
+ React.forwardRef(function (props, ref) {
1130
+ var router = useRouter();
1131
+ var _useLocationFromRoute3 = useLocationFromRouter(router),
1132
+ _useLocationFromRoute4 = _slicedToArray(_useLocationFromRoute3, 2),
1133
+ currentPath = _useLocationFromRoute4[0],
1134
+ navigate = _useLocationFromRoute4[1];
1135
+ var _props$to = props.to,
1136
+ to = _props$to === void 0 ? "" : _props$to,
1137
+ _props$href = props.href,
1138
+ targetPath = _props$href === void 0 ? to : _props$href,
1139
+ _onClick = props.onClick,
1140
+ asChild = props.asChild,
1141
+ children = props.children,
1142
+ cls = props.className;
1143
+ props.replace;
1144
+ props.state;
1145
+ var restProps = _objectWithoutProperties(props, _excluded3);
1146
+ var onClick = useEvent(function (event) {
1147
+ // ignores the navigation when clicked using right mouse button or
1148
+ // by holding a special modifier key: ctrl, command, win, alt, shift
1149
+ if (event.ctrlKey || event.metaKey || event.altKey || event.shiftKey || event.button !== 0) return;
1150
+ _onClick === null || _onClick === void 0 || _onClick(event);
1151
+ if (!event.defaultPrevented) {
1152
+ event.preventDefault();
1153
+ navigate(targetPath, props);
1154
+ }
1155
+ });
1156
+
1157
+ // handle nested routers and absolute paths
1158
+ var href = router.hrefs(targetPath[0] === "~" ? targetPath.slice(1) : router.base + targetPath, router // pass router as a second argument for convinience
1159
+ );
1160
+ return asChild && React.isValidElement(children) ? React.cloneElement(children, {
1161
+ onClick: onClick,
1162
+ href: href
1163
+ }) : React.createElement("a", _objectSpread(_objectSpread({}, restProps), {}, {
1164
+ onClick: onClick,
1165
+ href: href,
1166
+ // `className` can be a function to apply the class if this link is active
1167
+ className: cls !== null && cls !== void 0 && cls.call ? cls(currentPath === targetPath) : cls,
1168
+ children: children,
1169
+ ref: ref
1170
+ }));
1171
+ });
1172
+
1173
+ /* eslint-disable react/jsx-props-no-spreading */
1174
+ var RoutesContext = /*#__PURE__*/React.createContext(null);
1175
+ var useRoutesContext = function useRoutesContext() {
1176
+ return React.useContext(RoutesContext);
1177
+ };
1178
+ var propTypes$1 = {
1179
+ children: PropTypes.node.isRequired,
1180
+ routes: PropTypes.objectOf(PropTypes.string).isRequired,
1181
+ basePath: PropTypes.string
1182
+ };
1183
+ var defaultProps = {
1184
+ basePath: null
1185
+ };
1186
+ function RoutesProvider(_ref) {
1187
+ var routes = _ref.routes,
1188
+ basePath = _ref.basePath,
1189
+ children = _ref.children;
1190
+ var value = React.useMemo(function () {
1191
+ return {
1192
+ routes: routes,
1193
+ basePath: basePath
1194
+ };
1195
+ }, [routes, basePath]);
1196
+ return /*#__PURE__*/jsxRuntime.jsx(RoutesContext.Provider, {
1197
+ value: value,
1198
+ children: children
1199
+ });
1200
+ }
1201
+ RoutesProvider.propTypes = propTypes$1;
1202
+ RoutesProvider.defaultProps = defaultProps;
1203
+ var compilers = {};
1204
+ function generatePath(fullPath, data) {
1205
+ var opts = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
1206
+ var fullUrlMatches = fullPath.match(/^(https?:\/\/)/);
1207
+ if (typeof compilers[fullPath] === 'undefined') {
1208
+ compilers[fullPath] = pathToRegexp.compile(fullPath.replace(/^(https?:\/\/)/, ''), opts);
1209
+ }
1210
+ var compiler = compilers[fullPath];
1211
+ return fullUrlMatches !== null ? "".concat(fullUrlMatches[1]).concat(compiler(data)) : compiler(data);
1212
+ }
1213
+ var useUrlGeneratorPathToRepexp = function useUrlGeneratorPathToRepexp() {
1214
+ var _ref2 = useRoutesContext() || {},
1215
+ _ref2$routes = _ref2.routes,
1216
+ routes = _ref2$routes === void 0 ? null : _ref2$routes,
1217
+ _ref2$basePath = _ref2.basePath,
1218
+ basePath = _ref2$basePath === void 0 ? null : _ref2$basePath;
1219
+ var urlGenerator = React.useCallback(function (key, data, opts) {
1220
+ var path = routes !== null ? routes[key] || null : null;
1221
+ if (path === null) {
1222
+ return null;
1223
+ }
1224
+ var url = generatePath(path, data, opts);
1225
+ return basePath !== null ? "".concat(basePath.replace(/\/$/, ''), "/").concat(url.replace(/^\//, '')) : url;
1226
+ }, [routes, basePath]);
1227
+ return urlGenerator;
1228
+ };
1229
+ var useRoutes = function useRoutes() {
1230
+ var _useRoutesContext = useRoutesContext(),
1231
+ routes = _useRoutesContext.routes;
1232
+ return routes;
1233
+ };
1234
+ ({
1235
+ location: PropTypes.string.isRequired,
1236
+ search: PropTypes.string,
1237
+ children: PropTypes.node.isRequired
1238
+ });
1239
+
1240
+ var useRoutePush = function useRoutePush() {
1241
+ var url = useUrlGeneratorPathToRepexp();
1242
+ var _useLocation = useLocation(),
1243
+ _useLocation2 = _slicedToArray(_useLocation, 2),
1244
+ navigate = _useLocation2[1];
1245
+ var push = React.useCallback(function (route, data) {
1246
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
1247
+ args[_key - 2] = arguments[_key];
1248
+ }
1249
+ if (isString(route)) {
1250
+ navigate.apply(void 0, [url(route, data)].concat(args));
1251
+ } else {
1252
+ var _ref = route || {},
1253
+ _ref$pathname = _ref.pathname,
1254
+ pathname = _ref$pathname === void 0 ? null : _ref$pathname,
1255
+ _ref$search = _ref.search,
1256
+ search = _ref$search === void 0 ? null : _ref$search;
1257
+ navigate.apply(void 0, ["".concat(url(pathname, data)).concat(search !== null ? "?".concat(search) : '')].concat(args));
1258
+ }
1259
+ }, [navigate, url]);
1260
+ return push;
1261
+ };
1262
+ var useRouteBack = function useRouteBack() {
1263
+ var url = useUrlGeneratorPathToRepexp();
1264
+ var _useLocation3 = useLocation(),
1265
+ _useLocation4 = _slicedToArray(_useLocation3, 2),
1266
+ navigate = _useLocation4[1];
1267
+ var back = React.useCallback(function () {
1268
+ return navigate(-1);
1269
+ }, [navigate, url]);
1270
+ return back;
1271
+ };
1272
+
1273
+ /* eslint-disable react/jsx-props-no-spreading */
1274
+ var useTracking = function useTracking() {
1275
+ return React.useContext(tracking.TrackingContext);
1276
+ };
1277
+ function TrackingProvider(_ref) {
1278
+ var _ref$variables = _ref.variables,
1279
+ variables = _ref$variables === void 0 ? null : _ref$variables,
1280
+ children = _ref.children;
1281
+ var contextTracking = useTracking() || null;
1282
+ var tracking$1 = React.useMemo(function () {
1283
+ if (contextTracking !== null) {
1284
+ contextTracking.setVariables(variables);
1285
+ return contextTracking;
1286
+ }
1287
+ return new core.Tracking({
1288
+ variables: variables
1289
+ });
1290
+ }, [contextTracking, variables]);
1291
+ return /*#__PURE__*/React.createElement(tracking.TrackingContainer, {
1292
+ tracking: tracking$1
1293
+ }, children);
1294
+ }
1295
+
1296
+ Object.defineProperty(exports, "TrackingContext", {
1297
+ enumerable: true,
1298
+ get: function () { return tracking.TrackingContext; }
1299
+ });
1300
+ exports.ACTIONS_NAMESPACE = ACTIONS_NAMESPACE;
1301
+ exports.APP_NAMESPACE = APP_NAMESPACE;
1302
+ exports.BUTTONS_NAMESPACE = BUTTONS_NAMESPACE;
1303
+ exports.ComponentsContext = ComponentsContext;
1304
+ exports.ComponentsProvider = ComponentsProvider;
1305
+ exports.DISPLAYS_NAMESPACE = DISPLAYS_NAMESPACE;
1306
+ exports.DefinitionProvider = DefinitionProvider;
1307
+ exports.FIELDS_NAMESPACE = FIELDS_NAMESPACE;
1308
+ exports.FILTERS_NAMESPACE = FILTERS_NAMESPACE;
1309
+ exports.FORMS_NAMESPACE = FORMS_NAMESPACE;
1310
+ exports.FieldsContext = FieldsContext;
1311
+ exports.FieldsProvider = FieldsProvider;
1312
+ exports.FontsContext = FontsContext;
1313
+ exports.FontsProvider = FontsProvider;
1314
+ exports.FormProvider = FormProvider;
1315
+ exports.GoogleApiClientContext = GoogleApiClientContext;
1316
+ exports.GoogleApiClientProvider = GoogleApiClientProvider;
1317
+ exports.GoogleKeysContext = GoogleKeysContext;
1318
+ exports.GoogleKeysProvider = GoogleKeysProvider;
1319
+ exports.GoogleMapsClientContext = GoogleMapsClientContext;
1320
+ exports.GoogleMapsClientProvider = GoogleMapsClientProvider;
1321
+ exports.LISTS_NAMESPACE = LISTS_NAMESPACE;
1322
+ exports.LocalesContext = LocalesContext;
1323
+ exports.LocalesProvider = LocalesProvider;
1324
+ exports.MODALS_NAMESPACE = MODALS_NAMESPACE;
1325
+ exports.ModalContext = ModalContext;
1326
+ exports.ModalProvider = ModalProvider;
1327
+ exports.PAGES_NAMESPACE = PAGES_NAMESPACE;
1328
+ exports.PREVIEWS_NAMESPACE = PREVIEWS_NAMESPACE;
1329
+ exports.PanelsContext = PanelsContext;
1330
+ exports.PanelsProvider = PanelsProvider;
1331
+ exports.PanneauProvider = PanneauProvider;
1332
+ exports.ResourceProvider = ResourceProvider;
1333
+ exports.RoutesContext = RoutesContext;
1334
+ exports.RoutesProvider = RoutesProvider;
1335
+ exports.TrackingProvider = TrackingProvider;
1336
+ exports.useActionComponent = useActionComponent;
1337
+ exports.useActionsComponents = useActionsComponents;
1338
+ exports.useActionsComponentsManager = useActionsComponentsManager;
1339
+ exports.useAppComponent = useAppComponent;
1340
+ exports.useAppComponents = useAppComponents;
1341
+ exports.useAppComponentsManager = useAppComponentsManager;
1342
+ exports.useButtonComponent = useButtonComponent;
1343
+ exports.useButtonsComponents = useButtonsComponents;
1344
+ exports.useButtonsComponentsManager = useButtonsComponentsManager;
1345
+ exports.useComponent = useComponent;
1346
+ exports.useComponents = useComponents;
1347
+ exports.useComponentsManager = useComponentsManager;
1348
+ exports.useDefinition = useDefinition;
1349
+ exports.useDefinitionContext = useDefinitionContext;
1350
+ exports.useDisplayComponent = useDisplayComponent;
1351
+ exports.useDisplaysComponents = useDisplaysComponents;
1352
+ exports.useDisplaysComponentsManager = useDisplaysComponentsManager;
1353
+ exports.useField = useField;
1354
+ exports.useFieldComponent = useFieldComponent;
1355
+ exports.useFields = useFields;
1356
+ exports.useFieldsComponents = useFieldsComponents;
1357
+ exports.useFieldsComponentsManager = useFieldsComponentsManager;
1358
+ exports.useFieldsManager = useFieldsManager;
1359
+ exports.useFilterComponent = useFilterComponent;
1360
+ exports.useFiltersComponents = useFiltersComponents;
1361
+ exports.useFiltersComponentsManager = useFiltersComponentsManager;
1362
+ exports.useFonts = useFonts;
1363
+ exports.useForm = useForm;
1364
+ exports.useFormComponent = useFormComponent;
1365
+ exports.useFormSetValue = useFormSetValue;
1366
+ exports.useFormValue = useFormValue;
1367
+ exports.useFormsComponents = useFormsComponents;
1368
+ exports.useFormsComponentsManager = useFormsComponentsManager;
1369
+ exports.useGoogleApiClient = useGoogleApiClient;
1370
+ exports.useGoogleFonts = useGoogleFonts;
1371
+ exports.useGoogleKeys = useGoogleKeys;
1372
+ exports.useGoogleMapsClient = useGoogleMapsClient;
1373
+ exports.useListComponent = useListComponent;
1374
+ exports.useListsComponents = useListsComponents;
1375
+ exports.useListsComponentsManager = useListsComponentsManager;
1376
+ exports.useLocales = useLocales;
1377
+ exports.useLocalesContext = useLocalesContext;
1378
+ exports.useModal = useModal;
1379
+ exports.useModalComponent = useModalComponent;
1380
+ exports.useModalsComponents = useModalsComponents;
1381
+ exports.useModalsComponentsManager = useModalsComponentsManager;
1382
+ exports.useOtherLocales = useOtherLocales;
1383
+ exports.usePageComponent = usePageComponent;
1384
+ exports.usePagesComponents = usePagesComponents;
1385
+ exports.usePagesComponentsManager = usePagesComponentsManager;
1386
+ exports.usePanels = usePanels;
1387
+ exports.usePanneau = usePanneau;
1388
+ exports.usePanneauAuth = usePanneauAuth;
1389
+ exports.usePanneauColorScheme = usePanneauColorScheme;
1390
+ exports.usePanneauComponent = usePanneauComponent;
1391
+ exports.usePanneauComponents = usePanneauComponents;
1392
+ exports.usePanneauResource = usePanneauResource;
1393
+ exports.usePanneauResources = usePanneauResources;
1394
+ exports.usePanneauSettings = usePanneauSettings;
1395
+ exports.usePreviewComponent = usePreviewComponent;
1396
+ exports.usePreviewsComponents = usePreviewsComponents;
1397
+ exports.usePreviewsComponentsManager = usePreviewsComponentsManager;
1398
+ exports.useResource = useResource;
1399
+ exports.useRouteBack = useRouteBack;
1400
+ exports.useRoutePush = useRoutePush;
1401
+ exports.useRoutes = useRoutes;
1402
+ exports.useTracking = useTracking;
1403
+ exports.useUrlGenerator = useUrlGeneratorPathToRepexp;
1404
+ exports.withGoogleApiClient = withGoogleApiClient;
1405
+ exports.withGoogleMapsClient = withGoogleMapsClient;
1406
+ exports.withPanels = withPanels;