@panneau/core 1.0.1-alpha.0 → 1.0.3-alpha.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.
Files changed (80) hide show
  1. package/contexts.js +1 -1
  2. package/es/contexts.js +1740 -0
  3. package/es/hooks.js +1116 -0
  4. package/es/index.js +991 -9
  5. package/es/utils.js +329 -1
  6. package/hooks.js +1 -0
  7. package/lib/contexts.js +1871 -0
  8. package/lib/hooks.js +1167 -0
  9. package/lib/index.js +1003 -44
  10. package/lib/utils.js +371 -12
  11. package/package.json +79 -49
  12. package/utils.js +1 -1
  13. package/components.js +0 -1
  14. package/es/components/Button.js +0 -157
  15. package/es/components/ButtonGroup.js +0 -87
  16. package/es/components/Errors.js +0 -33
  17. package/es/components/Label.js +0 -32
  18. package/es/components/Loading.js +0 -56
  19. package/es/components/index.js +0 -6
  20. package/es/contexts/Components.js +0 -52
  21. package/es/contexts/Definition.js +0 -21
  22. package/es/contexts/UrlGenerator.js +0 -33
  23. package/es/contexts/index.js +0 -3
  24. package/es/lib/ComponentsCollection.js +0 -107
  25. package/es/lib/Definition.js +0 -134
  26. package/es/lib/PropTypes.js +0 -75
  27. package/es/lib/Resource.js +0 -93
  28. package/es/lib/ResourceApi.js +0 -139
  29. package/es/lib/UrlGenerator.js +0 -66
  30. package/es/lib/requests.js +0 -165
  31. package/es/lib/useResourceApi.js +0 -19
  32. package/es/lib/utils.js +0 -19
  33. package/es/requests.js +0 -1
  34. package/lib/components/Button.js +0 -182
  35. package/lib/components/ButtonGroup.js +0 -104
  36. package/lib/components/Errors.js +0 -49
  37. package/lib/components/Label.js +0 -47
  38. package/lib/components/Loading.js +0 -70
  39. package/lib/components/index.js +0 -47
  40. package/lib/contexts/Components.js +0 -78
  41. package/lib/contexts/Definition.js +0 -45
  42. package/lib/contexts/UrlGenerator.js +0 -53
  43. package/lib/contexts/index.js +0 -73
  44. package/lib/lib/ComponentsCollection.js +0 -117
  45. package/lib/lib/Definition.js +0 -145
  46. package/lib/lib/PropTypes.js +0 -152
  47. package/lib/lib/Resource.js +0 -104
  48. package/lib/lib/ResourceApi.js +0 -154
  49. package/lib/lib/UrlGenerator.js +0 -76
  50. package/lib/lib/requests.js +0 -206
  51. package/lib/lib/useResourceApi.js +0 -33
  52. package/lib/lib/utils.js +0 -35
  53. package/lib/requests.js +0 -17
  54. package/requests.js +0 -1
  55. package/src/components/Button.jsx +0 -186
  56. package/src/components/ButtonGroup.jsx +0 -98
  57. package/src/components/Errors.jsx +0 -46
  58. package/src/components/Label.jsx +0 -32
  59. package/src/components/Loading.jsx +0 -51
  60. package/src/components/index.js +0 -7
  61. package/src/contexts/Components.jsx +0 -49
  62. package/src/contexts/Definition.jsx +0 -21
  63. package/src/contexts/UrlGenerator.jsx +0 -35
  64. package/src/contexts/index.js +0 -12
  65. package/src/index.js +0 -8
  66. package/src/lib/ComponentsCollection.js +0 -81
  67. package/src/lib/Definition.js +0 -87
  68. package/src/lib/PropTypes.js +0 -117
  69. package/src/lib/Resource.js +0 -65
  70. package/src/lib/ResourceApi.js +0 -114
  71. package/src/lib/UrlGenerator.js +0 -55
  72. package/src/lib/requests.js +0 -120
  73. package/src/lib/useResourceApi.jsx +0 -20
  74. package/src/lib/utils.js +0 -13
  75. package/src/requests.js +0 -1
  76. package/src/styles/components/button-group.scss +0 -10
  77. package/src/styles/components/errors.scss +0 -5
  78. package/src/styles/components/loading.scss +0 -36
  79. package/src/styles/variables.scss +0 -5
  80. package/src/utils.js +0 -1
package/es/contexts.js ADDED
@@ -0,0 +1,1740 @@
1
+ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
+ import React, { useContext, useMemo, useState, useEffect, useRef, useCallback } from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import isString from 'lodash/isString';
5
+ import { ComponentsManager, PropTypes as PropTypes$1, FieldsManager, Tracking } from '@panneau/core';
6
+ import _defineProperty from '@babel/runtime/helpers/defineProperty';
7
+ import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
8
+ import uniqBy from 'lodash/uniqBy';
9
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
10
+ import isObject from 'lodash/isObject';
11
+ import { getJSON } from '@folklore/fetch';
12
+ import { loadGoogleApi, loadGoogleMaps } from '@folklore/services';
13
+ import { useIntl } from 'react-intl';
14
+ import { getDisplayName } from '@panneau/core/utils';
15
+ import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
16
+ import { generatePath, useNavigate } from 'react-router';
17
+ import { TrackingContext, TrackingContainer } from '@folklore/tracking';
18
+ export { TrackingContext } from '@folklore/tracking';
19
+ import { v1 } from 'uuid';
20
+
21
+ var MODALS_NAMESPACE = 'modals';
22
+ var FIELDS_NAMESPACE = 'fields';
23
+ var FORMS_NAMESPACE = 'forms';
24
+ var FILTERS_NAMESPACE = 'filters';
25
+ var LISTS_NAMESPACE = 'lists';
26
+ var DISPLAYS_NAMESPACE = 'displays';
27
+ var APP_NAMESPACE = 'app';
28
+ var ComponentsContext = /*#__PURE__*/React.createContext(null);
29
+ /**
30
+ * Hooks
31
+ */
32
+
33
+ var useComponentsManager = function useComponentsManager() {
34
+ var namespace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
35
+ var manager = useContext(ComponentsContext);
36
+ var finalManager = useMemo(function () {
37
+ return namespace !== null ? new ComponentsManager(manager.getComponents(namespace)) : manager;
38
+ }, [manager, namespace]);
39
+ return finalManager;
40
+ };
41
+ var useComponents = function useComponents() {
42
+ var namespace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
43
+ var defaultComponents = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
44
+ var manager = useComponentsManager();
45
+ return manager.getComponents(namespace) || defaultComponents;
46
+ };
47
+ var useComponent = function useComponent(name) {
48
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
49
+ var namespace = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
50
+
51
+ if (!isString(name)) {
52
+ return name || defaultComponent;
53
+ }
54
+
55
+ var manager = useComponentsManager(namespace);
56
+ return useMemo(function () {
57
+ return manager.getComponent(name) || defaultComponent;
58
+ }, [manager, name, defaultComponent]);
59
+ };
60
+ /**
61
+ * Fields hooks
62
+ */
63
+
64
+ var useFieldsComponentsManager = function useFieldsComponentsManager() {
65
+ return useComponentsManager(FIELDS_NAMESPACE);
66
+ };
67
+ var useFieldsComponents = function useFieldsComponents() {
68
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
69
+ return useComponents(FIELDS_NAMESPACE, defaultComponents);
70
+ };
71
+ var useFieldComponent = function useFieldComponent(name) {
72
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
73
+ return useComponent(name, defaultComponent, FIELDS_NAMESPACE);
74
+ };
75
+ /**
76
+ * Forms hooks
77
+ */
78
+
79
+ var useFormsComponentsManager = function useFormsComponentsManager() {
80
+ return useComponentsManager(FORMS_NAMESPACE);
81
+ };
82
+ var useFormsComponents = function useFormsComponents() {
83
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
84
+ return useComponents(FORMS_NAMESPACE, defaultComponents);
85
+ };
86
+ var useFormComponent = function useFormComponent(name) {
87
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
88
+ return useComponent(name, defaultComponent, FORMS_NAMESPACE);
89
+ };
90
+ /**
91
+ * Modals hooks
92
+ */
93
+
94
+ var useModalsComponentsManager = function useModalsComponentsManager() {
95
+ return useComponentsManager(MODALS_NAMESPACE);
96
+ };
97
+ var useModalsComponents = function useModalsComponents() {
98
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
99
+ return useComponents(MODALS_NAMESPACE, defaultComponents);
100
+ };
101
+ var useModalComponent = function useModalComponent(name) {
102
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
103
+ return useComponent(name, defaultComponent, MODALS_NAMESPACE);
104
+ };
105
+ /**
106
+ * Filters hooks
107
+ */
108
+
109
+ var useFiltersComponentsManager = function useFiltersComponentsManager() {
110
+ return useComponentsManager(FILTERS_NAMESPACE);
111
+ };
112
+ var useFiltersComponents = function useFiltersComponents() {
113
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
114
+ return useComponents(FILTERS_NAMESPACE, defaultComponents);
115
+ };
116
+ var useFilterComponent = function useFilterComponent(name) {
117
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
118
+ return useComponent(name, defaultComponent, FILTERS_NAMESPACE);
119
+ };
120
+ /**
121
+ * Lists hooks
122
+ */
123
+
124
+ var useListsComponentsManager = function useListsComponentsManager() {
125
+ return useComponentsManager(LISTS_NAMESPACE);
126
+ };
127
+ var useListsComponents = function useListsComponents() {
128
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
129
+ return useComponents(LISTS_NAMESPACE, defaultComponents);
130
+ };
131
+ var useListComponent = function useListComponent(name) {
132
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
133
+ return useComponent(name, defaultComponent, LISTS_NAMESPACE);
134
+ };
135
+ /**
136
+ * Displays hooks
137
+ */
138
+
139
+ var useDisplaysComponentsManager = function useDisplaysComponentsManager() {
140
+ return useComponentsManager(DISPLAYS_NAMESPACE);
141
+ };
142
+ var useDisplaysComponents = function useDisplaysComponents() {
143
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
144
+ return useComponents(DISPLAYS_NAMESPACE, defaultComponents);
145
+ };
146
+ var useDisplayComponent = function useDisplayComponent(name) {
147
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
148
+ return useComponent(name, defaultComponent, DISPLAYS_NAMESPACE);
149
+ };
150
+ /**
151
+ * App hooks
152
+ */
153
+
154
+ var useAppComponentsManager = function useAppComponentsManager() {
155
+ return useComponentsManager(APP_NAMESPACE);
156
+ };
157
+ var useAppComponents = function useAppComponents() {
158
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
159
+ return useComponents(APP_NAMESPACE, defaultComponents);
160
+ };
161
+ var useAppComponent = function useAppComponent(name) {
162
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
163
+ return useComponent(name, defaultComponent, APP_NAMESPACE);
164
+ };
165
+ /**
166
+ * Provider
167
+ */
168
+
169
+ var propTypes$f = {
170
+ children: PropTypes.node.isRequired,
171
+ namespace: PropTypes.string,
172
+ manager: PropTypes.instanceOf(ComponentsManager),
173
+ components: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.object, PropTypes.func]))
174
+ };
175
+ var defaultProps$f = {
176
+ namespace: null,
177
+ components: {},
178
+ manager: null
179
+ };
180
+ var ComponentsProvider = function ComponentsProvider(_ref) {
181
+ var components = _ref.components,
182
+ manager = _ref.manager,
183
+ namespace = _ref.namespace,
184
+ children = _ref.children;
185
+ var previousManager = useComponentsManager() || null;
186
+ var finalManager = useMemo(function () {
187
+ return new ComponentsManager(_objectSpread(_objectSpread(_objectSpread({}, previousManager !== null ? previousManager.getComponents() : null), manager !== null ? manager.getComponents() : null), new ComponentsManager(components).addNamespace(namespace).getComponents()));
188
+ }, [previousManager, manager, components, namespace]);
189
+ return /*#__PURE__*/React.createElement(ComponentsContext.Provider, {
190
+ value: finalManager
191
+ }, children);
192
+ };
193
+ ComponentsProvider.propTypes = propTypes$f;
194
+ ComponentsProvider.defaultProps = defaultProps$f;
195
+
196
+ var message = PropTypes.shape({
197
+ id: PropTypes.string.isRequired,
198
+ defaultMessage: PropTypes.string
199
+ });
200
+ var label = PropTypes.oneOfType([message, PropTypes.node]);
201
+ PropTypes.oneOfType([PropTypes.number, PropTypes.string]);
202
+ /**
203
+ * Core
204
+ */
205
+
206
+ var menuItem = PropTypes.shape({
207
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),
208
+ label: label,
209
+ url: PropTypes.string,
210
+ external: PropTypes.bool,
211
+ active: PropTypes.bool
212
+ });
213
+ PropTypes.arrayOf(menuItem);
214
+ var button = PropTypes.shape({
215
+ id: PropTypes.string,
216
+ label: label,
217
+ onClick: PropTypes.func
218
+ });
219
+ PropTypes.arrayOf(button);
220
+ PropTypes.oneOf(['primary', 'secondary', 'success', 'danger', 'warning', 'info', 'light', 'dark', null]);
221
+ PropTypes.oneOf(['lg', 'sm', null]);
222
+ PropTypes.oneOf(['button', 'submit']);
223
+ PropTypes.oneOf(['start', 'end']);
224
+ PropTypes.oneOf(['lg', 'sm', null]);
225
+ PropTypes.oneOf(['loading', 'success', 'error', null]);
226
+ var fieldOption = PropTypes.shape({
227
+ value: PropTypes.string,
228
+ label: PropTypes.string
229
+ });
230
+ PropTypes.arrayOf(fieldOption);
231
+ var toggle = PropTypes.shape({
232
+ key: PropTypes.string,
233
+ label: PropTypes.string
234
+ });
235
+ PropTypes.arrayOf(toggle);
236
+ var tableColumn = PropTypes.shape({
237
+ id: PropTypes.string,
238
+ component: PropTypes.string,
239
+ path: PropTypes.string,
240
+ field: PropTypes.string,
241
+ columnClassName: PropTypes.string
242
+ });
243
+ PropTypes.arrayOf(tableColumn);
244
+ /**
245
+ * Panneau Definitions
246
+ */
247
+
248
+ var routes = PropTypes.shape({
249
+ 'resources.index': PropTypes.string.isRequired,
250
+ 'resources.create': PropTypes.string.isRequired,
251
+ 'resources.store': PropTypes.string.isRequired,
252
+ 'resources.show': PropTypes.string.isRequired,
253
+ 'resources.edit': PropTypes.string.isRequired,
254
+ 'resources.update': PropTypes.string.isRequired,
255
+ 'resources.delete': PropTypes.string.isRequired,
256
+ 'resources.destroy': PropTypes.string.isRequired
257
+ });
258
+ var intl = PropTypes.shape({
259
+ locale: PropTypes.string,
260
+ messages: PropTypes.objectOf(PropTypes.string),
261
+ values: PropTypes.objectOf(PropTypes.string)
262
+ });
263
+ var page = PropTypes.shape({
264
+ component: PropTypes.string.isRequired
265
+ });
266
+ var pages = PropTypes.objectOf(page);
267
+ var field = PropTypes.shape({
268
+ name: PropTypes.string.isRequired,
269
+ type: PropTypes.string,
270
+ component: PropTypes.string,
271
+ label: PropTypes.node
272
+ });
273
+ var fields = PropTypes.arrayOf(field);
274
+ var form = PropTypes.shape({
275
+ // type: PropTypes.string.isRequired,
276
+ title: PropTypes.isRequired,
277
+ fields: fields
278
+ });
279
+ PropTypes.arrayOf(form);
280
+ var resource = PropTypes.shape({
281
+ id: PropTypes.string.isRequired,
282
+ name: PropTypes.string.isRequired,
283
+ intl: intl,
284
+ fields: fields,
285
+ forms: PropTypes.shape({}),
286
+ shows_in_navbar: PropTypes.bool
287
+ });
288
+ var resources = PropTypes.arrayOf(resource);
289
+ var panneauDefinition = PropTypes.shape({
290
+ name: PropTypes.string,
291
+ resources: resources,
292
+ routes: routes,
293
+ pages: pages,
294
+ intl: intl // intl,
295
+
296
+ });
297
+ var definition = PropTypes.shape({
298
+ name: PropTypes.string // resources,
299
+ // routes,
300
+ // intl,
301
+
302
+ });
303
+ var item = PropTypes.shape({
304
+ id: PropTypes.string.isRequired
305
+ });
306
+ PropTypes.arrayOf(item);
307
+ var user = PropTypes.shape({
308
+ id: PropTypes.oneOfType([PropTypes.number, PropTypes.string])
309
+ });
310
+ PropTypes.arrayOf(user);
311
+ var selectOption = PropTypes.oneOfType([PropTypes.string, PropTypes.shape({
312
+ value: PropTypes.any,
313
+ // eslint-disable-line
314
+ label: label
315
+ })]);
316
+ PropTypes.arrayOf(selectOption);
317
+ PropTypes.oneOf(['valid', 'invalid', 'loading', null]);
318
+ var formError = PropTypes.shape({
319
+ message: PropTypes.string
320
+ });
321
+ PropTypes.arrayOf(formError);
322
+ PropTypes.shape({
323
+ tus: PropTypes.object
324
+ }); // eslint-disable-line
325
+
326
+ PropTypes.string;
327
+
328
+ /* eslint-disable react/jsx-props-no-spreading */
329
+ var DefinitionContext = /*#__PURE__*/React.createContext(null);
330
+ var useDefinitionContext = function useDefinitionContext() {
331
+ return useContext(DefinitionContext);
332
+ };
333
+ var useDefinition = function useDefinition() {
334
+ var _useDefinitionContext = useDefinitionContext(),
335
+ _useDefinitionContext2 = _useDefinitionContext.definition,
336
+ definition = _useDefinitionContext2 === void 0 ? null : _useDefinitionContext2;
337
+
338
+ return definition;
339
+ };
340
+ var propTypes$e = {
341
+ definition: definition.isRequired,
342
+ children: PropTypes.node.isRequired
343
+ };
344
+ var defaultProps$e = {};
345
+ var DefinitionProvider = function DefinitionProvider(_ref) {
346
+ var definition = _ref.definition,
347
+ children = _ref.children;
348
+ return /*#__PURE__*/React.createElement(DefinitionContext.Provider, {
349
+ value: definition
350
+ }, children);
351
+ };
352
+ DefinitionProvider.propTypes = propTypes$e;
353
+ DefinitionProvider.defaultProps = defaultProps$e;
354
+
355
+ var FieldsContext = /*#__PURE__*/React.createContext(null);
356
+ var useFieldsManager = function useFieldsManager() {
357
+ return useContext(FieldsContext);
358
+ };
359
+ var useField = function useField(id) {
360
+ var manager = useFieldsManager();
361
+ return manager.getDefinition(id);
362
+ };
363
+ var useFields = function useFields() {
364
+ var manager = useFieldsManager();
365
+ return manager.getDefinitions();
366
+ };
367
+ var propTypes$d = {
368
+ fields: PropTypes$1.fields,
369
+ manager: PropTypes.instanceOf(FieldsManager),
370
+ children: PropTypes.node.isRequired
371
+ };
372
+ var defaultProps$d = {
373
+ fields: null,
374
+ manager: null
375
+ };
376
+ var FieldsProvider = function FieldsProvider(_ref) {
377
+ var fields = _ref.fields,
378
+ manager = _ref.manager,
379
+ children = _ref.children;
380
+ var previousManager = useFieldsManager() || null;
381
+ var finalManager = useMemo(function () {
382
+ var newFields = uniqBy([].concat(_toConsumableArray(fields || []), _toConsumableArray(manager !== null ? manager.getDefinitions() : []), _toConsumableArray(previousManager !== null ? previousManager.getDefinitions() : [])), function (_ref2) {
383
+ var id = _ref2.id;
384
+ return id;
385
+ }).reverse();
386
+ return new FieldsManager(newFields);
387
+ }, [previousManager, manager, fields]);
388
+ var components = useMemo(function () {
389
+ var newComponents = finalManager.getComponents();
390
+ return Object.keys(newComponents).reduce(function (map, id) {
391
+ var component = newComponents[id];
392
+ return isString(component) ? map : _objectSpread(_objectSpread({}, map), {}, _defineProperty({}, id, component));
393
+ }, {});
394
+ }, [finalManager]);
395
+ return /*#__PURE__*/React.createElement(FieldsContext.Provider, {
396
+ value: finalManager
397
+ }, /*#__PURE__*/React.createElement(ComponentsProvider, {
398
+ namespace: FIELDS_NAMESPACE,
399
+ components: components
400
+ }, children));
401
+ };
402
+ FieldsProvider.propTypes = propTypes$d;
403
+ FieldsProvider.defaultProps = defaultProps$d;
404
+
405
+ /* eslint-disable react/jsx-props-no-spreading */
406
+ var GoogleKeysContext = /*#__PURE__*/React.createContext({
407
+ apiKey: null
408
+ });
409
+ var useGoogleKeys = function useGoogleKeys() {
410
+ return useContext(GoogleKeysContext);
411
+ };
412
+ var propTypes$c = {
413
+ children: PropTypes.node.isRequired,
414
+ apiKey: PropTypes.string // .isRequired,
415
+
416
+ };
417
+ var defaultProps$c = {
418
+ apiKey: null
419
+ };
420
+ var GoogleKeysProvider = function GoogleKeysProvider(_ref) {
421
+ var children = _ref.children,
422
+ apiKey = _ref.apiKey;
423
+
424
+ var _useGoogleKeys = useGoogleKeys(),
425
+ previousApiKey = _useGoogleKeys.apiKey;
426
+
427
+ return /*#__PURE__*/React.createElement(GoogleKeysContext.Provider, {
428
+ value: {
429
+ apiKey: apiKey || previousApiKey
430
+ }
431
+ }, children);
432
+ };
433
+ GoogleKeysProvider.propTypes = propTypes$c;
434
+ GoogleKeysProvider.defaultProps = defaultProps$c;
435
+
436
+ var FontsContext = /*#__PURE__*/React.createContext({
437
+ systemFonts: null,
438
+ googleFonts: null,
439
+ customFonts: null
440
+ });
441
+ var useGoogleFonts = function useGoogleFonts() {
442
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
443
+ _ref$disabled = _ref.disabled,
444
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
445
+ _ref$setFonts = _ref.setFonts,
446
+ setFonts = _ref$setFonts === void 0 ? null : _ref$setFonts;
447
+
448
+ var _useGoogleKeys = useGoogleKeys(),
449
+ apiKey = _useGoogleKeys.apiKey;
450
+
451
+ var _useState = useState(null),
452
+ _useState2 = _slicedToArray(_useState, 2),
453
+ googleFonts = _useState2[0],
454
+ setGoogleFonts = _useState2[1];
455
+
456
+ useEffect(function () {
457
+ var canceled = false;
458
+
459
+ if (apiKey !== null && !disabled) {
460
+ getJSON("https://www.googleapis.com/webfonts/v1/webfonts?key=".concat(apiKey, "&sort=popularity")).then(function (_ref2) {
461
+ var _ref2$items = _ref2.items,
462
+ items = _ref2$items === void 0 ? [] : _ref2$items;
463
+
464
+ if (!canceled) {
465
+ var newFonts = items.map(function (it) {
466
+ return {
467
+ type: 'google',
468
+ name: it.family,
469
+ variants: it.variants
470
+ };
471
+ });
472
+
473
+ if (setFonts !== null) {
474
+ setFonts(newFonts);
475
+ } else {
476
+ setGoogleFonts(newFonts);
477
+ }
478
+ }
479
+ });
480
+ }
481
+
482
+ return function () {
483
+ canceled = true;
484
+ };
485
+ }, [apiKey, disabled, setFonts, setGoogleFonts]);
486
+ return googleFonts;
487
+ };
488
+ var useFonts = function useFonts() {
489
+ var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
490
+ _ref3$withoutGoogleFo = _ref3.withoutGoogleFonts,
491
+ withoutGoogleFonts = _ref3$withoutGoogleFo === void 0 ? false : _ref3$withoutGoogleFo;
492
+
493
+ var _useContext = useContext(FontsContext),
494
+ _useContext$setGoogle = _useContext.setGoogleFonts,
495
+ setGoogleFonts = _useContext$setGoogle === void 0 ? null : _useContext$setGoogle,
496
+ _useContext$systemFon = _useContext.systemFonts,
497
+ systemFonts = _useContext$systemFon === void 0 ? null : _useContext$systemFon,
498
+ _useContext$googleFon = _useContext.googleFonts,
499
+ googleFonts = _useContext$googleFon === void 0 ? null : _useContext$googleFon,
500
+ _useContext$customFon = _useContext.customFonts,
501
+ customFonts = _useContext$customFon === void 0 ? null : _useContext$customFon;
502
+
503
+ useGoogleFonts({
504
+ disabled: withoutGoogleFonts || googleFonts !== null && googleFonts.length > 0,
505
+ setFonts: setGoogleFonts
506
+ });
507
+ var fonts = useMemo(function () {
508
+ return {
509
+ systemFonts: systemFonts,
510
+ googleFonts: googleFonts,
511
+ customFonts: customFonts
512
+ };
513
+ }, [systemFonts, googleFonts, customFonts]);
514
+ return fonts;
515
+ };
516
+ var propTypes$b = {
517
+ children: PropTypes.node.isRequired,
518
+ systemFonts: PropTypes$1.fonts,
519
+ customFonts: PropTypes$1.fonts
520
+ };
521
+ var defaultProps$b = {
522
+ systemFonts: ['Arial', 'Courier', 'Georgia', 'Times New Roman', 'Verdana'],
523
+ customFonts: null
524
+ };
525
+ var FontsProvider = function FontsProvider(_ref4) {
526
+ var systemFonts = _ref4.systemFonts,
527
+ customFonts = _ref4.customFonts,
528
+ children = _ref4.children;
529
+
530
+ var _useFonts = useFonts(),
531
+ _useFonts$systemFonts = _useFonts.systemFonts,
532
+ previousSystemFonts = _useFonts$systemFonts === void 0 ? null : _useFonts$systemFonts,
533
+ _useFonts$googleFonts = _useFonts.googleFonts,
534
+ previousGoogleFonts = _useFonts$googleFonts === void 0 ? null : _useFonts$googleFonts,
535
+ previousCustomFonts = _useFonts.customFonts;
536
+
537
+ var _useState3 = useState(null),
538
+ _useState4 = _slicedToArray(_useState3, 2),
539
+ googleFonts = _useState4[0],
540
+ setGoogleFonts = _useState4[1];
541
+
542
+ var fonts = useMemo(function () {
543
+ return {
544
+ systemFonts: uniqBy([].concat(_toConsumableArray(previousSystemFonts || []), _toConsumableArray(systemFonts || [])), function (font) {
545
+ return isObject(font) ? font.name : font;
546
+ }),
547
+ googleFonts: uniqBy([].concat(_toConsumableArray(previousGoogleFonts || []), _toConsumableArray(googleFonts || [])), function (font) {
548
+ return isObject(font) ? font.name : font;
549
+ }),
550
+ customFonts: uniqBy([].concat(_toConsumableArray(previousCustomFonts || []), _toConsumableArray(customFonts || [])), function (font) {
551
+ return isObject(font) ? font.name : font;
552
+ }),
553
+ setGoogleFonts: setGoogleFonts
554
+ };
555
+ }, [previousSystemFonts, previousGoogleFonts, previousCustomFonts, customFonts, systemFonts, googleFonts, setGoogleFonts]);
556
+ return /*#__PURE__*/React.createElement(FontsContext.Provider, {
557
+ value: fonts
558
+ }, children);
559
+ };
560
+ FontsProvider.propTypes = propTypes$b;
561
+ FontsProvider.defaultProps = defaultProps$b;
562
+
563
+ /* eslint-disable react/jsx-props-no-spreading */
564
+ var FormContext = /*#__PURE__*/React.createContext(null);
565
+ var useForm = function useForm() {
566
+ return useContext(FormContext);
567
+ };
568
+ var useFormValue = function useFormValue() {
569
+ var _useForm = useForm(),
570
+ value = _useForm.value;
571
+
572
+ return value;
573
+ };
574
+ var useFormSetValue = function useFormSetValue() {
575
+ var _useForm2 = useForm(),
576
+ setValue = _useForm2.setValue;
577
+
578
+ return setValue;
579
+ };
580
+ var propTypes$a = {
581
+ value: PropTypes.object.isRequired,
582
+ // eslint-disable-line react/forbid-prop-types
583
+ setValue: PropTypes.func.isRequired,
584
+ children: PropTypes.node.isRequired
585
+ };
586
+ var defaultProps$a = {};
587
+ var FormProvider = function FormProvider(_ref) {
588
+ var value = _ref.value,
589
+ setValue = _ref.setValue,
590
+ children = _ref.children;
591
+ return /*#__PURE__*/React.createElement(FormContext.Provider, {
592
+ value: {
593
+ value: value,
594
+ setValue: setValue
595
+ }
596
+ }, children);
597
+ };
598
+ FormProvider.propTypes = propTypes$a;
599
+ FormProvider.defaultProps = defaultProps$a;
600
+
601
+ var GoogleApiClientContext = /*#__PURE__*/React.createContext(null);
602
+ var useGoogleApiClient = function useGoogleApiClient() {
603
+ return useContext(GoogleApiClientContext);
604
+ };
605
+ var withGoogleApiClient = function withGoogleApiClient(WrappedComponent) {
606
+ var getDisplayName = function getDisplayName(_ref) {
607
+ var _ref$displayName = _ref.displayName,
608
+ displayName = _ref$displayName === void 0 ? null : _ref$displayName,
609
+ _ref$name = _ref.name,
610
+ name = _ref$name === void 0 ? null : _ref$name;
611
+ return displayName || name || 'Component';
612
+ };
613
+
614
+ var WithGoogleApiClientComponent = function WithGoogleApiClientComponent(props) {
615
+ return /*#__PURE__*/React.createElement(GoogleApiClientContext.Consumer, null, function (client) {
616
+ return /*#__PURE__*/React.createElement(WrappedComponent, Object.assign({
617
+ googleApiClient: client
618
+ }, props));
619
+ });
620
+ };
621
+
622
+ WithGoogleApiClientComponent.displayName = "WithGoogleApiClient(".concat(getDisplayName(WrappedComponent), ")");
623
+ return WithGoogleApiClientComponent;
624
+ };
625
+ var propTypes$9 = {
626
+ children: PropTypes.node.isRequired
627
+ };
628
+ var defaultProps$9 = {};
629
+ var GoogleApiClientProvider = function GoogleApiClientProvider(_ref2) {
630
+ var children = _ref2.children;
631
+
632
+ var _useGoogleKeys = useGoogleKeys(),
633
+ apiKey = _useGoogleKeys.apiKey;
634
+
635
+ var _useState = useState(null),
636
+ _useState2 = _slicedToArray(_useState, 2),
637
+ client = _useState2[0],
638
+ setClient = _useState2[1];
639
+
640
+ useEffect(function () {
641
+ loadGoogleApi().then(function (gapi) {
642
+ return gapi.client.init({
643
+ apiKey: apiKey
644
+ }).then(function () {
645
+ return gapi;
646
+ });
647
+ }).then(function (gapi) {
648
+ return setClient(gapi);
649
+ });
650
+ }, [apiKey, setClient]);
651
+ return /*#__PURE__*/React.createElement(GoogleApiClientContext.Provider, {
652
+ value: client
653
+ }, children);
654
+ };
655
+ GoogleApiClientProvider.propTypes = propTypes$9;
656
+ GoogleApiClientProvider.defaultProps = defaultProps$9;
657
+
658
+ var GoogleMapsClientContext = /*#__PURE__*/React.createContext(null);
659
+ var useGoogleMapsClient = function useGoogleMapsClient() {
660
+ return useContext(GoogleMapsClientContext);
661
+ };
662
+ var withGoogleMapsClient = function withGoogleMapsClient(WrappedComponent) {
663
+ var getDisplayName = function getDisplayName(_ref) {
664
+ var _ref$displayName = _ref.displayName,
665
+ displayName = _ref$displayName === void 0 ? null : _ref$displayName,
666
+ _ref$name = _ref.name,
667
+ name = _ref$name === void 0 ? null : _ref$name;
668
+ return displayName || name || 'Component';
669
+ };
670
+
671
+ var WithGoogleMapsClientComponent = function WithGoogleMapsClientComponent(props) {
672
+ return /*#__PURE__*/React.createElement(GoogleMapsClientContext.Consumer, null, function (client) {
673
+ return /*#__PURE__*/React.createElement(WrappedComponent, Object.assign({
674
+ googleApiClient: client
675
+ }, props));
676
+ });
677
+ };
678
+
679
+ WithGoogleMapsClientComponent.displayName = "WithGoogleMapsClient(".concat(getDisplayName(WrappedComponent), ")");
680
+ return WithGoogleMapsClientComponent;
681
+ };
682
+ var propTypes$8 = {
683
+ children: PropTypes.node.isRequired,
684
+ locale: PropTypes.string,
685
+ libraries: PropTypes.arrayOf(PropTypes.string)
686
+ };
687
+ var defaultProps$8 = {
688
+ locale: 'fr',
689
+ libraries: null
690
+ };
691
+ var GoogleMapsClientProvider = function GoogleMapsClientProvider(_ref2) {
692
+ var children = _ref2.children,
693
+ locale = _ref2.locale,
694
+ libraries = _ref2.libraries;
695
+
696
+ var _useGoogleKeys = useGoogleKeys(),
697
+ apiKey = _useGoogleKeys.apiKey;
698
+
699
+ var exisitingClient = useGoogleMapsClient();
700
+
701
+ var _useState = useState(exisitingClient),
702
+ _useState2 = _slicedToArray(_useState, 2),
703
+ client = _useState2[0],
704
+ setClient = _useState2[1];
705
+
706
+ useEffect(function () {
707
+ if (exisitingClient === null) {
708
+ loadGoogleMaps({
709
+ apiKey: apiKey,
710
+ locale: locale,
711
+ libraries: libraries
712
+ }).then(function (newClient) {
713
+ setClient(newClient);
714
+ });
715
+ }
716
+ }, [apiKey, locale, libraries, setClient, exisitingClient]);
717
+ return /*#__PURE__*/React.createElement(GoogleMapsClientContext.Provider, {
718
+ value: client
719
+ }, children);
720
+ };
721
+ GoogleMapsClientProvider.propTypes = propTypes$8;
722
+ GoogleMapsClientProvider.defaultProps = defaultProps$8;
723
+
724
+ /* eslint-disable react/jsx-props-no-spreading */
725
+ var defaultLocales = ['en', 'fr'];
726
+ var LocalesContext = /*#__PURE__*/React.createContext({
727
+ locales: defaultLocales
728
+ });
729
+ var useLocales = function useLocales() {
730
+ var _useContext = useContext(LocalesContext),
731
+ locales = _useContext.locales;
732
+
733
+ return locales;
734
+ };
735
+ var useOtherLocales = function useOtherLocales() {
736
+ var _useLocales = useLocales(),
737
+ locales = _useLocales.locales;
738
+
739
+ var _useIntl = useIntl(),
740
+ locale = _useIntl.locale;
741
+
742
+ var otherLocales = useMemo(function () {
743
+ return locales.filter(function (it) {
744
+ return it !== locale;
745
+ });
746
+ }, [locales, locale]);
747
+ return otherLocales;
748
+ };
749
+ var propTypes$7 = {
750
+ locales: PropTypes.arrayOf(PropTypes.string),
751
+ children: PropTypes.node.isRequired
752
+ };
753
+ var defaultProps$7 = {
754
+ locales: []
755
+ };
756
+ var LocalesProvider = function LocalesProvider(_ref) {
757
+ var locales = _ref.locales,
758
+ children = _ref.children;
759
+ return /*#__PURE__*/React.createElement(LocalesContext.Provider, {
760
+ value: {
761
+ locales: locales
762
+ }
763
+ }, children);
764
+ };
765
+ LocalesProvider.propTypes = propTypes$7;
766
+ LocalesProvider.defaultProps = defaultProps$7;
767
+
768
+ var ModalsContext = /*#__PURE__*/React.createContext({
769
+ container: null
770
+ });
771
+ var useModals = function useModals() {
772
+ return useContext(ModalsContext) || {};
773
+ };
774
+ var withModals = function withModals(WrappedComponent) {
775
+ var WithModalsComponent = function WithModalsComponent(props) {
776
+ return /*#__PURE__*/React.createElement(ModalsContext.Consumer, null, function (_ref) {
777
+ var modals = _ref.modals,
778
+ container = _ref.container,
779
+ setContainer = _ref.setContainer,
780
+ register = _ref.register,
781
+ unregister = _ref.unregister;
782
+ return /*#__PURE__*/React.createElement(WrappedComponent, Object.assign({
783
+ modalsContainer: container,
784
+ setModalsContainer: setContainer,
785
+ modals: modals,
786
+ registerModal: register,
787
+ unregisterModal: unregister
788
+ }, props));
789
+ });
790
+ };
791
+
792
+ WithModalsComponent.displayName = "WithModals(".concat(getDisplayName(WrappedComponent), ")");
793
+ return WithModalsComponent;
794
+ };
795
+ var propTypes$6 = {
796
+ children: PropTypes.node.isRequired,
797
+ container: PropTypes.object // eslint-disable-line
798
+
799
+ };
800
+ var defaultProps$6 = {
801
+ container: null
802
+ };
803
+ var ModalsProvider = function ModalsProvider(_ref2) {
804
+ var children = _ref2.children,
805
+ initialContainer = _ref2.container;
806
+
807
+ var _useState = useState(initialContainer),
808
+ _useState2 = _slicedToArray(_useState, 2),
809
+ container = _useState2[0],
810
+ setContainer = _useState2[1];
811
+
812
+ var _useState3 = useState([]),
813
+ _useState4 = _slicedToArray(_useState3, 2),
814
+ modals = _useState4[0],
815
+ setModals = _useState4[1];
816
+
817
+ var modalsRef = useRef(modals);
818
+ var register = useCallback(function (id) {
819
+ var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
820
+ var currentModals = modalsRef.current;
821
+ var newModals = [].concat(_toConsumableArray(currentModals), [_objectSpread({
822
+ id: id
823
+ }, data)]);
824
+ setModals(newModals);
825
+ modalsRef.current = newModals;
826
+ }, [modals, setModals]);
827
+ var unregister = useCallback(function (id) {
828
+ var currentModals = modalsRef.current;
829
+ var foundIndex = currentModals.findIndex(function (_ref3) {
830
+ var modalId = _ref3.id;
831
+ return modalId === id;
832
+ });
833
+
834
+ if (foundIndex !== -1) {
835
+ var newModals = currentModals.filter(function (_ref4) {
836
+ var modalId = _ref4.id;
837
+ return modalId !== id;
838
+ });
839
+ setModals(newModals);
840
+ modalsRef.current = newModals;
841
+ }
842
+ }, [modals, setModals]);
843
+ return /*#__PURE__*/React.createElement(ModalsContext.Provider, {
844
+ value: {
845
+ modals: modals,
846
+ container: container,
847
+ setContainer: setContainer,
848
+ register: register,
849
+ unregister: unregister
850
+ }
851
+ }, children);
852
+ };
853
+ ModalsProvider.propTypes = propTypes$6;
854
+ ModalsProvider.defaultProps = defaultProps$6;
855
+
856
+ var PanelsContext = /*#__PURE__*/React.createContext({
857
+ container: null
858
+ });
859
+ var usePanels = function usePanels() {
860
+ return useContext(PanelsContext) || {};
861
+ };
862
+ var withPanels = function withPanels(WrappedComponent) {
863
+ var WithPanelsComponent = function WithPanelsComponent(props) {
864
+ return /*#__PURE__*/React.createElement(PanelsContext.Consumer, null, function (_ref) {
865
+ var panels = _ref.panels,
866
+ setContainer = _ref.setContainer,
867
+ container = _ref.container,
868
+ register = _ref.register,
869
+ unregister = _ref.unregister;
870
+ return /*#__PURE__*/React.createElement(WrappedComponent, Object.assign({
871
+ panelsContainer: container,
872
+ setPanelsContainer: setContainer,
873
+ panels: panels,
874
+ registerPanel: register,
875
+ unregisterPanel: unregister
876
+ }, props));
877
+ });
878
+ };
879
+
880
+ WithPanelsComponent.displayName = "WithPanels(".concat(getDisplayName(WrappedComponent), ")");
881
+ return WithPanelsComponent;
882
+ };
883
+ var propTypes$5 = {
884
+ children: PropTypes.node.isRequired,
885
+ container: PropTypes.object // eslint-disable-line
886
+
887
+ };
888
+ var defaultProps$5 = {
889
+ container: null
890
+ };
891
+ var PanelsProvider = function PanelsProvider(_ref2) {
892
+ var children = _ref2.children,
893
+ initialContainer = _ref2.container;
894
+
895
+ var _useState = useState(initialContainer),
896
+ _useState2 = _slicedToArray(_useState, 2),
897
+ container = _useState2[0],
898
+ setContainer = _useState2[1];
899
+
900
+ var _useState3 = useState([]),
901
+ _useState4 = _slicedToArray(_useState3, 2),
902
+ panels = _useState4[0],
903
+ setPanels = _useState4[1];
904
+
905
+ var panelsRef = useRef(panels);
906
+ var register = useCallback(function (id) {
907
+ var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
908
+ var currentPanels = panelsRef.current;
909
+ var newPanels = [].concat(_toConsumableArray(currentPanels), [_objectSpread({
910
+ id: id
911
+ }, data)]);
912
+ setPanels(newPanels);
913
+ panelsRef.current = newPanels;
914
+ }, [panels, setPanels]);
915
+ var unregister = useCallback(function (id) {
916
+ var currentPanels = panelsRef.current;
917
+ var foundIndex = currentPanels.findIndex(function (_ref3) {
918
+ var modalId = _ref3.id;
919
+ return modalId === id;
920
+ });
921
+
922
+ if (foundIndex !== -1) {
923
+ var newPanels = currentPanels.filter(function (_ref4) {
924
+ var modalId = _ref4.id;
925
+ return modalId !== id;
926
+ });
927
+ setPanels(newPanels);
928
+ panelsRef.current = newPanels;
929
+ }
930
+ }, [panels, setPanels]);
931
+ return /*#__PURE__*/React.createElement(PanelsContext.Provider, {
932
+ value: {
933
+ panels: panels,
934
+ setContainer: setContainer,
935
+ container: container,
936
+ register: register,
937
+ unregister: unregister
938
+ }
939
+ }, children);
940
+ };
941
+ PanelsProvider.propTypes = propTypes$5;
942
+ PanelsProvider.defaultProps = defaultProps$5;
943
+
944
+ var _excluded$3 = ["component"];
945
+ var PanneauContext = /*#__PURE__*/React.createContext(null);
946
+ var usePanneau = function usePanneau() {
947
+ return useContext(PanneauContext);
948
+ };
949
+ var usePanneauResources = function usePanneauResources() {
950
+ var _ref = usePanneau() || {},
951
+ _ref$resources = _ref.resources,
952
+ resources = _ref$resources === void 0 ? [] : _ref$resources;
953
+
954
+ return resources;
955
+ };
956
+ var usePanneauResource = function usePanneauResource(id) {
957
+ var resources = usePanneauResources();
958
+ return resources.find(function (it) {
959
+ return it.id === id;
960
+ }) || null;
961
+ };
962
+ var usePanneauColorScheme = function usePanneauColorScheme() {
963
+ var _ref2 = usePanneau() || {},
964
+ _ref2$theme = _ref2.theme,
965
+ theme = _ref2$theme === void 0 ? {} : _ref2$theme;
966
+
967
+ var _ref3 = theme || {},
968
+ _ref3$colorScheme = _ref3.colorScheme,
969
+ colorScheme = _ref3$colorScheme === void 0 ? 'light' : _ref3$colorScheme;
970
+
971
+ return colorScheme === 'dark' ? {
972
+ background: 'dark',
973
+ text: 'light'
974
+ } : {
975
+ background: 'light',
976
+ text: 'dark'
977
+ };
978
+ };
979
+ var usePanneauComponents = function usePanneauComponents() {
980
+ var _ref4 = usePanneau() || {},
981
+ _ref4$components = _ref4.components,
982
+ components = _ref4$components === void 0 ? {} : _ref4$components;
983
+
984
+ return components;
985
+ };
986
+ var usePanneauComponent = function usePanneauComponent(namespace, name) {
987
+ var _ref5 = usePanneau() || {},
988
+ _ref5$components = _ref5.components,
989
+ components = _ref5$components === void 0 ? {} : _ref5$components;
990
+
991
+ var path = namespace !== null ? "".concat(namespace, ".").concat(name) : name || null;
992
+ var component = components[path] || null;
993
+
994
+ if (isString(component)) {
995
+ return component;
996
+ }
997
+
998
+ if (isObject(component) && isString(component === null || component === void 0 ? void 0 : component.componnent)) {
999
+ // eslint-disable-next-line no-unused-vars
1000
+ component.component;
1001
+ _objectWithoutProperties(component, _excluded$3);
1002
+
1003
+ return component.component;
1004
+ }
1005
+
1006
+ return null;
1007
+ };
1008
+ var usePanneauAuth = function usePanneauAuth() {
1009
+ var _ref6 = usePanneau() || {},
1010
+ _ref6$auth = _ref6.auth,
1011
+ auth = _ref6$auth === void 0 ? {} : _ref6$auth;
1012
+
1013
+ return auth;
1014
+ };
1015
+ var usePanneauSettings = function usePanneauSettings() {
1016
+ var _ref7 = usePanneau() || {},
1017
+ _ref7$settings = _ref7.settings,
1018
+ settings = _ref7$settings === void 0 ? {} : _ref7$settings;
1019
+
1020
+ return settings;
1021
+ };
1022
+ var propTypes$4 = {
1023
+ definition: panneauDefinition.isRequired,
1024
+ children: PropTypes.node.isRequired
1025
+ };
1026
+ var defaultProps$4 = {};
1027
+ var PanneauProvider = function PanneauProvider(_ref8) {
1028
+ var definition = _ref8.definition,
1029
+ children = _ref8.children;
1030
+ return /*#__PURE__*/React.createElement(PanneauContext.Provider, {
1031
+ value: definition
1032
+ }, children);
1033
+ };
1034
+ PanneauProvider.propTypes = propTypes$4;
1035
+ PanneauProvider.defaultProps = defaultProps$4;
1036
+
1037
+ /* eslint-disable react/jsx-props-no-spreading */
1038
+ var ResourceContext = /*#__PURE__*/React.createContext(null);
1039
+ var useResource = function useResource() {
1040
+ return useContext(ResourceContext);
1041
+ };
1042
+ var propTypes$3 = {
1043
+ resource: resource.isRequired,
1044
+ children: PropTypes.node.isRequired
1045
+ };
1046
+ var defaultProps$3 = {};
1047
+ var ResourceProvider = function ResourceProvider(_ref) {
1048
+ var resource = _ref.resource,
1049
+ children = _ref.children;
1050
+ return /*#__PURE__*/React.createElement(ResourceContext.Provider, {
1051
+ value: resource
1052
+ }, children);
1053
+ };
1054
+ ResourceProvider.propTypes = propTypes$3;
1055
+ ResourceProvider.defaultProps = defaultProps$3;
1056
+
1057
+ /* eslint-disable react/jsx-props-no-spreading */
1058
+ var RoutesContext = /*#__PURE__*/React.createContext(null);
1059
+ var useRoutes = function useRoutes() {
1060
+ var _useContext = useContext(RoutesContext),
1061
+ routes = _useContext.routes;
1062
+
1063
+ return routes;
1064
+ };
1065
+ var useUrlGenerator = function useUrlGenerator() {
1066
+ var _useContext2 = useContext(RoutesContext),
1067
+ routes = _useContext2.routes,
1068
+ basePath = _useContext2.basePath;
1069
+
1070
+ var urlGenerator = useCallback(function (key, data) {
1071
+ var url = generatePath(routes[key], data); // console.log('urlGenerator', basePath, routes[key], url, data);
1072
+
1073
+ return basePath !== null ? "".concat(basePath.replace(/\/$/, ''), "/").concat(url.replace(/^\//, '')) : url;
1074
+ }, [generatePath, routes, basePath]);
1075
+ return urlGenerator;
1076
+ };
1077
+ var useRoutePush = function useRoutePush() {
1078
+ var url = useUrlGenerator();
1079
+ var navigate = useNavigate();
1080
+ var push = useCallback(function (route, data) {
1081
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
1082
+ args[_key - 2] = arguments[_key];
1083
+ }
1084
+
1085
+ if (isString(route)) {
1086
+ var _history;
1087
+
1088
+ (_history = history).push.apply(_history, [url(route, data)].concat(args));
1089
+ } else {
1090
+ var _ref = route || {},
1091
+ _ref$pathname = _ref.pathname,
1092
+ pathname = _ref$pathname === void 0 ? null : _ref$pathname,
1093
+ _ref$search = _ref.search,
1094
+ search = _ref$search === void 0 ? null : _ref$search;
1095
+
1096
+ navigate.apply(void 0, [{
1097
+ pathname: url(pathname, data),
1098
+ search: search
1099
+ }].concat(args));
1100
+ }
1101
+ }, [navigate, url]);
1102
+ return push;
1103
+ };
1104
+ var useRouteBack = function useRouteBack() {
1105
+ var url = useUrlGenerator();
1106
+ var navigate = useNavigate();
1107
+ var back = useCallback(function () {
1108
+ return navigate(-1);
1109
+ }, [navigate, url]);
1110
+ return back;
1111
+ };
1112
+ var propTypes$2 = {
1113
+ children: PropTypes.node.isRequired,
1114
+ routes: PropTypes.objectOf(PropTypes.string),
1115
+ // .isRequired,
1116
+ basePath: PropTypes.string
1117
+ };
1118
+ var defaultProps$2 = {
1119
+ routes: null,
1120
+ basePath: null
1121
+ };
1122
+ var RoutesProvider = function RoutesProvider(_ref2) {
1123
+ var routes = _ref2.routes,
1124
+ basePath = _ref2.basePath,
1125
+ children = _ref2.children;
1126
+ return /*#__PURE__*/React.createElement(RoutesContext.Provider, {
1127
+ value: {
1128
+ routes: routes,
1129
+ basePath: basePath
1130
+ }
1131
+ }, children);
1132
+ };
1133
+ RoutesProvider.propTypes = propTypes$2;
1134
+ RoutesProvider.defaultProps = defaultProps$2;
1135
+
1136
+ /* eslint-disable react/jsx-props-no-spreading */
1137
+ var useTracking = function useTracking() {
1138
+ return useContext(TrackingContext);
1139
+ };
1140
+ var propTypes$1 = {
1141
+ children: PropTypes.node.isRequired,
1142
+ variables: PropTypes$1.trackingVariables
1143
+ };
1144
+ var defaultProps$1 = {
1145
+ variables: null
1146
+ };
1147
+ var TrackingProvider = function TrackingProvider(_ref) {
1148
+ var variables = _ref.variables,
1149
+ children = _ref.children;
1150
+ var contextTracking = useTracking() || null;
1151
+ var tracking = useMemo(function () {
1152
+ if (contextTracking !== null) {
1153
+ contextTracking.setVariables(variables);
1154
+ return contextTracking;
1155
+ }
1156
+
1157
+ return new Tracking({
1158
+ variables: variables
1159
+ });
1160
+ }, [contextTracking, variables]);
1161
+ return /*#__PURE__*/React.createElement(TrackingContainer, {
1162
+ tracking: tracking
1163
+ }, children);
1164
+ };
1165
+ TrackingProvider.propTypes = propTypes$1;
1166
+ TrackingProvider.defaultProps = defaultProps$1;
1167
+
1168
+ /**
1169
+ * Locale loader
1170
+ */
1171
+
1172
+ var packageCache = null;
1173
+
1174
+ var useUppyCore = function useUppyCore() {
1175
+ // transport
1176
+ var _useState = useState({
1177
+ "package": packageCache
1178
+ }),
1179
+ _useState2 = _slicedToArray(_useState, 2),
1180
+ loadedPackage = _useState2[0]["package"],
1181
+ setLoadedPackage = _useState2[1];
1182
+
1183
+ useEffect(function () {
1184
+ var canceled = false;
1185
+
1186
+ if (loadedPackage !== null) {
1187
+ return function () {
1188
+ canceled = true;
1189
+ };
1190
+ }
1191
+
1192
+ import('@uppy/core').then(function (_ref) {
1193
+ var Uppy = _ref["default"];
1194
+ packageCache = Uppy;
1195
+
1196
+ if (!canceled) {
1197
+ setLoadedPackage({
1198
+ "package": Uppy
1199
+ });
1200
+ }
1201
+ });
1202
+ return function () {
1203
+ canceled = true;
1204
+ };
1205
+ }, [loadedPackage, setLoadedPackage]);
1206
+ return loadedPackage;
1207
+ };
1208
+
1209
+ /**
1210
+ * Locale loader
1211
+ */
1212
+
1213
+ var packagesCache$2 = {};
1214
+ var defaultPackagesMap$2 = {
1215
+ fr: function fr() {
1216
+ return import('@uppy/locales/lib/fr_FR');
1217
+ },
1218
+ en: function en() {
1219
+ return import('@uppy/locales/lib/en_US');
1220
+ }
1221
+ };
1222
+
1223
+ var useUppyLocale = function useUppyLocale(locale) {
1224
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1225
+ _ref$packagesMap = _ref.packagesMap,
1226
+ packagesMap = _ref$packagesMap === void 0 ? defaultPackagesMap$2 : _ref$packagesMap;
1227
+
1228
+ var _useState = useState({
1229
+ "package": packagesCache$2[locale] || null
1230
+ }),
1231
+ _useState2 = _slicedToArray(_useState, 2),
1232
+ loadedPackage = _useState2[0]["package"],
1233
+ setLoadedPackage = _useState2[1];
1234
+
1235
+ var packageLoader = packagesMap[locale] || null;
1236
+ useEffect(function () {
1237
+ var canceled = false;
1238
+
1239
+ if (loadedPackage !== null || packageLoader === null) {
1240
+ return function () {
1241
+ canceled = true;
1242
+ };
1243
+ }
1244
+
1245
+ packageLoader().then(function (_ref2) {
1246
+ var dep = _ref2["default"];
1247
+
1248
+ // packagesCache[locale] = dep;
1249
+ if (!canceled) {
1250
+ setLoadedPackage({
1251
+ "package": dep
1252
+ });
1253
+ }
1254
+ });
1255
+ return function () {
1256
+ canceled = true;
1257
+ };
1258
+ }, [packageLoader, loadedPackage, setLoadedPackage]);
1259
+ return loadedPackage;
1260
+ };
1261
+
1262
+ var _excluded$2 = ["default"];
1263
+ /**
1264
+ * Locale loader
1265
+ */
1266
+
1267
+ var packagesCache$1 = {};
1268
+ var defaultPackagesMap$1 = {
1269
+ webcam: function webcam() {
1270
+ return import('@uppy/webcam');
1271
+ },
1272
+ facebook: function facebook() {
1273
+ return import('@uppy/facebook');
1274
+ },
1275
+ instagram: function instagram() {
1276
+ return import('@uppy/instagram');
1277
+ },
1278
+ dropbox: function dropbox() {
1279
+ return import('@uppy/dropbox');
1280
+ },
1281
+ 'google-drive': function googleDrive() {
1282
+ return import('@uppy/google-drive');
1283
+ }
1284
+ };
1285
+
1286
+ var useUppySources = function useUppySources(sources) {
1287
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1288
+ _ref$packagesMap = _ref.packagesMap,
1289
+ packagesMap = _ref$packagesMap === void 0 ? defaultPackagesMap$1 : _ref$packagesMap;
1290
+
1291
+ // transport
1292
+ var _useState = useState({
1293
+ packages: sources.reduce(function (map, source) {
1294
+ var sourcePackage = packagesCache$1[source] || null;
1295
+
1296
+ if (sourcePackage === null) {
1297
+ return map;
1298
+ }
1299
+
1300
+ return _objectSpread(_objectSpread({}, map), {}, _defineProperty({}, source, sourcePackage));
1301
+ }, null)
1302
+ }),
1303
+ _useState2 = _slicedToArray(_useState, 2),
1304
+ loadedPackages = _useState2[0].packages,
1305
+ setLoadedPackages = _useState2[1];
1306
+
1307
+ var sourcesToLoad = useMemo(function () {
1308
+ if (loadedPackages === null) {
1309
+ return sources;
1310
+ }
1311
+
1312
+ var sourcesLoaded = Object.keys(loadedPackages);
1313
+ return sources.filter(function (source) {
1314
+ return sourcesLoaded.indexOf(source) === -1;
1315
+ });
1316
+ }, [sources, loadedPackages]);
1317
+ useEffect(function () {
1318
+ var canceled = false;
1319
+
1320
+ if (sourcesToLoad.length === 0) {
1321
+ return function () {
1322
+ canceled = true;
1323
+ };
1324
+ }
1325
+
1326
+ Promise.all(sourcesToLoad.map(function (source) {
1327
+ return packagesMap[source] || null;
1328
+ }).filter(function (it) {
1329
+ return it !== null;
1330
+ }).map(function (promise) {
1331
+ return promise();
1332
+ })).then(function (packagesLoaded) {
1333
+ var newLoadedPackages = sourcesToLoad.reduce(function (map, source, index) {
1334
+ var _packagesLoaded$index = packagesLoaded[index],
1335
+ pack = _packagesLoaded$index["default"],
1336
+ others = _objectWithoutProperties(_packagesLoaded$index, _excluded$2);
1337
+
1338
+ return _objectSpread(_objectSpread({}, map), {}, _defineProperty({}, source, Object.keys(others).reduce(function (otherMap, key) {
1339
+ otherMap[key] = others[key]; // eslint-disable-line no-param-reassign
1340
+
1341
+ return otherMap;
1342
+ }, pack)));
1343
+ }, {});
1344
+ packagesCache$1 = _objectSpread(_objectSpread({}, packagesCache$1), newLoadedPackages);
1345
+
1346
+ if (!canceled) {
1347
+ setLoadedPackages({
1348
+ packages: newLoadedPackages
1349
+ });
1350
+ }
1351
+ });
1352
+ return function () {
1353
+ canceled = true;
1354
+ };
1355
+ }, [sourcesToLoad, packagesMap, loadedPackages, setLoadedPackages]);
1356
+ return sourcesToLoad.length === 0 ? loadedPackages : null;
1357
+ };
1358
+
1359
+ var _excluded$1 = ["default"];
1360
+ /**
1361
+ * Locale loader
1362
+ */
1363
+
1364
+ var packagesCache = {};
1365
+ var defaultPackagesMap = {
1366
+ transloadit: function transloadit() {
1367
+ return import('@uppy/transloadit');
1368
+ },
1369
+ tus: function tus() {
1370
+ return import('@uppy/tus');
1371
+ },
1372
+ xhr: function xhr() {
1373
+ return import('@uppy/xhr-upload');
1374
+ }
1375
+ };
1376
+
1377
+ var useUppyTransport = function useUppyTransport(transport) {
1378
+ var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
1379
+ _ref$packagesMap = _ref.packagesMap,
1380
+ packagesMap = _ref$packagesMap === void 0 ? defaultPackagesMap : _ref$packagesMap;
1381
+
1382
+ // transport
1383
+ var _useState = useState({
1384
+ "package": packagesCache[transport] || null
1385
+ }),
1386
+ _useState2 = _slicedToArray(_useState, 2),
1387
+ loadedPackage = _useState2[0]["package"],
1388
+ setLoadedPackage = _useState2[1];
1389
+
1390
+ var packageLoader = packagesMap[transport] || null;
1391
+ useEffect(function () {
1392
+ var canceled = false;
1393
+
1394
+ if (loadedPackage !== null || packageLoader === null) {
1395
+ return function () {
1396
+ canceled = true;
1397
+ };
1398
+ }
1399
+
1400
+ packageLoader().then(function (_ref2) {
1401
+ var pack = _ref2["default"],
1402
+ others = _objectWithoutProperties(_ref2, _excluded$1);
1403
+
1404
+ var dep = Object.keys(others).reduce(function (map, key) {
1405
+ map[key] = others[key]; // eslint-disable-line no-param-reassign
1406
+
1407
+ return map;
1408
+ }, pack);
1409
+ packagesCache[transport] = dep;
1410
+
1411
+ if (!canceled) {
1412
+ setLoadedPackage({
1413
+ "package": dep
1414
+ });
1415
+ }
1416
+ });
1417
+ return function () {
1418
+ canceled = true;
1419
+ };
1420
+ }, [packageLoader, loadedPackage, setLoadedPackage]);
1421
+ return loadedPackage;
1422
+ };
1423
+
1424
+ var convertToMedia = function convertToMedia(it) {
1425
+ // console.log('upload', it);
1426
+ var type = it.data.type.split('/')[0];
1427
+ var thumbnail = it.transloadit["".concat(type, "_thumbnail")] || null;
1428
+ var original = it.transloadit["".concat(type, "_original")] || null;
1429
+ return {
1430
+ handle: it.id,
1431
+ type: type,
1432
+ name: it.meta.name,
1433
+ mime: it.data.type,
1434
+ size: it.data.size,
1435
+ url: original !== null ? original.ssl_url || original.url : null,
1436
+ thumbnail_url: thumbnail !== null ? thumbnail.ssl_url || thumbnail.url : null,
1437
+ metadata: _objectSpread(_objectSpread(_objectSpread({}, original !== null ? original.meta || null : null), it.meta.user ? {
1438
+ user: it.meta.user
1439
+ } || null : null), {}, {
1440
+ filename: it.meta.filename,
1441
+ transloadit: it.transloadit.results || null
1442
+ })
1443
+ };
1444
+ };
1445
+
1446
+ var getTransloaditMediasFromResponse = function getTransloaditMediasFromResponse(response) {
1447
+ return response.successful.map(function (it) {
1448
+ var transloadit = response.transloadit.find(function (subIt) {
1449
+ return subIt.assembly_id === it.transloadit.assembly;
1450
+ }) || null;
1451
+ var results = transloadit !== null ? transloadit.results || null : null;
1452
+ return _objectSpread(_objectSpread({}, it), {}, {
1453
+ transloadit: results !== null ? Object.keys(results).reduce(function (map, resultKey) {
1454
+ var result = results[resultKey].find(function (itResult) {
1455
+ return itResult.name === it.name;
1456
+ });
1457
+ return result !== null ? _objectSpread(_objectSpread({}, map), {}, _defineProperty({}, resultKey, result)) : map;
1458
+ }, null) : null
1459
+ });
1460
+ }).filter(function (it) {
1461
+ return it.transloadit !== null;
1462
+ }).map(function (it) {
1463
+ return convertToMedia(it);
1464
+ });
1465
+ };
1466
+
1467
+ var _excluded = ["sources"],
1468
+ _excluded2 = ["key", "templateId", "waitForEncoding"];
1469
+ var UppyContext = /*#__PURE__*/React.createContext(null);
1470
+ var useUppy = function useUppy() {
1471
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
1472
+ _ref$onComplete = _ref.onComplete,
1473
+ onComplete = _ref$onComplete === void 0 ? null : _ref$onComplete,
1474
+ _ref$onFail = _ref.onFail,
1475
+ onFail = _ref$onFail === void 0 ? null : _ref$onFail,
1476
+ _ref$getFileName = _ref.getFileName,
1477
+ getFileName = _ref$getFileName === void 0 ? function (_ref2) {
1478
+ var _ref2$extension = _ref2.extension,
1479
+ extension = _ref2$extension === void 0 ? null : _ref2$extension;
1480
+ return "".concat(v1()).concat(extension !== null ? ".".concat(extension) : '');
1481
+ } : _ref$getFileName,
1482
+ _ref$meta = _ref.meta,
1483
+ meta = _ref$meta === void 0 ? null : _ref$meta,
1484
+ _ref$allowMultipleUpl = _ref.allowMultipleUploads,
1485
+ allowMultipleUploads = _ref$allowMultipleUpl === void 0 ? false : _ref$allowMultipleUpl,
1486
+ _ref$maxNumberOfFiles = _ref.maxNumberOfFiles,
1487
+ maxNumberOfFiles = _ref$maxNumberOfFiles === void 0 ? 1 : _ref$maxNumberOfFiles,
1488
+ _ref$allowedFileTypes = _ref.allowedFileTypes,
1489
+ allowedFileTypes = _ref$allowedFileTypes === void 0 ? null : _ref$allowedFileTypes,
1490
+ _ref$autoProceed = _ref.autoProceed,
1491
+ autoProceed = _ref$autoProceed === void 0 ? false : _ref$autoProceed,
1492
+ _ref$debug = _ref.debug,
1493
+ debug = _ref$debug === void 0 ? false : _ref$debug;
1494
+
1495
+ var _ref3 = useContext(UppyContext) || null,
1496
+ buildUppy = _ref3.buildUppy,
1497
+ transport = _ref3.transport;
1498
+
1499
+ var uppy = useMemo(function () {
1500
+ return buildUppy !== null ? buildUppy({
1501
+ meta: meta,
1502
+ allowMultipleUploads: allowMultipleUploads,
1503
+ restrictions: {
1504
+ maxNumberOfFiles: maxNumberOfFiles,
1505
+ allowedFileTypes: allowedFileTypes
1506
+ },
1507
+ autoProceed: autoProceed,
1508
+ debug: debug
1509
+ }) : null;
1510
+ }, [buildUppy, meta, allowMultipleUploads, debug, maxNumberOfFiles, allowedFileTypes, autoProceed]);
1511
+ useEffect(function () {
1512
+ if (uppy === null) {
1513
+ return function () {};
1514
+ }
1515
+
1516
+ var onUppyComplete = function onUppyComplete(response) {
1517
+ var _response$successful = response.successful,
1518
+ successful = _response$successful === void 0 ? [] : _response$successful,
1519
+ _response$failed = response.failed,
1520
+ failed = _response$failed === void 0 ? null : _response$failed;
1521
+ var finalSuccessful = transport === 'transloadit' ? getTransloaditMediasFromResponse(response) : successful;
1522
+
1523
+ if (onComplete !== null) {
1524
+ onComplete(finalSuccessful);
1525
+ }
1526
+
1527
+ if (onFail !== null) {
1528
+ onFail(failed);
1529
+ }
1530
+ };
1531
+
1532
+ uppy.on('complete', onUppyComplete);
1533
+ return function () {
1534
+ uppy.off('complete', onUppyComplete);
1535
+ };
1536
+ }, [uppy, transport, onComplete]);
1537
+ useEffect(function () {
1538
+ if (uppy === null) {
1539
+ return function () {};
1540
+ }
1541
+
1542
+ var onUpload = function onUpload(_ref4) {
1543
+ var _ref4$fileIDs = _ref4.fileIDs,
1544
+ ids = _ref4$fileIDs === void 0 ? [] : _ref4$fileIDs;
1545
+ ids.forEach(function (id) {
1546
+ var file = uppy.getFile(id);
1547
+ var newName = getFileName(file);
1548
+
1549
+ if (newName !== null) {
1550
+ uppy.setFileMeta(id, {
1551
+ name: newName
1552
+ });
1553
+ }
1554
+ });
1555
+ };
1556
+
1557
+ uppy.on('upload', onUpload);
1558
+ return function () {
1559
+ uppy.off('upload', onUpload);
1560
+ };
1561
+ }, [uppy]);
1562
+ useEffect(function () {
1563
+ return function () {
1564
+ if (uppy !== null) {
1565
+ uppy.close();
1566
+ }
1567
+ };
1568
+ }, [uppy]);
1569
+ return uppy;
1570
+ };
1571
+ var propTypes = {
1572
+ id: PropTypes.string,
1573
+ children: PropTypes.node.isRequired,
1574
+ transport: PropTypes.oneOf(['xhr', 'transloadit', 'tus']),
1575
+ locale: PropTypes.string,
1576
+ sources: PropTypes.arrayOf(PropTypes.oneOf(['webcam', 'facebook', 'instagram', 'dropbox', 'google-drive'])),
1577
+ transloadit: PropTypes.shape({
1578
+ key: PropTypes.string.isRequired,
1579
+ templateId: PropTypes.string,
1580
+ waitForEncoding: PropTypes.bool
1581
+ }),
1582
+ companion: PropTypes.shape({
1583
+ url: PropTypes.string.isRequired,
1584
+ allowedHosts: PropTypes.string.isRequired
1585
+ }),
1586
+ tus: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({
1587
+ endpoint: PropTypes.string.isRequired
1588
+ })]),
1589
+ xhr: PropTypes.oneOfType([PropTypes.string, PropTypes.shape({
1590
+ endpoint: PropTypes.string.isRequired
1591
+ })])
1592
+ };
1593
+ var defaultProps = {
1594
+ id: 'uppy',
1595
+ transport: null,
1596
+ locale: null,
1597
+ sources: null,
1598
+ transloadit: null,
1599
+ companion: null,
1600
+ tus: null,
1601
+ xhr: null
1602
+ };
1603
+ var UppyProvider = function UppyProvider(_ref5) {
1604
+ var id = _ref5.id,
1605
+ children = _ref5.children,
1606
+ providedTransport = _ref5.transport,
1607
+ providedLocale = _ref5.locale,
1608
+ providedSources = _ref5.sources,
1609
+ providedTransloadit = _ref5.transloadit,
1610
+ providedCompanion = _ref5.companion,
1611
+ providedTus = _ref5.tus,
1612
+ providedXhr = _ref5.xhr;
1613
+
1614
+ var _useIntl = useIntl(),
1615
+ intlLocale = _useIntl.locale;
1616
+
1617
+ var _ref6 = useContext(UppyContext) || {},
1618
+ _ref6$transport = _ref6.transport,
1619
+ contextTransport = _ref6$transport === void 0 ? null : _ref6$transport,
1620
+ _ref6$locale = _ref6.locale,
1621
+ contextLocale = _ref6$locale === void 0 ? null : _ref6$locale,
1622
+ _ref6$sources = _ref6.sources,
1623
+ contextSources = _ref6$sources === void 0 ? null : _ref6$sources,
1624
+ _ref6$transloadit = _ref6.transloadit,
1625
+ contextTransloadit = _ref6$transloadit === void 0 ? null : _ref6$transloadit,
1626
+ _ref6$companion = _ref6.companion,
1627
+ contextCompanion = _ref6$companion === void 0 ? null : _ref6$companion,
1628
+ _ref6$tus = _ref6.tus,
1629
+ contextTus = _ref6$tus === void 0 ? null : _ref6$tus,
1630
+ _ref6$xhr = _ref6.xhr,
1631
+ contextXhr = _ref6$xhr === void 0 ? null : _ref6$xhr;
1632
+
1633
+ var transport = providedTransport || contextTransport || 'xhr';
1634
+ var locale = providedLocale || contextLocale || intlLocale;
1635
+ var sources = providedSources || contextSources || ['webcam', 'facebook', 'instagram', 'dropbox', 'google-drive'];
1636
+ var transloadit = providedTransloadit || contextTransloadit;
1637
+ var companion = providedCompanion || contextCompanion;
1638
+ var tus = providedTus || contextTus;
1639
+ var xhr = providedXhr || contextXhr;
1640
+ var Uppy = useUppyCore();
1641
+ var uppyTransport = useUppyTransport(transport);
1642
+ var uppySources = useUppySources(sources);
1643
+ var uppyLocale = useUppyLocale(locale || intlLocale);
1644
+ var buildUppy = useMemo(function () {
1645
+ if (Uppy === null || uppyLocale === null || uppyTransport === null || uppySources === null) {
1646
+ return null;
1647
+ }
1648
+
1649
+ return function () {
1650
+ var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
1651
+
1652
+ var _ref7 = opts || {},
1653
+ _ref7$sources = _ref7.sources,
1654
+ customSources = _ref7$sources === void 0 ? sources : _ref7$sources,
1655
+ uppyOpts = _objectWithoutProperties(_ref7, _excluded);
1656
+
1657
+ var newUppy = new Uppy(_objectSpread({
1658
+ id: id,
1659
+ locale: uppyLocale
1660
+ }, uppyOpts));
1661
+
1662
+ if (transport === 'transloadit') {
1663
+ var key = transloadit.key,
1664
+ templateId = transloadit.templateId,
1665
+ _transloadit$waitForE = transloadit.waitForEncoding,
1666
+ waitForEncoding = _transloadit$waitForE === void 0 ? true : _transloadit$waitForE,
1667
+ transloaditOpts = _objectWithoutProperties(transloadit, _excluded2);
1668
+
1669
+ newUppy.use(uppyTransport, {
1670
+ params: _objectSpread({
1671
+ auth: {
1672
+ key: key
1673
+ },
1674
+ template_id: templateId
1675
+ }, transloaditOpts),
1676
+ waitForEncoding: waitForEncoding
1677
+ });
1678
+ } else if (transport === 'tus') {
1679
+ newUppy.use(uppyTransport, _objectSpread({
1680
+ endpoint: '/tus',
1681
+ resume: true,
1682
+ retryDelays: [0, 1000, 3000, 5000]
1683
+ }, tus));
1684
+ } else if (transport === 'xhr') {
1685
+ newUppy.use(uppyTransport, _objectSpread({
1686
+ endpoint: isString(xhr) ? xhr : '/upload'
1687
+ }, isObject(xhr) ? xhr : null));
1688
+ }
1689
+
1690
+ if (transport === 'transloadit' || companion !== null) {
1691
+ return customSources.reduce(function (currentUppy, sourceId) {
1692
+ var source = uppySources[sourceId] || null;
1693
+
1694
+ if (source === null) {
1695
+ return currentUppy;
1696
+ }
1697
+
1698
+ var _ref8 = companion || {
1699
+ url: uppyTransport.COMPANION || null,
1700
+ allowedHosts: uppyTransport.COMPANION_PATTERN || null
1701
+ },
1702
+ companionUrl = _ref8.url,
1703
+ companionAllowedHosts = _ref8.allowedHosts;
1704
+
1705
+ return newUppy.use(source, {
1706
+ id: sourceId,
1707
+ companionUrl: companionUrl,
1708
+ companionAllowedHosts: companionAllowedHosts
1709
+ });
1710
+ }, newUppy);
1711
+ }
1712
+
1713
+ return newUppy;
1714
+ };
1715
+ }, [id, Uppy, uppyLocale, uppyTransport, uppySources, transport, sources, transloadit, companion, tus, xhr]);
1716
+ var value = useMemo(function () {
1717
+ return {
1718
+ id: id,
1719
+ transport: transport,
1720
+ locale: locale,
1721
+ sources: sources,
1722
+ transloadit: transloadit,
1723
+ companion: companion,
1724
+ tus: tus,
1725
+ xhr: xhr,
1726
+ Uppy: Uppy,
1727
+ uppyTransport: uppyTransport,
1728
+ uppySources: uppySources,
1729
+ uppyLocale: uppyLocale,
1730
+ buildUppy: buildUppy
1731
+ };
1732
+ }, [id, transport, locale, sources, transloadit, companion, tus, xhr, Uppy, uppyTransport, uppySources, uppyLocale, buildUppy]);
1733
+ return /*#__PURE__*/React.createElement(UppyContext.Provider, {
1734
+ value: value
1735
+ }, children);
1736
+ };
1737
+ UppyProvider.propTypes = propTypes;
1738
+ UppyProvider.defaultProps = defaultProps;
1739
+
1740
+ export { APP_NAMESPACE, ComponentsContext, ComponentsProvider, DISPLAYS_NAMESPACE, DefinitionProvider, FIELDS_NAMESPACE, FILTERS_NAMESPACE, FORMS_NAMESPACE, FieldsContext, FieldsProvider, FontsContext, FontsProvider, FormProvider, GoogleApiClientContext, GoogleApiClientProvider, GoogleKeysContext, GoogleKeysProvider, GoogleMapsClientContext, GoogleMapsClientProvider, LISTS_NAMESPACE, LocalesContext, LocalesProvider, MODALS_NAMESPACE, ModalsContext, ModalsProvider, PanelsContext, PanelsProvider, PanneauProvider, ResourceProvider, RoutesContext, RoutesProvider, TrackingProvider, UppyContext, UppyProvider, useAppComponent, useAppComponents, useAppComponentsManager, useComponent, useComponents, useComponentsManager, useDefinition, useDefinitionContext, useDisplayComponent, useDisplaysComponents, useDisplaysComponentsManager, useField, useFieldComponent, useFields, useFieldsComponents, useFieldsComponentsManager, useFieldsManager, useFilterComponent, useFiltersComponents, useFiltersComponentsManager, useFonts, useForm, useFormComponent, useFormSetValue, useFormValue, useFormsComponents, useFormsComponentsManager, useGoogleApiClient, useGoogleFonts, useGoogleKeys, useGoogleMapsClient, useListComponent, useListsComponents, useListsComponentsManager, useLocales, useModalComponent, useModals, useModalsComponents, useModalsComponentsManager, useOtherLocales, usePanels, usePanneau, usePanneauAuth, usePanneauColorScheme, usePanneauComponent, usePanneauComponents, usePanneauResource, usePanneauResources, usePanneauSettings, useResource, useRouteBack, useRoutePush, useRoutes, useTracking, useUppy, useUrlGenerator, withGoogleApiClient, withGoogleMapsClient, withModals, withPanels };