@micromag/core 0.3.767 → 0.3.769

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,1802 @@
1
+ 'use strict';
2
+
3
+ var _objectSpread = require('@babel/runtime/helpers/objectSpread2');
4
+ var isString = require('lodash/isString');
5
+ var PropTypes = require('prop-types');
6
+ var React = require('react');
7
+ var core = require('@micromag/core');
8
+ var _slicedToArray = require('@babel/runtime/helpers/slicedToArray');
9
+ var JSCookie = require('js-cookie');
10
+ var reactIntl = require('react-intl');
11
+ var _defineProperty = require('@babel/runtime/helpers/defineProperty');
12
+ var _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');
13
+ var uniqBy = require('lodash/uniqBy');
14
+ var fetch = require('@folklore/fetch');
15
+ var isObject = require('lodash/isObject');
16
+ var services = require('@folklore/services');
17
+ var utils = require('@micromag/core/utils');
18
+ var routes = require('@folklore/routes');
19
+ var wouter = require('wouter');
20
+ var tracking = require('@folklore/tracking');
21
+ var EventEmitter = require('wolfy87-eventemitter');
22
+
23
+ var MODALS_NAMESPACE = 'modals';
24
+ var FIELDS_NAMESPACE = 'fields';
25
+ var FORMS_NAMESPACE = 'forms';
26
+ var SCREENS_NAMESPACE = 'screens';
27
+ var ELEMENTS_NAMESPACE = 'elements';
28
+ var ComponentsContext = /*#__PURE__*/React.createContext(null);
29
+
30
+ /**
31
+ * Hooks
32
+ */
33
+ var useComponentsManager = function useComponentsManager() {
34
+ var namespace = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
35
+ var manager = React.useContext(ComponentsContext);
36
+ var finalManager = React.useMemo(function () {
37
+ return namespace !== null ? new core.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
+ var manager = useComponentsManager(namespace);
51
+ return React.useMemo(function () {
52
+ if (!isString(name)) {
53
+ return name || defaultComponent;
54
+ }
55
+ return manager.getComponent(name) || defaultComponent;
56
+ }, [manager, name, defaultComponent]);
57
+ };
58
+
59
+ /**
60
+ * Fields hooks
61
+ */
62
+ var useFieldsComponentsManager = function useFieldsComponentsManager() {
63
+ return useComponentsManager(FIELDS_NAMESPACE);
64
+ };
65
+ var useFieldsComponents = function useFieldsComponents() {
66
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
67
+ return useComponents(FIELDS_NAMESPACE, defaultComponents);
68
+ };
69
+ var useFieldComponent = function useFieldComponent(name) {
70
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
71
+ return useComponent(name, defaultComponent, FIELDS_NAMESPACE);
72
+ };
73
+
74
+ /**
75
+ * Screens hooks
76
+ */
77
+ var useScreensComponentsManager = function useScreensComponentsManager() {
78
+ return useComponentsManager(SCREENS_NAMESPACE);
79
+ };
80
+ var useScreensComponents = function useScreensComponents() {
81
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
82
+ return useComponents(SCREENS_NAMESPACE, defaultComponents);
83
+ };
84
+ var useScreenComponent = function useScreenComponent(name) {
85
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
86
+ return useComponent(name, defaultComponent, SCREENS_NAMESPACE);
87
+ };
88
+
89
+ /**
90
+ * Forms hooks
91
+ */
92
+ var useFormsComponentsManager = function useFormsComponentsManager() {
93
+ return useComponentsManager(FORMS_NAMESPACE);
94
+ };
95
+ var useFormsComponents = function useFormsComponents() {
96
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
97
+ return useComponents(FORMS_NAMESPACE, defaultComponents);
98
+ };
99
+ var useFormComponent = function useFormComponent(name) {
100
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
101
+ return useComponent(name, defaultComponent, FORMS_NAMESPACE);
102
+ };
103
+
104
+ /**
105
+ * Modals hooks
106
+ */
107
+ var useModalsComponentsManager = function useModalsComponentsManager() {
108
+ return useComponentsManager(MODALS_NAMESPACE);
109
+ };
110
+ var useModalsComponents = function useModalsComponents() {
111
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
112
+ return useComponents(MODALS_NAMESPACE, defaultComponents);
113
+ };
114
+ var useModalComponent = function useModalComponent(name) {
115
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
116
+ return useComponent(name, defaultComponent, MODALS_NAMESPACE);
117
+ };
118
+
119
+ /**
120
+ * Elements hooks
121
+ */
122
+ var useElementsComponentsManager = function useElementsComponentsManager() {
123
+ return useComponentsManager(ELEMENTS_NAMESPACE);
124
+ };
125
+ var useElementsComponents = function useElementsComponents() {
126
+ var defaultComponents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
127
+ return useComponents(ELEMENTS_NAMESPACE, defaultComponents);
128
+ };
129
+ var useElementComponent = function useElementComponent(name) {
130
+ var defaultComponent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
131
+ return useComponent(name, defaultComponent, ELEMENTS_NAMESPACE);
132
+ };
133
+
134
+ /**
135
+ * Provider
136
+ */
137
+ var propTypes$j = {
138
+ children: PropTypes.node.isRequired,
139
+ namespace: PropTypes.string,
140
+ manager: PropTypes.instanceOf(core.ComponentsManager),
141
+ components: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.object, PropTypes.func]))
142
+ };
143
+ var defaultProps$j = {
144
+ namespace: null,
145
+ components: {},
146
+ manager: null
147
+ };
148
+ var ComponentsProvider = function ComponentsProvider(_ref) {
149
+ var components = _ref.components,
150
+ manager = _ref.manager,
151
+ namespace = _ref.namespace,
152
+ children = _ref.children;
153
+ var previousManager = useComponentsManager() || null;
154
+ var finalManager = React.useMemo(function () {
155
+ return new core.ComponentsManager(_objectSpread(_objectSpread(_objectSpread({}, previousManager !== null ? previousManager.getComponents() : null), manager !== null ? manager.getComponents() : null), new core.ComponentsManager(components).addNamespace(namespace).getComponents()));
156
+ }, [previousManager, manager, components, namespace]);
157
+ return /*#__PURE__*/React.createElement(ComponentsContext.Provider, {
158
+ value: finalManager
159
+ }, children);
160
+ };
161
+ ComponentsProvider.propTypes = propTypes$j;
162
+ ComponentsProvider.defaultProps = defaultProps$j;
163
+
164
+ var messages = reactIntl.defineMessages({
165
+ functionality_title: {
166
+ id: "consent.functionality_title",
167
+ defaultMessage: [{
168
+ "type": 0,
169
+ "value": "Functionnal"
170
+ }]
171
+ },
172
+ functionality_description: {
173
+ id: "consent.functionality_description",
174
+ defaultMessage: [{
175
+ "type": 0,
176
+ "value": "Cookies required for the site to function properly."
177
+ }]
178
+ },
179
+ analytics_title: {
180
+ id: "consent.analytics_title",
181
+ defaultMessage: [{
182
+ "type": 0,
183
+ "value": "Analytics"
184
+ }]
185
+ },
186
+ analytics_description: {
187
+ id: "consent.analytics_description",
188
+ defaultMessage: [{
189
+ "type": 0,
190
+ "value": "Cookies used to measure user behavior."
191
+ }]
192
+ },
193
+ ad_storage_title: {
194
+ id: "consent.ad_storage_title",
195
+ defaultMessage: [{
196
+ "type": 0,
197
+ "value": "Ad Storage"
198
+ }]
199
+ },
200
+ ad_storage_description: {
201
+ id: "consent.ad_storage_description",
202
+ defaultMessage: [{
203
+ "type": 0,
204
+ "value": "Cookies used for advertising purposes."
205
+ }]
206
+ },
207
+ ad_personalization_title: {
208
+ id: "consent.ad_personalization_title",
209
+ defaultMessage: [{
210
+ "type": 0,
211
+ "value": "Ad Personalization"
212
+ }]
213
+ },
214
+ ad_personalization_description: {
215
+ id: "consent.ad_personalization_description",
216
+ defaultMessage: [{
217
+ "type": 0,
218
+ "value": "Cookies used for ad targeting."
219
+ }]
220
+ },
221
+ ad_user_data_title: {
222
+ id: "consent.ad_user_data_title",
223
+ defaultMessage: [{
224
+ "type": 0,
225
+ "value": "User Ad Data"
226
+ }]
227
+ },
228
+ ad_user_data_description: {
229
+ id: "consent.ad_user_data_description",
230
+ defaultMessage: [{
231
+ "type": 0,
232
+ "value": "Cookies used for user-specific ad data."
233
+ }]
234
+ },
235
+ personalization_storage_title: {
236
+ id: "consent.personalization_storage_title",
237
+ defaultMessage: [{
238
+ "type": 0,
239
+ "value": "Personalization Storage"
240
+ }]
241
+ },
242
+ personalization_storage_description: {
243
+ id: "consent.personalization_storage_description",
244
+ defaultMessage: [{
245
+ "type": 0,
246
+ "value": "Cookies used for personalizing user experience."
247
+ }]
248
+ },
249
+ security_storage_title: {
250
+ id: "consent.security_storage_title",
251
+ defaultMessage: [{
252
+ "type": 0,
253
+ "value": "Security Storage"
254
+ }]
255
+ },
256
+ security_storage_description: {
257
+ id: "consent.security_storage_description",
258
+ defaultMessage: [{
259
+ "type": 0,
260
+ "value": "Cookies used for security purposes."
261
+ }]
262
+ }
263
+ });
264
+ var consentStates = [{
265
+ id: 'functionality_storage',
266
+ label: messages.functionality_title,
267
+ description: messages.functionality_description,
268
+ value: true,
269
+ disabled: true
270
+ }, {
271
+ id: 'security_storage',
272
+ label: messages.security_storage_title,
273
+ description: messages.security_storage_description,
274
+ value: true
275
+ }, {
276
+ id: 'personalization_storage',
277
+ label: messages.personalization_storage_title,
278
+ description: messages.personalization_storage_description,
279
+ value: false
280
+ }, {
281
+ id: 'analytics_storage',
282
+ label: messages.analytics_title,
283
+ description: messages.analytics_description,
284
+ value: false
285
+ }, {
286
+ id: 'ad_storage',
287
+ label: messages.ad_storage_title,
288
+ description: messages.ad_storage_description,
289
+ value: false
290
+ }, {
291
+ id: 'ad_personalization',
292
+ label: messages.ad_personalization_title,
293
+ description: messages.ad_personalization_description,
294
+ value: false
295
+ }, {
296
+ id: 'ad_user_data',
297
+ label: messages.ad_user_data_title,
298
+ description: messages.ad_user_data_description,
299
+ value: false
300
+ }];
301
+ var ConsentContext = /*#__PURE__*/React.createContext({
302
+ consent: null,
303
+ setConsent: function setConsent() {}
304
+ });
305
+ var useConsent = function useConsent() {
306
+ return React.useContext(ConsentContext);
307
+ };
308
+ var propTypes$i = {
309
+ children: PropTypes.node.isRequired,
310
+ consent: PropTypes.arrayOf(PropTypes.shape({})),
311
+ consented: PropTypes.bool,
312
+ expiration: PropTypes.number
313
+ };
314
+ var defaultProps$i = {
315
+ consent: ['functionality_storage', 'analytics_storage', 'ad_storage', 'ad_personalization', 'ad_user_data'],
316
+ consented: null,
317
+ expiration: 182 // Default expiration in days
318
+ };
319
+ var ConsentProvider = function ConsentProvider(_ref) {
320
+ var providedConsent = _ref.consent,
321
+ initialConsented = _ref.consented,
322
+ expiration = _ref.expiration,
323
+ children = _ref.children;
324
+ // Has consented or not to cookies
325
+ var initialCookieConsented = JSCookie.get('has_consented') === 'true';
326
+ var baseConsented = initialConsented || initialCookieConsented;
327
+ var _useState = React.useState(baseConsented),
328
+ _useState2 = _slicedToArray(_useState, 2),
329
+ consented = _useState2[0],
330
+ setConsentedState = _useState2[1];
331
+ var setConsented = React.useCallback(function () {
332
+ var accept = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
333
+ var hasConsented = accept || false;
334
+ JSCookie.set('has_consented', hasConsented, {
335
+ secure: true,
336
+ expires: expiration
337
+ });
338
+ setConsentedState(hasConsented);
339
+ }, [expiration, setConsentedState]);
340
+ React.useEffect(function () {
341
+ if (initialConsented === true || initialConsented === false) {
342
+ setConsented(initialConsented);
343
+ }
344
+ }, [initialConsented, setConsented]);
345
+
346
+ // The consent state itself
347
+ var baseConsent = React.useMemo(function () {
348
+ return (providedConsent || consentStates || []).map(function (item) {
349
+ if (isString(item)) {
350
+ return (consentStates || []).find(function (it) {
351
+ return it.id === item;
352
+ }) || null;
353
+ }
354
+ return item || null;
355
+ }).filter(function (it) {
356
+ return it !== null;
357
+ }).map(function (it) {
358
+ return _objectSpread(_objectSpread({}, it), {}, {
359
+ value:
360
+ // eslint-disable-next-line no-nested-ternary
361
+ JSCookie.get(it.id) === 'granted' ? true : JSCookie.get(it.id) === 'denied' ? false : it.value
362
+ });
363
+ });
364
+ }, [providedConsent]);
365
+ var _useState3 = React.useState(null),
366
+ _useState4 = _slicedToArray(_useState3, 2),
367
+ consent = _useState4[0],
368
+ setConsentState = _useState4[1];
369
+ var setConsent = React.useCallback(function () {
370
+ var values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
371
+ var initial = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
372
+ var tagManagerConsent = (values || []).reduce(function (acc, it) {
373
+ if (it.value === true) {
374
+ JSCookie.set(it.id, 'granted', {
375
+ secure: true,
376
+ expires: expiration
377
+ });
378
+ acc[it.id] = 'granted';
379
+ } else if (it.value === false) {
380
+ JSCookie.set(it.id, 'denied', {
381
+ secure: true,
382
+ expires: expiration
383
+ });
384
+ acc[it.id] = 'denied';
385
+ } else {
386
+ JSCookie.remove(it.id);
387
+ acc[it.id] = 'denied';
388
+ }
389
+ return acc;
390
+ }, {});
391
+ if (typeof window !== 'undefined' && typeof window.gtag === 'function') {
392
+ window.gtag('consent', initial === true ? 'default' : 'update', tagManagerConsent);
393
+ window.gtag('event', initial === true ? 'consent_default' : 'consent_update', tagManagerConsent);
394
+ console.log('consent', initial === true ? 'default' : 'update', tagManagerConsent);
395
+ }
396
+ setConsentState(values);
397
+ }, [setConsentState, expiration]);
398
+ React.useEffect(function () {
399
+ if (baseConsent !== null && baseConsent.length > 0) {
400
+ setConsent(baseConsent);
401
+ }
402
+ }, [baseConsent, setConsent]);
403
+ var value = React.useMemo(function () {
404
+ return {
405
+ consent: consent,
406
+ setConsent: setConsent,
407
+ consented: consented,
408
+ setConsented: setConsented
409
+ };
410
+ }, [consent, setConsent, consented, setConsented]);
411
+ return /*#__PURE__*/React.createElement(ConsentContext.Provider, {
412
+ value: value
413
+ }, children);
414
+ };
415
+ ConsentProvider.propTypes = propTypes$i;
416
+ ConsentProvider.defaultProps = defaultProps$i;
417
+
418
+ var FieldsContext = /*#__PURE__*/React.createContext(null);
419
+ var useFieldsManager = function useFieldsManager() {
420
+ return React.useContext(FieldsContext);
421
+ };
422
+ var useFieldDefinition = function useFieldDefinition(id) {
423
+ var manager = useFieldsManager();
424
+ return manager.getDefinition(id);
425
+ };
426
+ var propTypes$h = {
427
+ fields: core.PropTypes.fieldDefinitions,
428
+ manager: PropTypes.instanceOf(core.FieldsManager),
429
+ children: PropTypes.node.isRequired
430
+ };
431
+ var defaultProps$h = {
432
+ fields: null,
433
+ manager: null
434
+ };
435
+ var FieldsProvider = function FieldsProvider(_ref) {
436
+ var fields = _ref.fields,
437
+ manager = _ref.manager,
438
+ children = _ref.children;
439
+ var previousManager = useFieldsManager() || null;
440
+ var finalManager = React.useMemo(function () {
441
+ var newFields = uniqBy([].concat(_toConsumableArray(fields || []), _toConsumableArray(manager !== null ? manager.getDefinitions() : []), _toConsumableArray(previousManager !== null ? previousManager.getDefinitions() : [])), function (_ref2) {
442
+ var id = _ref2.id;
443
+ return id;
444
+ }).reverse();
445
+ return new core.FieldsManager(newFields);
446
+ }, [previousManager, manager, fields]);
447
+ var components = React.useMemo(function () {
448
+ var newComponents = finalManager.getComponents();
449
+ return Object.keys(newComponents).reduce(function (map, id) {
450
+ var component = newComponents[id];
451
+ return isString(component) ? map : _objectSpread(_objectSpread({}, map), {}, _defineProperty({}, id, component));
452
+ }, {});
453
+ }, [finalManager]);
454
+ return /*#__PURE__*/React.createElement(FieldsContext.Provider, {
455
+ value: finalManager
456
+ }, /*#__PURE__*/React.createElement(ComponentsProvider, {
457
+ namespace: FIELDS_NAMESPACE,
458
+ components: components
459
+ }, children));
460
+ };
461
+ FieldsProvider.propTypes = propTypes$h;
462
+ FieldsProvider.defaultProps = defaultProps$h;
463
+
464
+ var ScreensContext = /*#__PURE__*/React.createContext(new core.ScreensManager());
465
+ var useScreensManager = function useScreensManager() {
466
+ return React.useContext(ScreensContext);
467
+ };
468
+ var propTypes$g = {
469
+ screens: core.PropTypes.screenDefinitions,
470
+ namespaces: PropTypes.arrayOf(PropTypes.string),
471
+ filterNamespaces: PropTypes.bool,
472
+ manager: PropTypes.instanceOf(core.ScreensManager),
473
+ children: PropTypes.node.isRequired
474
+ };
475
+ var defaultProps$g = {
476
+ screens: null,
477
+ namespaces: null,
478
+ filterNamespaces: false,
479
+ manager: null
480
+ };
481
+ var ScreensProvider = function ScreensProvider(_ref) {
482
+ var screens = _ref.screens,
483
+ namespaces = _ref.namespaces,
484
+ filterNamespaces = _ref.filterNamespaces,
485
+ manager = _ref.manager,
486
+ children = _ref.children;
487
+ var previousManager = useScreensManager();
488
+ var finalManager = React.useMemo(function () {
489
+ var newManager = manager !== null ? manager : new core.ScreensManager(screens);
490
+ if ((previousManager || null) !== null) {
491
+ newManager = previousManager.merge(newManager);
492
+ }
493
+ if (filterNamespaces) {
494
+ newManager = previousManager.filter(function (_ref2) {
495
+ var _ref2$namespaces = _ref2.namespaces,
496
+ screenGroups = _ref2$namespaces === void 0 ? null : _ref2$namespaces;
497
+ return screenGroups === null || namespaces !== null && screenGroups.reduce(function (acc, id) {
498
+ return acc || namespaces.indexOf(id) !== -1;
499
+ }, false);
500
+ });
501
+ }
502
+ return newManager;
503
+ }, [manager, screens, namespaces, filterNamespaces, previousManager]);
504
+ var initialComponents = React.useMemo(function () {
505
+ return finalManager.getComponents();
506
+ }, [finalManager]);
507
+ var _useState = React.useState(initialComponents),
508
+ _useState2 = _slicedToArray(_useState, 2),
509
+ components = _useState2[0],
510
+ setComponents = _useState2[1];
511
+ React.useEffect(function () {
512
+ var onChange = function onChange() {
513
+ return setComponents(finalManager.getComponents());
514
+ };
515
+ finalManager.on('change', onChange);
516
+ return function () {
517
+ finalManager.off('change', onChange);
518
+ };
519
+ }, [finalManager, setComponents]);
520
+ return /*#__PURE__*/React.createElement(ScreensContext.Provider, {
521
+ value: finalManager
522
+ }, /*#__PURE__*/React.createElement(ComponentsProvider, {
523
+ namespace: SCREENS_NAMESPACE,
524
+ components: components
525
+ }, children));
526
+ };
527
+ ScreensProvider.propTypes = propTypes$g;
528
+ ScreensProvider.defaultProps = defaultProps$g;
529
+
530
+ var StoryContext = /*#__PURE__*/React.createContext(null);
531
+ var useStoryContext = function useStoryContext() {
532
+ return React.useContext(StoryContext);
533
+ };
534
+ var useStory = function useStory() {
535
+ var story = useStoryContext();
536
+ return story;
537
+ };
538
+ var propTypes$f = {
539
+ story: PropTypes.oneOfType([core.PropTypes.story, core.PropTypes.theme]),
540
+ children: PropTypes.node.isRequired
541
+ };
542
+ var defaultProps$f = {
543
+ story: null
544
+ };
545
+ var StoryProvider = function StoryProvider(_ref) {
546
+ var story = _ref.story,
547
+ children = _ref.children;
548
+ return /*#__PURE__*/React.createElement(StoryContext.Provider, {
549
+ value: story
550
+ }, children);
551
+ };
552
+ StoryProvider.propTypes = propTypes$f;
553
+ StoryProvider.defaultProps = defaultProps$f;
554
+
555
+ var EditorContext = /*#__PURE__*/React.createContext(null);
556
+ var useEditor = function useEditor() {
557
+ return React.useContext(EditorContext);
558
+ };
559
+ var useGetColors = function useGetColors() {
560
+ var _ref = useEditor() || {},
561
+ _ref$getColors = _ref.getColors,
562
+ getColors = _ref$getColors === void 0 ? function () {
563
+ return [];
564
+ } : _ref$getColors;
565
+ return getColors;
566
+ };
567
+ var propTypes$e = {
568
+ children: PropTypes.node.isRequired
569
+ };
570
+ var defaultProps$e = {};
571
+ var EditorProvider = function EditorProvider(_ref2) {
572
+ var children = _ref2.children;
573
+ var story = useStory();
574
+ var screensManager = useScreensManager();
575
+ var fieldsManager = useFieldsManager();
576
+ var parser = React.useMemo(function () {
577
+ return new core.ColorsParser({
578
+ screensManager: screensManager,
579
+ fieldsManager: fieldsManager
580
+ });
581
+ }, [screensManager, fieldsManager]);
582
+ var parse = React.useCallback(function (currentStory) {
583
+ return parser.parse(currentStory);
584
+ }, [parser]);
585
+ var getColors = React.useCallback(function () {
586
+ return parse(story);
587
+ }, [parse, story]);
588
+
589
+ // eslint-disable-next-line react/jsx-no-constructed-context-values
590
+ return /*#__PURE__*/React.createElement(EditorContext.Provider, {
591
+ value: {
592
+ getColors: getColors
593
+ }
594
+ }, children);
595
+ };
596
+ EditorProvider.propTypes = propTypes$e;
597
+ EditorProvider.defaultProps = defaultProps$e;
598
+
599
+ /* eslint-disable react/jsx-props-no-spreading */
600
+ var FieldsValueContext = /*#__PURE__*/React.createContext(null);
601
+ var useFieldsValue = function useFieldsValue() {
602
+ return React.useContext(FieldsValueContext);
603
+ };
604
+ var propTypes$d = {
605
+ value: PropTypes.any,
606
+ // eslint-disable-line react/forbid-prop-types
607
+ children: PropTypes.node.isRequired
608
+ };
609
+ var defaultProps$d = {
610
+ value: null
611
+ };
612
+ var FieldsValueContextProvider = function FieldsValueContextProvider(_ref) {
613
+ var value = _ref.value,
614
+ children = _ref.children;
615
+ return /*#__PURE__*/React.createElement(FieldsValueContext.Provider, {
616
+ value: value
617
+ }, children);
618
+ };
619
+ FieldsValueContextProvider.propTypes = propTypes$d;
620
+ FieldsValueContextProvider.defaultProps = defaultProps$d;
621
+
622
+ /* eslint-disable react/jsx-props-no-spreading */
623
+ var FieldContext = /*#__PURE__*/React.createContext(null);
624
+ var useFieldContext = function useFieldContext() {
625
+ return React.useContext(FieldContext);
626
+ };
627
+ var propTypes$c = {
628
+ context: PropTypes.any,
629
+ // eslint-disable-line react/forbid-prop-types
630
+ children: PropTypes.node.isRequired
631
+ };
632
+ var defaultProps$c = {
633
+ context: null
634
+ };
635
+ var FieldContextProvider = function FieldContextProvider(_ref) {
636
+ var context = _ref.context,
637
+ children = _ref.children;
638
+ return /*#__PURE__*/React.createElement(FieldContext.Provider, {
639
+ value: context
640
+ }, children);
641
+ };
642
+ FieldContextProvider.propTypes = propTypes$c;
643
+ FieldContextProvider.defaultProps = defaultProps$c;
644
+
645
+ /* eslint-disable react/jsx-props-no-spreading */
646
+ var GoogleKeysContext = /*#__PURE__*/React.createContext({
647
+ apiKey: null
648
+ });
649
+ var useGoogleKeys = function useGoogleKeys() {
650
+ return React.useContext(GoogleKeysContext);
651
+ };
652
+ var propTypes$b = {
653
+ children: PropTypes.node.isRequired,
654
+ apiKey: PropTypes.string // .isRequired,
655
+ };
656
+ var defaultProps$b = {
657
+ apiKey: null
658
+ };
659
+ var GoogleKeysProvider = function GoogleKeysProvider(_ref) {
660
+ var children = _ref.children,
661
+ apiKey = _ref.apiKey;
662
+ var _useGoogleKeys = useGoogleKeys(),
663
+ previousApiKey = _useGoogleKeys.apiKey;
664
+ var value = React.useMemo(function () {
665
+ return {
666
+ apiKey: apiKey || previousApiKey
667
+ };
668
+ }, [apiKey, previousApiKey]);
669
+ return /*#__PURE__*/React.createElement(GoogleKeysContext.Provider, {
670
+ value: value
671
+ }, children);
672
+ };
673
+ GoogleKeysProvider.propTypes = propTypes$b;
674
+ GoogleKeysProvider.defaultProps = defaultProps$b;
675
+
676
+ var FontsContext = /*#__PURE__*/React.createContext({
677
+ systemFonts: null,
678
+ googleFonts: null,
679
+ customFonts: null
680
+ });
681
+ var useGoogleFonts = function useGoogleFonts() {
682
+ var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
683
+ _ref$disabled = _ref.disabled,
684
+ disabled = _ref$disabled === void 0 ? false : _ref$disabled,
685
+ _ref$setFonts = _ref.setFonts,
686
+ setFonts = _ref$setFonts === void 0 ? null : _ref$setFonts;
687
+ var _useGoogleKeys = useGoogleKeys(),
688
+ apiKey = _useGoogleKeys.apiKey;
689
+ var _useState = React.useState(null),
690
+ _useState2 = _slicedToArray(_useState, 2),
691
+ googleFonts = _useState2[0],
692
+ setGoogleFonts = _useState2[1];
693
+ React.useEffect(function () {
694
+ var canceled = false;
695
+ if (apiKey !== null && !disabled) {
696
+ fetch.getJSON("https://www.googleapis.com/webfonts/v1/webfonts?key=".concat(apiKey, "&sort=popularity")).then(function (_ref2) {
697
+ var _ref2$items = _ref2.items,
698
+ items = _ref2$items === void 0 ? [] : _ref2$items;
699
+ if (!canceled) {
700
+ var newFonts = items.map(function (it) {
701
+ return {
702
+ type: 'google',
703
+ name: it.family,
704
+ variants: it.variants
705
+ };
706
+ });
707
+ if (setFonts !== null) {
708
+ setFonts(newFonts);
709
+ } else {
710
+ setGoogleFonts(newFonts);
711
+ }
712
+ }
713
+ });
714
+ }
715
+ return function () {
716
+ canceled = true;
717
+ };
718
+ }, [apiKey, disabled, setFonts, setGoogleFonts]);
719
+ return googleFonts;
720
+ };
721
+ var useFonts = function useFonts() {
722
+ var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
723
+ _ref3$withoutGoogleFo = _ref3.withoutGoogleFonts,
724
+ withoutGoogleFonts = _ref3$withoutGoogleFo === void 0 ? false : _ref3$withoutGoogleFo;
725
+ var _useContext = React.useContext(FontsContext),
726
+ _useContext$setGoogle = _useContext.setGoogleFonts,
727
+ setGoogleFonts = _useContext$setGoogle === void 0 ? null : _useContext$setGoogle,
728
+ _useContext$systemFon = _useContext.systemFonts,
729
+ systemFonts = _useContext$systemFon === void 0 ? null : _useContext$systemFon,
730
+ _useContext$googleFon = _useContext.googleFonts,
731
+ googleFonts = _useContext$googleFon === void 0 ? null : _useContext$googleFon,
732
+ _useContext$customFon = _useContext.customFonts,
733
+ customFonts = _useContext$customFon === void 0 ? null : _useContext$customFon;
734
+ useGoogleFonts({
735
+ disabled: withoutGoogleFonts || googleFonts !== null && googleFonts.length > 0,
736
+ setFonts: setGoogleFonts
737
+ });
738
+ var fonts = React.useMemo(function () {
739
+ return {
740
+ systemFonts: systemFonts,
741
+ googleFonts: googleFonts,
742
+ customFonts: customFonts
743
+ };
744
+ }, [systemFonts, googleFonts, customFonts]);
745
+ return fonts;
746
+ };
747
+ var propTypes$a = {
748
+ children: PropTypes.node.isRequired,
749
+ systemFonts: core.PropTypes.fonts,
750
+ customFonts: core.PropTypes.fonts
751
+ };
752
+ var defaultProps$a = {
753
+ systemFonts: ['Arial', 'Courier New', 'Georgia', 'Times New Roman', 'Verdana'],
754
+ customFonts: null
755
+ };
756
+ var FontsProvider = function FontsProvider(_ref4) {
757
+ var systemFonts = _ref4.systemFonts,
758
+ customFonts = _ref4.customFonts,
759
+ children = _ref4.children;
760
+ var _useFonts = useFonts(),
761
+ _useFonts$systemFonts = _useFonts.systemFonts,
762
+ previousSystemFonts = _useFonts$systemFonts === void 0 ? null : _useFonts$systemFonts,
763
+ _useFonts$googleFonts = _useFonts.googleFonts,
764
+ previousGoogleFonts = _useFonts$googleFonts === void 0 ? null : _useFonts$googleFonts,
765
+ previousCustomFonts = _useFonts.customFonts;
766
+ var _useState3 = React.useState(null),
767
+ _useState4 = _slicedToArray(_useState3, 2),
768
+ googleFonts = _useState4[0],
769
+ setGoogleFonts = _useState4[1];
770
+ var fonts = React.useMemo(function () {
771
+ return {
772
+ systemFonts: uniqBy([].concat(_toConsumableArray(previousSystemFonts || []), _toConsumableArray(systemFonts || [])), function (font) {
773
+ return isObject(font) ? font.name : font;
774
+ }),
775
+ googleFonts: uniqBy([].concat(_toConsumableArray(previousGoogleFonts || []), _toConsumableArray(googleFonts || [])), function (font) {
776
+ return isObject(font) ? font.name : font;
777
+ }),
778
+ customFonts: uniqBy([].concat(_toConsumableArray(previousCustomFonts || []), _toConsumableArray(customFonts || [])), function (font) {
779
+ return isObject(font) ? font.name : font;
780
+ }),
781
+ setGoogleFonts: setGoogleFonts
782
+ };
783
+ }, [previousSystemFonts, previousGoogleFonts, previousCustomFonts, customFonts, systemFonts, googleFonts, setGoogleFonts]);
784
+ return /*#__PURE__*/React.createElement(FontsContext.Provider, {
785
+ value: fonts
786
+ }, children);
787
+ };
788
+ FontsProvider.propTypes = propTypes$a;
789
+ FontsProvider.defaultProps = defaultProps$a;
790
+
791
+ var GoogleApiClientContext = /*#__PURE__*/React.createContext(null);
792
+ var useGoogleApiClient = function useGoogleApiClient() {
793
+ return React.useContext(GoogleApiClientContext);
794
+ };
795
+ var withGoogleApiClient = function withGoogleApiClient(WrappedComponent) {
796
+ var getDisplayName = function getDisplayName(_ref) {
797
+ var _ref$displayName = _ref.displayName,
798
+ displayName = _ref$displayName === void 0 ? null : _ref$displayName,
799
+ _ref$name = _ref.name,
800
+ name = _ref$name === void 0 ? null : _ref$name;
801
+ return displayName || name || 'Component';
802
+ };
803
+ var WithGoogleApiClientComponent = function WithGoogleApiClientComponent(props) {
804
+ return /*#__PURE__*/React.createElement(GoogleApiClientContext.Consumer, null, function (client) {
805
+ return /*#__PURE__*/React.createElement(WrappedComponent, Object.assign({
806
+ googleApiClient: client
807
+ }, props));
808
+ });
809
+ };
810
+ WithGoogleApiClientComponent.displayName = "WithGoogleApiClient(".concat(getDisplayName(WrappedComponent), ")");
811
+ return WithGoogleApiClientComponent;
812
+ };
813
+ var propTypes$9 = {
814
+ children: PropTypes.node.isRequired
815
+ };
816
+ var defaultProps$9 = {};
817
+ var GoogleApiClientProvider = function GoogleApiClientProvider(_ref2) {
818
+ var children = _ref2.children;
819
+ var _useGoogleKeys = useGoogleKeys(),
820
+ apiKey = _useGoogleKeys.apiKey;
821
+ var _useState = React.useState(null),
822
+ _useState2 = _slicedToArray(_useState, 2),
823
+ client = _useState2[0],
824
+ setClient = _useState2[1];
825
+ React.useEffect(function () {
826
+ services.loadGoogleApi().then(function (gapi) {
827
+ return gapi.client.init({
828
+ apiKey: apiKey
829
+ }).then(function () {
830
+ return gapi;
831
+ });
832
+ }).then(function (gapi) {
833
+ return setClient(gapi);
834
+ });
835
+ }, [apiKey, setClient]);
836
+ return /*#__PURE__*/React.createElement(GoogleApiClientContext.Provider, {
837
+ value: client
838
+ }, children);
839
+ };
840
+ GoogleApiClientProvider.propTypes = propTypes$9;
841
+ GoogleApiClientProvider.defaultProps = defaultProps$9;
842
+
843
+ var GoogleMapsClientContext = /*#__PURE__*/React.createContext(null);
844
+ var useGoogleMapsClient = function useGoogleMapsClient() {
845
+ return React.useContext(GoogleMapsClientContext);
846
+ };
847
+ var withGoogleMapsClient = function withGoogleMapsClient(WrappedComponent) {
848
+ var getDisplayName = function getDisplayName(_ref) {
849
+ var _ref$displayName = _ref.displayName,
850
+ displayName = _ref$displayName === void 0 ? null : _ref$displayName,
851
+ _ref$name = _ref.name,
852
+ name = _ref$name === void 0 ? null : _ref$name;
853
+ return displayName || name || 'Component';
854
+ };
855
+ var WithGoogleMapsClientComponent = function WithGoogleMapsClientComponent(props) {
856
+ return /*#__PURE__*/React.createElement(GoogleMapsClientContext.Consumer, null, function (client) {
857
+ return /*#__PURE__*/React.createElement(WrappedComponent, Object.assign({
858
+ googleApiClient: client
859
+ }, props));
860
+ });
861
+ };
862
+ WithGoogleMapsClientComponent.displayName = "WithGoogleMapsClient(".concat(getDisplayName(WrappedComponent), ")");
863
+ return WithGoogleMapsClientComponent;
864
+ };
865
+ var propTypes$8 = {
866
+ children: PropTypes.node.isRequired,
867
+ locale: PropTypes.string,
868
+ libraries: PropTypes.arrayOf(PropTypes.string)
869
+ };
870
+ var defaultProps$8 = {
871
+ locale: 'fr',
872
+ libraries: null
873
+ };
874
+ var GoogleMapsClientProvider = function GoogleMapsClientProvider(_ref2) {
875
+ var children = _ref2.children,
876
+ locale = _ref2.locale,
877
+ libraries = _ref2.libraries;
878
+ var _useGoogleKeys = useGoogleKeys(),
879
+ apiKey = _useGoogleKeys.apiKey;
880
+ var exisitingClient = useGoogleMapsClient();
881
+ var _useState = React.useState(exisitingClient),
882
+ _useState2 = _slicedToArray(_useState, 2),
883
+ client = _useState2[0],
884
+ setClient = _useState2[1];
885
+ React.useEffect(function () {
886
+ if (exisitingClient === null) {
887
+ services.loadGoogleMaps({
888
+ apiKey: apiKey,
889
+ locale: locale,
890
+ libraries: libraries
891
+ }).then(function (newClient) {
892
+ setClient(newClient);
893
+ });
894
+ }
895
+ }, [apiKey, locale, libraries, setClient, exisitingClient]);
896
+ return /*#__PURE__*/React.createElement(GoogleMapsClientContext.Provider, {
897
+ value: client
898
+ }, children);
899
+ };
900
+ GoogleMapsClientProvider.propTypes = propTypes$8;
901
+ GoogleMapsClientProvider.defaultProps = defaultProps$8;
902
+
903
+ var ModalsContext = /*#__PURE__*/React.createContext({
904
+ container: null
905
+ });
906
+ var useModals = function useModals() {
907
+ return React.useContext(ModalsContext) || {};
908
+ };
909
+ var withModals = function withModals(WrappedComponent) {
910
+ var WithModalsComponent = function WithModalsComponent(props) {
911
+ return /*#__PURE__*/React.createElement(ModalsContext.Consumer, null, function (_ref) {
912
+ var modals = _ref.modals,
913
+ container = _ref.container,
914
+ setContainer = _ref.setContainer,
915
+ register = _ref.register,
916
+ unregister = _ref.unregister;
917
+ return /*#__PURE__*/React.createElement(WrappedComponent, Object.assign({
918
+ modalsContainer: container,
919
+ setModalsContainer: setContainer,
920
+ modals: modals,
921
+ registerModal: register,
922
+ unregisterModal: unregister
923
+ }, props));
924
+ });
925
+ };
926
+ WithModalsComponent.displayName = "WithModals(".concat(utils.getDisplayName(WrappedComponent), ")");
927
+ return WithModalsComponent;
928
+ };
929
+ var propTypes$7 = {
930
+ children: PropTypes.node.isRequired,
931
+ container: PropTypes.object // eslint-disable-line
932
+ };
933
+ var defaultProps$7 = {
934
+ container: null
935
+ };
936
+ var ModalsProvider = function ModalsProvider(_ref2) {
937
+ var children = _ref2.children,
938
+ initialContainer = _ref2.container;
939
+ var _useState = React.useState(initialContainer),
940
+ _useState2 = _slicedToArray(_useState, 2),
941
+ container = _useState2[0],
942
+ setContainer = _useState2[1];
943
+ var _useState3 = React.useState([]),
944
+ _useState4 = _slicedToArray(_useState3, 2),
945
+ modals = _useState4[0],
946
+ setModals = _useState4[1];
947
+ var modalsRef = React.useRef(modals);
948
+ var register = React.useCallback(function (id) {
949
+ var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
950
+ var currentModals = modalsRef.current;
951
+ var newModals = [].concat(_toConsumableArray(currentModals), [_objectSpread({
952
+ id: id
953
+ }, data)]);
954
+ setModals(newModals);
955
+ modalsRef.current = newModals;
956
+ }, [modals, setModals]);
957
+ var unregister = React.useCallback(function (id) {
958
+ var currentModals = modalsRef.current;
959
+ var foundIndex = currentModals.findIndex(function (_ref3) {
960
+ var modalId = _ref3.id;
961
+ return modalId === id;
962
+ });
963
+ if (foundIndex !== -1) {
964
+ var newModals = currentModals.filter(function (_ref4) {
965
+ var modalId = _ref4.id;
966
+ return modalId !== id;
967
+ });
968
+ setModals(newModals);
969
+ modalsRef.current = newModals;
970
+ }
971
+ }, [modals, setModals]);
972
+ var value = React.useMemo(function () {
973
+ return {
974
+ modals: modals,
975
+ container: container,
976
+ setContainer: setContainer,
977
+ register: register,
978
+ unregister: unregister
979
+ };
980
+ }, [modals, container, setContainer, register, unregister]);
981
+ return /*#__PURE__*/React.createElement(ModalsContext.Provider, {
982
+ value: value
983
+ }, children);
984
+ };
985
+ ModalsProvider.propTypes = propTypes$7;
986
+ ModalsProvider.defaultProps = defaultProps$7;
987
+
988
+ var PanelsContext = /*#__PURE__*/React.createContext({
989
+ container: null
990
+ });
991
+ var usePanels = function usePanels() {
992
+ return React.useContext(PanelsContext) || {};
993
+ };
994
+ var withPanels = function withPanels(WrappedComponent) {
995
+ var WithPanelsComponent = function WithPanelsComponent(props) {
996
+ return /*#__PURE__*/React.createElement(PanelsContext.Consumer, null, function (_ref) {
997
+ var panels = _ref.panels,
998
+ setContainer = _ref.setContainer,
999
+ container = _ref.container,
1000
+ register = _ref.register,
1001
+ unregister = _ref.unregister;
1002
+ return /*#__PURE__*/React.createElement(WrappedComponent, Object.assign({
1003
+ panelsContainer: container,
1004
+ setPanelsContainer: setContainer,
1005
+ panels: panels,
1006
+ registerPanel: register,
1007
+ unregisterPanel: unregister
1008
+ }, props));
1009
+ });
1010
+ };
1011
+ WithPanelsComponent.displayName = "WithPanels(".concat(utils.getDisplayName(WrappedComponent), ")");
1012
+ return WithPanelsComponent;
1013
+ };
1014
+ var propTypes$6 = {
1015
+ children: PropTypes.node.isRequired,
1016
+ container: PropTypes.object // eslint-disable-line
1017
+ };
1018
+ var defaultProps$6 = {
1019
+ container: null
1020
+ };
1021
+ var PanelsProvider = function PanelsProvider(_ref2) {
1022
+ var children = _ref2.children,
1023
+ initialContainer = _ref2.container;
1024
+ var _useState = React.useState(initialContainer),
1025
+ _useState2 = _slicedToArray(_useState, 2),
1026
+ container = _useState2[0],
1027
+ setContainer = _useState2[1];
1028
+ var _useState3 = React.useState([]),
1029
+ _useState4 = _slicedToArray(_useState3, 2),
1030
+ panels = _useState4[0],
1031
+ setPanels = _useState4[1];
1032
+ var panelsRef = React.useRef(panels);
1033
+ var register = React.useCallback(function (id) {
1034
+ var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1035
+ var currentPanels = panelsRef.current;
1036
+ var newPanels = [].concat(_toConsumableArray(currentPanels), [_objectSpread({
1037
+ id: id
1038
+ }, data)]);
1039
+ setPanels(newPanels);
1040
+ panelsRef.current = newPanels;
1041
+ }, [panels, setPanels]);
1042
+ var unregister = React.useCallback(function (id) {
1043
+ var currentPanels = panelsRef.current;
1044
+ var foundIndex = currentPanels.findIndex(function (_ref3) {
1045
+ var modalId = _ref3.id;
1046
+ return modalId === id;
1047
+ });
1048
+ if (foundIndex !== -1) {
1049
+ var newPanels = currentPanels.filter(function (_ref4) {
1050
+ var modalId = _ref4.id;
1051
+ return modalId !== id;
1052
+ });
1053
+ setPanels(newPanels);
1054
+ panelsRef.current = newPanels;
1055
+ }
1056
+ }, [panels, setPanels]);
1057
+ var value = React.useMemo(function () {
1058
+ return {
1059
+ panels: panels,
1060
+ setContainer: setContainer,
1061
+ container: container,
1062
+ register: register,
1063
+ unregister: unregister
1064
+ };
1065
+ }, [panels, setContainer, container, register, unregister]);
1066
+ return /*#__PURE__*/React.createElement(PanelsContext.Provider, {
1067
+ value: value
1068
+ }, children);
1069
+ };
1070
+ PanelsProvider.propTypes = propTypes$6;
1071
+ PanelsProvider.defaultProps = defaultProps$6;
1072
+
1073
+ var defaultControlsThemeValue = {
1074
+ seekBarOnly: false,
1075
+ color: null,
1076
+ progressColor: null
1077
+ };
1078
+ var defaultValue$1 = {
1079
+ playing: false,
1080
+ paused: false,
1081
+ muted: true,
1082
+ controls: false,
1083
+ controlsSuggestPlay: false,
1084
+ controlsVisible: false,
1085
+ media: null,
1086
+ controlsTheme: defaultControlsThemeValue,
1087
+ currentQualityLevel: null
1088
+ };
1089
+ var PlaybackContext = /*#__PURE__*/React.createContext(_objectSpread(_objectSpread({}, defaultValue$1), {}, {
1090
+ setMuted: function setMuted() {},
1091
+ setPlaying: function setPlaying() {},
1092
+ setControls: function setControls() {},
1093
+ setControlsVisible: function setControlsVisible() {},
1094
+ setControlsTheme: function setControlsTheme() {},
1095
+ showControls: function showControls() {},
1096
+ hideControls: function hideControls() {},
1097
+ setMedia: function setMedia() {},
1098
+ setCurrentQualityLevel: function setCurrentQualityLevel() {}
1099
+ }));
1100
+ var usePlaybackContext = function usePlaybackContext() {
1101
+ return React.useContext(PlaybackContext);
1102
+ };
1103
+ var usePlaybackMediaRef = function usePlaybackMediaRef(active) {
1104
+ var _usePlaybackContext = usePlaybackContext(),
1105
+ setMedia = _usePlaybackContext.setMedia;
1106
+ var mediaRef = React.useRef(null);
1107
+ React.useEffect(function () {
1108
+ if (!active) {
1109
+ return function () {};
1110
+ }
1111
+ if (mediaRef.current !== null) {
1112
+ setMedia(mediaRef.current);
1113
+ }
1114
+ return function () {
1115
+ setMedia(null);
1116
+ };
1117
+ }, [setMedia, active]);
1118
+ return mediaRef;
1119
+ };
1120
+ var propTypes$5 = {
1121
+ children: PropTypes.node.isRequired,
1122
+ controls: PropTypes.bool,
1123
+ controlsSuggestPlay: PropTypes.bool,
1124
+ controlsVisible: PropTypes.bool,
1125
+ controlsTheme: PropTypes.shape({
1126
+ seekBarOnly: PropTypes.bool,
1127
+ color: PropTypes.any,
1128
+ progressColor: PropTypes.any
1129
+ }),
1130
+ muted: PropTypes.bool,
1131
+ playing: PropTypes.bool,
1132
+ paused: PropTypes.bool,
1133
+ currentQualityLevel: PropTypes.number
1134
+ };
1135
+ var defaultProps$5 = _objectSpread({}, defaultValue$1);
1136
+ var PlaybackProvider = function PlaybackProvider(_ref) {
1137
+ var initialMuted = _ref.muted,
1138
+ initialPlaying = _ref.playing,
1139
+ paused = _ref.paused,
1140
+ initialControls = _ref.controls,
1141
+ initialControlsSuggestPlay = _ref.controlsSuggestPlay,
1142
+ initialControlsVisible = _ref.controlsVisible,
1143
+ initialControlsTheme = _ref.controlsTheme,
1144
+ initialCurrentQualityLevel = _ref.currentQualityLevel,
1145
+ children = _ref.children;
1146
+ var _useState = React.useState(initialMuted),
1147
+ _useState2 = _slicedToArray(_useState, 2),
1148
+ muted = _useState2[0],
1149
+ setMuted = _useState2[1];
1150
+ var _useState3 = React.useState(initialPlaying),
1151
+ _useState4 = _slicedToArray(_useState3, 2),
1152
+ playing = _useState4[0],
1153
+ setPlaying = _useState4[1];
1154
+ var _useState5 = React.useState(null),
1155
+ _useState6 = _slicedToArray(_useState5, 2),
1156
+ media = _useState6[0],
1157
+ setMedia = _useState6[1];
1158
+ var _useState7 = React.useState(initialControls),
1159
+ _useState8 = _slicedToArray(_useState7, 2),
1160
+ controls = _useState8[0],
1161
+ setControls = _useState8[1];
1162
+ var _useState9 = React.useState(initialControlsSuggestPlay),
1163
+ _useState0 = _slicedToArray(_useState9, 2),
1164
+ controlsSuggestPlay = _useState0[0],
1165
+ setControlsSuggestPlay = _useState0[1];
1166
+ var _useState1 = React.useState(initialControlsVisible),
1167
+ _useState10 = _slicedToArray(_useState1, 2),
1168
+ controlsVisible = _useState10[0],
1169
+ setControlsVisible = _useState10[1];
1170
+ var _useState11 = React.useState(initialControlsTheme),
1171
+ _useState12 = _slicedToArray(_useState11, 2),
1172
+ controlsTheme = _useState12[0],
1173
+ setControlsTheme = _useState12[1];
1174
+ var _useState13 = React.useState(initialCurrentQualityLevel),
1175
+ _useState14 = _slicedToArray(_useState13, 2),
1176
+ currentQualityLevel = _useState14[0],
1177
+ setCurrentQualityLevel = _useState14[1];
1178
+ var finalSetControls = React.useCallback(function (newControls) {
1179
+ if (newControls) {
1180
+ setControls(true);
1181
+ setControlsVisible(true);
1182
+ setControlsSuggestPlay(false);
1183
+ } else {
1184
+ setControls(false);
1185
+ setControlsVisible(false);
1186
+ setControlsSuggestPlay(false);
1187
+ }
1188
+ }, [setControls, setControlsVisible, setControlsSuggestPlay]);
1189
+ var finalSetControlsTheme = React.useCallback(function (newTheme) {
1190
+ setControlsTheme(_objectSpread(_objectSpread({}, defaultControlsThemeValue), newTheme));
1191
+ }, [setControlsTheme]);
1192
+ var finalSetPlaying = React.useCallback(function (value) {
1193
+ if (value) {
1194
+ setControlsSuggestPlay(false);
1195
+ }
1196
+ setPlaying(value);
1197
+ }, [setPlaying, setControlsSuggestPlay]);
1198
+
1199
+ // Reset on media change
1200
+ React.useEffect(function () {
1201
+ setControlsSuggestPlay(false);
1202
+ }, [media, setControlsSuggestPlay]);
1203
+ var showControls = React.useCallback(function () {
1204
+ return setControlsVisible(true);
1205
+ }, [setControlsVisible]);
1206
+ var hideControls = React.useCallback(function () {
1207
+ setControlsVisible(false);
1208
+ }, [setControlsVisible]);
1209
+ var hasAudio = React.useMemo(function () {
1210
+ if (media === null || media.tagName.toLowerCase() !== 'video') {
1211
+ return false;
1212
+ }
1213
+ if (media.tagName.toLowerCase() === 'audio') {
1214
+ return true;
1215
+ }
1216
+ if (typeof media.dataset.hasAudio === 'undefined') {
1217
+ return null;
1218
+ }
1219
+ return media.dataset.hasAudio === 'true' || media.dataset.hasAudio === true;
1220
+ }, [media]);
1221
+ var finalSetCurrentQualityLevel = React.useCallback(function (level) {
1222
+ var fromRef = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
1223
+ if (fromRef === null || media === null || fromRef === media) {
1224
+ setCurrentQualityLevel(level);
1225
+ }
1226
+ }, [setCurrentQualityLevel]);
1227
+ var value = React.useMemo(function () {
1228
+ return {
1229
+ muted: muted,
1230
+ playing: playing && !paused,
1231
+ controls: controls,
1232
+ controlsSuggestPlay: controlsSuggestPlay,
1233
+ controlsVisible: controlsVisible,
1234
+ media: media,
1235
+ hasAudio: hasAudio,
1236
+ controlsTheme: controlsTheme,
1237
+ currentQualityLevel: currentQualityLevel,
1238
+ setMuted: setMuted,
1239
+ setPlaying: finalSetPlaying,
1240
+ setControls: finalSetControls,
1241
+ setControlsSuggestPlay: setControlsSuggestPlay,
1242
+ setControlsVisible: setControlsVisible,
1243
+ setControlsTheme: finalSetControlsTheme,
1244
+ showControls: showControls,
1245
+ hideControls: hideControls,
1246
+ setMedia: setMedia,
1247
+ setCurrentQualityLevel: finalSetCurrentQualityLevel
1248
+ };
1249
+ }, [muted, playing, paused, controls, controlsSuggestPlay, controlsVisible, controlsTheme, media, hasAudio, currentQualityLevel, setMuted, finalSetPlaying, finalSetControls, finalSetControlsTheme, setControlsSuggestPlay, setControlsVisible, setControlsTheme, showControls, hideControls, setMedia, setCurrentQualityLevel]);
1250
+ return /*#__PURE__*/React.createElement(PlaybackContext.Provider, {
1251
+ value: value
1252
+ }, children);
1253
+ };
1254
+ PlaybackProvider.propTypes = propTypes$5;
1255
+ PlaybackProvider.defaultProps = defaultProps$5;
1256
+
1257
+ var useRoutePush = function useRoutePush() {
1258
+ var url = routes.useUrlGenerator();
1259
+ var _useLocation = wouter.useLocation(),
1260
+ _useLocation2 = _slicedToArray(_useLocation, 2),
1261
+ navigate = _useLocation2[1];
1262
+ var push = React.useCallback(function (route, data) {
1263
+ for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
1264
+ args[_key - 2] = arguments[_key];
1265
+ }
1266
+ if (isString(route)) {
1267
+ navigate.apply(void 0, [url(route, data)].concat(args));
1268
+ } else {
1269
+ var _ref = route || {},
1270
+ _ref$pathname = _ref.pathname,
1271
+ pathname = _ref$pathname === void 0 ? null : _ref$pathname,
1272
+ _ref$search = _ref.search,
1273
+ search = _ref$search === void 0 ? null : _ref$search;
1274
+ navigate.apply(void 0, ["".concat(url(pathname, data)).concat(search !== null ? "?".concat(search) : '')].concat(args));
1275
+ }
1276
+ }, [navigate, url]);
1277
+ return push;
1278
+ };
1279
+ var useRouteBack = function useRouteBack() {
1280
+ var url = routes.useUrlGenerator();
1281
+ var _useLocation3 = wouter.useLocation(),
1282
+ _useLocation4 = _slicedToArray(_useLocation3, 2),
1283
+ navigate = _useLocation4[1];
1284
+ var back = React.useCallback(function () {
1285
+ return navigate(-1);
1286
+ }, [navigate, url]);
1287
+ return back;
1288
+ };
1289
+
1290
+ var ScreenContext = /*#__PURE__*/React.createContext({
1291
+ data: null,
1292
+ definition: null,
1293
+ renderContext: null
1294
+ });
1295
+ var useScreen = function useScreen() {
1296
+ return React.useContext(ScreenContext);
1297
+ };
1298
+ var useScreenDefinition = function useScreenDefinition() {
1299
+ var intl = reactIntl.useIntl();
1300
+ var _ref = useScreen() || {},
1301
+ _ref$definition = _ref.definition,
1302
+ definition = _ref$definition === void 0 ? null : _ref$definition;
1303
+ var _ref2 = definition || {},
1304
+ _ref2$fields = _ref2.fields,
1305
+ fields = _ref2$fields === void 0 ? null : _ref2$fields;
1306
+ var finalFields = React.useMemo(function () {
1307
+ return fields !== null ? [].concat(_toConsumableArray(fields), [utils.getScreenExtraField(intl)]) : null;
1308
+ }, [fields]);
1309
+ return _objectSpread(_objectSpread({}, definition), {}, {
1310
+ fields: finalFields
1311
+ });
1312
+ };
1313
+ var useScreenData = function useScreenData() {
1314
+ var _ref3 = useScreen() || {},
1315
+ data = _ref3.data;
1316
+ return data;
1317
+ };
1318
+ var useScreenRenderContext = function useScreenRenderContext() {
1319
+ var _ref4 = useScreen() || {},
1320
+ _ref4$renderContext = _ref4.renderContext,
1321
+ renderContext = _ref4$renderContext === void 0 ? 'view' : _ref4$renderContext;
1322
+ var isPlaceholder = renderContext === 'placeholder';
1323
+ var isPreview = renderContext === 'preview';
1324
+ var isEdit = renderContext === 'edit';
1325
+ var isView = renderContext === 'view';
1326
+ var isStatic = renderContext === 'static';
1327
+ var isCapture = renderContext === 'capture';
1328
+ return {
1329
+ renderContext: renderContext,
1330
+ isPlaceholder: isPlaceholder,
1331
+ isPreview: isPreview,
1332
+ isEdit: isEdit,
1333
+ isView: isView || isStatic || isCapture,
1334
+ isStatic: isStatic,
1335
+ isCapture: isCapture
1336
+ };
1337
+ };
1338
+ var useScreenState = function useScreenState() {
1339
+ var _ref5 = useScreen() || {},
1340
+ screenState = _ref5.screenState;
1341
+ return screenState;
1342
+ };
1343
+ var propTypes$4 = {
1344
+ children: PropTypes.node.isRequired,
1345
+ data: core.PropTypes.screen,
1346
+ definition: core.PropTypes.screenDefinition,
1347
+ renderContext: core.PropTypes.renderContext,
1348
+ screenState: PropTypes.string
1349
+ };
1350
+ var defaultProps$4 = {
1351
+ data: null,
1352
+ definition: null,
1353
+ renderContext: null,
1354
+ screenState: null
1355
+ };
1356
+ var ScreenProvider = function ScreenProvider(_ref6) {
1357
+ var data = _ref6.data,
1358
+ definition = _ref6.definition,
1359
+ renderContext = _ref6.renderContext,
1360
+ screenState = _ref6.screenState,
1361
+ children = _ref6.children;
1362
+ var _ref7 = useScreen() || {},
1363
+ _ref7$data = _ref7.data,
1364
+ previousData = _ref7$data === void 0 ? null : _ref7$data,
1365
+ _ref7$definition = _ref7.definition,
1366
+ previousDefinition = _ref7$definition === void 0 ? null : _ref7$definition,
1367
+ _ref7$renderContext = _ref7.renderContext,
1368
+ previousContext = _ref7$renderContext === void 0 ? null : _ref7$renderContext,
1369
+ _ref7$screenState = _ref7.screenState,
1370
+ previousScreenState = _ref7$screenState === void 0 ? null : _ref7$screenState;
1371
+ var finalData = data || previousData || null;
1372
+ var _ref8 = finalData || {},
1373
+ _ref8$type = _ref8.type,
1374
+ type = _ref8$type === void 0 ? null : _ref8$type;
1375
+ var screensManager = useScreensManager();
1376
+ var contextDefinition = screensManager !== null ? screensManager.getDefinition(type) : null;
1377
+ var finalDefinition = definition || contextDefinition || previousDefinition;
1378
+ var finalRenderContext = renderContext || previousContext || 'view';
1379
+ var finalScreenState = screenState || previousScreenState || null;
1380
+ var value = React.useMemo(function () {
1381
+ return {
1382
+ data: finalData,
1383
+ definition: finalDefinition,
1384
+ renderContext: finalRenderContext,
1385
+ screenState: finalScreenState
1386
+ };
1387
+ }, [finalData, finalDefinition, finalRenderContext, finalScreenState]);
1388
+ return /*#__PURE__*/React.createElement(ScreenContext.Provider, {
1389
+ value: value
1390
+ }, children);
1391
+ };
1392
+ ScreenProvider.propTypes = propTypes$4;
1393
+ ScreenProvider.defaultProps = defaultProps$4;
1394
+
1395
+ /* eslint-disable react/jsx-props-no-spreading */
1396
+ var ScreenSizeContext = /*#__PURE__*/React.createContext({
1397
+ screen: null,
1398
+ screens: [],
1399
+ width: 0,
1400
+ height: 0,
1401
+ resolution: 1,
1402
+ landscape: false
1403
+ });
1404
+ var useScreenSize = function useScreenSize() {
1405
+ return React.useContext(ScreenSizeContext);
1406
+ };
1407
+ var propTypes$3 = {
1408
+ children: PropTypes.node.isRequired,
1409
+ size: core.PropTypes.screenSize
1410
+ };
1411
+ var defaultProps$3 = {
1412
+ size: {}
1413
+ };
1414
+
1415
+ // Note: this is done to avoid excessive renders on the screens that use the context
1416
+
1417
+ var ScreenSizeProvider = function ScreenSizeProvider(_ref) {
1418
+ var size = _ref.size,
1419
+ children = _ref.children;
1420
+ var nextScreen = size.screen,
1421
+ nextWidth = size.width,
1422
+ nextHeight = size.height,
1423
+ nextResolution = size.resolution;
1424
+ var currentSize = React.useMemo(function () {
1425
+ return size;
1426
+ }, [nextScreen, nextWidth, nextHeight, nextResolution]);
1427
+ return /*#__PURE__*/React.createElement(ScreenSizeContext.Provider, {
1428
+ value: currentSize
1429
+ }, children);
1430
+ };
1431
+ ScreenSizeProvider.propTypes = propTypes$3;
1432
+ ScreenSizeProvider.defaultProps = defaultProps$3;
1433
+
1434
+ var useTracking = function useTracking() {
1435
+ return React.useContext(tracking.TrackingContext);
1436
+ };
1437
+ var propTypes$2 = {
1438
+ children: PropTypes.node.isRequired,
1439
+ variables: core.PropTypes.trackingVariables,
1440
+ disabled: PropTypes.bool,
1441
+ paused: PropTypes.bool
1442
+ };
1443
+ var defaultProps$2 = {
1444
+ variables: null,
1445
+ disabled: false,
1446
+ paused: false
1447
+ };
1448
+ var TrackingProvider = function TrackingProvider(_ref) {
1449
+ var variables = _ref.variables,
1450
+ disabled = _ref.disabled,
1451
+ paused = _ref.paused,
1452
+ children = _ref.children;
1453
+ var contextTracking = useTracking() || null;
1454
+ var refTracking = React.useRef(null);
1455
+ var tracking$1 = React.useMemo(function () {
1456
+ if (refTracking.current === null) {
1457
+ refTracking.current = new core.Tracking({
1458
+ variables: _objectSpread(_objectSpread({}, contextTracking !== null ? contextTracking.getVariables() : null), variables),
1459
+ disabled: disabled,
1460
+ paused: paused
1461
+ });
1462
+ } else {
1463
+ refTracking.current.setVariables(_objectSpread(_objectSpread({}, refTracking.current.getVariables()), variables));
1464
+ refTracking.current.setDisabled(disabled);
1465
+ refTracking.current.setPaused(paused);
1466
+ }
1467
+ return refTracking.current;
1468
+ }, [contextTracking, variables, disabled, paused]);
1469
+ return /*#__PURE__*/React.createElement(tracking.TrackingContainer, {
1470
+ tracking: tracking$1
1471
+ }, children);
1472
+ };
1473
+ TrackingProvider.propTypes = propTypes$2;
1474
+ TrackingProvider.defaultProps = defaultProps$2;
1475
+
1476
+ var defaultValue = {
1477
+ events: new EventEmitter(),
1478
+ menuVisible: false,
1479
+ menuOverScreen: false,
1480
+ topHeight: 0,
1481
+ bottomHeight: 0,
1482
+ bottomSidesWidth: 0,
1483
+ gotoNextScreen: function gotoNextScreen() {},
1484
+ gotoPreviousScreen: function gotoPreviousScreen() {},
1485
+ disableInteraction: function disableInteraction() {},
1486
+ enableInteraction: function enableInteraction() {}
1487
+ };
1488
+ var ViewerContext = /*#__PURE__*/React.createContext(_objectSpread(_objectSpread({}, defaultValue), {}, {
1489
+ webView: null,
1490
+ setWebView: function setWebView() {}
1491
+ }));
1492
+ var useViewerContext = function useViewerContext() {
1493
+ return React.useContext(ViewerContext);
1494
+ };
1495
+ var useViewerSize = function useViewerSize() {
1496
+ var _useViewerContext = useViewerContext(),
1497
+ width = _useViewerContext.width,
1498
+ height = _useViewerContext.height;
1499
+ return {
1500
+ width: width,
1501
+ height: height
1502
+ };
1503
+ };
1504
+ var useViewerNavigation = function useViewerNavigation() {
1505
+ var _useViewerContext2 = useViewerContext(),
1506
+ gotoNextScreen = _useViewerContext2.gotoNextScreen,
1507
+ gotoPreviousScreen = _useViewerContext2.gotoPreviousScreen;
1508
+ return {
1509
+ gotoNextScreen: gotoNextScreen,
1510
+ gotoPreviousScreen: gotoPreviousScreen
1511
+ };
1512
+ };
1513
+ var useViewerEvents = function useViewerEvents() {
1514
+ var _useViewerContext3 = useViewerContext(),
1515
+ events = _useViewerContext3.events;
1516
+ return events;
1517
+ };
1518
+ var useViewerContainer = function useViewerContainer() {
1519
+ var _useViewerContext4 = useViewerContext(),
1520
+ _useViewerContext4$co = _useViewerContext4.containerRef,
1521
+ containerRef = _useViewerContext4$co === void 0 ? null : _useViewerContext4$co;
1522
+ return containerRef !== null ? containerRef.current : null;
1523
+ };
1524
+ var useViewerInteraction = function useViewerInteraction() {
1525
+ var _useViewerContext5 = useViewerContext(),
1526
+ disableInteraction = _useViewerContext5.disableInteraction,
1527
+ enableInteraction = _useViewerContext5.enableInteraction;
1528
+ return {
1529
+ disableInteraction: disableInteraction,
1530
+ enableInteraction: enableInteraction
1531
+ };
1532
+ };
1533
+ var useViewerWebView = function useViewerWebView() {
1534
+ var _useViewerContext6 = useViewerContext(),
1535
+ webView = _useViewerContext6.webView,
1536
+ setWebView = _useViewerContext6.setWebView;
1537
+ var value = React.useMemo(function () {
1538
+ return _objectSpread(_objectSpread({}, webView), {}, {
1539
+ opened: webView !== null,
1540
+ open: function open(newWebView) {
1541
+ return setWebView(isString(newWebView) ? {
1542
+ url: newWebView
1543
+ } : newWebView);
1544
+ },
1545
+ close: function close() {
1546
+ return setWebView(null);
1547
+ },
1548
+ update: function update(newWebView) {
1549
+ return setWebView(_objectSpread(_objectSpread({}, webView), newWebView));
1550
+ }
1551
+ });
1552
+ }, [webView, setWebView]);
1553
+ return value;
1554
+ };
1555
+ var propTypes$1 = {
1556
+ children: PropTypes.node.isRequired,
1557
+ events: PropTypes.instanceOf(EventEmitter),
1558
+ containerRef: PropTypes.oneOfType([PropTypes.func, PropTypes.shape({
1559
+ // eslint-disable-next-line react/forbid-prop-types
1560
+ current: PropTypes.any
1561
+ })]),
1562
+ menuVisible: PropTypes.bool,
1563
+ menuOverScreen: PropTypes.bool,
1564
+ width: PropTypes.number,
1565
+ height: PropTypes.number,
1566
+ topHeight: PropTypes.number,
1567
+ bottomHeight: PropTypes.number,
1568
+ bottomSidesWidth: PropTypes.number,
1569
+ gotoNextScreen: PropTypes.func,
1570
+ gotoPreviousScreen: PropTypes.func,
1571
+ disableInteraction: PropTypes.func,
1572
+ enableInteraction: PropTypes.func
1573
+ };
1574
+ var defaultProps$1 = _objectSpread({}, defaultValue);
1575
+ var ViewerProvider = function ViewerProvider(_ref) {
1576
+ var children = _ref.children,
1577
+ containerRef = _ref.containerRef,
1578
+ events = _ref.events,
1579
+ menuVisible = _ref.menuVisible,
1580
+ menuOverScreen = _ref.menuOverScreen,
1581
+ width = _ref.width,
1582
+ height = _ref.height,
1583
+ topHeight = _ref.topHeight,
1584
+ bottomHeight = _ref.bottomHeight,
1585
+ bottomSidesWidth = _ref.bottomSidesWidth,
1586
+ gotoNextScreen = _ref.gotoNextScreen,
1587
+ gotoPreviousScreen = _ref.gotoPreviousScreen,
1588
+ disableInteraction = _ref.disableInteraction,
1589
+ enableInteraction = _ref.enableInteraction;
1590
+ var _useState = React.useState(null),
1591
+ _useState2 = _slicedToArray(_useState, 2),
1592
+ webView = _useState2[0],
1593
+ setWebView = _useState2[1];
1594
+ var value = React.useMemo(function () {
1595
+ return {
1596
+ containerRef: containerRef,
1597
+ events: events,
1598
+ menuVisible: menuVisible,
1599
+ menuOverScreen: menuOverScreen,
1600
+ width: width,
1601
+ height: height,
1602
+ topHeight: topHeight,
1603
+ bottomHeight: bottomHeight,
1604
+ bottomSidesWidth: bottomSidesWidth,
1605
+ gotoNextScreen: gotoNextScreen,
1606
+ gotoPreviousScreen: gotoPreviousScreen,
1607
+ disableInteraction: disableInteraction,
1608
+ enableInteraction: enableInteraction,
1609
+ webView: webView,
1610
+ setWebView: setWebView
1611
+ };
1612
+ }, [containerRef, events, menuVisible, menuOverScreen, width, height, topHeight, bottomHeight, bottomSidesWidth, gotoNextScreen, gotoPreviousScreen, disableInteraction, enableInteraction, webView, setWebView]);
1613
+ return /*#__PURE__*/React.createElement(ViewerContext.Provider, {
1614
+ value: value
1615
+ }, children);
1616
+ };
1617
+ ViewerProvider.propTypes = propTypes$1;
1618
+ ViewerProvider.defaultProps = defaultProps$1;
1619
+
1620
+ var VisitorContext = /*#__PURE__*/React.createContext({
1621
+ visitor: null,
1622
+ setVisitor: function setVisitor() {}
1623
+ });
1624
+ var useVisitorContext = function useVisitorContext() {
1625
+ var _useContext = React.useContext(VisitorContext),
1626
+ visitor = _useContext.visitor,
1627
+ setVisitor = _useContext.setVisitor;
1628
+ return {
1629
+ visitor: visitor,
1630
+ setVisitor: setVisitor
1631
+ };
1632
+ };
1633
+ var useVisitor = function useVisitor() {
1634
+ var _useContext2 = React.useContext(VisitorContext),
1635
+ visitor = _useContext2.visitor;
1636
+ return visitor;
1637
+ };
1638
+ var useSetVisitor = function useSetVisitor() {
1639
+ var _useContext3 = React.useContext(VisitorContext),
1640
+ setVisitor = _useContext3.setVisitor;
1641
+ return setVisitor;
1642
+ };
1643
+ var propTypes = {
1644
+ children: PropTypes.node.isRequired,
1645
+ visitor: core.PropTypes.visitor
1646
+ };
1647
+ var defaultProps = {
1648
+ visitor: null
1649
+ };
1650
+ var VisitorProvider = function VisitorProvider(_ref) {
1651
+ var providedVisitor = _ref.visitor,
1652
+ children = _ref.children;
1653
+ var _useState = React.useState(providedVisitor),
1654
+ _useState2 = _slicedToArray(_useState, 2),
1655
+ visitor = _useState2[0],
1656
+ setVisitor = _useState2[1];
1657
+ React.useEffect(function () {
1658
+ if (providedVisitor !== visitor) {
1659
+ setVisitor(providedVisitor);
1660
+ }
1661
+ }, [providedVisitor, setVisitor]);
1662
+ var value = React.useMemo(function () {
1663
+ return {
1664
+ visitor: visitor,
1665
+ setVisitor: function setVisitor(newVisitor) {
1666
+ return isString(newVisitor) ? {
1667
+ id: newVisitor
1668
+ } : newVisitor;
1669
+ }
1670
+ };
1671
+ }, [visitor, setVisitor]);
1672
+ return /*#__PURE__*/React.createElement(VisitorContext.Provider, {
1673
+ value: value
1674
+ }, children);
1675
+ };
1676
+ VisitorProvider.propTypes = propTypes;
1677
+ VisitorProvider.defaultProps = defaultProps;
1678
+
1679
+ Object.defineProperty(exports, "RoutesContext", {
1680
+ enumerable: true,
1681
+ get: function () { return routes.RoutesContext; }
1682
+ });
1683
+ Object.defineProperty(exports, "RoutesProvider", {
1684
+ enumerable: true,
1685
+ get: function () { return routes.RoutesProvider; }
1686
+ });
1687
+ Object.defineProperty(exports, "useRoutes", {
1688
+ enumerable: true,
1689
+ get: function () { return routes.useRoutes; }
1690
+ });
1691
+ Object.defineProperty(exports, "useUrlGenerator", {
1692
+ enumerable: true,
1693
+ get: function () { return routes.useUrlGenerator; }
1694
+ });
1695
+ Object.defineProperty(exports, "TrackingContext", {
1696
+ enumerable: true,
1697
+ get: function () { return tracking.TrackingContext; }
1698
+ });
1699
+ exports.ComponentsContext = ComponentsContext;
1700
+ exports.ComponentsProvider = ComponentsProvider;
1701
+ exports.ConsentContext = ConsentContext;
1702
+ exports.ConsentProvider = ConsentProvider;
1703
+ exports.ELEMENTS_NAMESPACE = ELEMENTS_NAMESPACE;
1704
+ exports.EditorContext = EditorContext;
1705
+ exports.EditorProvider = EditorProvider;
1706
+ exports.FIELDS_NAMESPACE = FIELDS_NAMESPACE;
1707
+ exports.FORMS_NAMESPACE = FORMS_NAMESPACE;
1708
+ exports.FieldContext = FieldContext;
1709
+ exports.FieldContextProvider = FieldContextProvider;
1710
+ exports.FieldsContext = FieldsContext;
1711
+ exports.FieldsProvider = FieldsProvider;
1712
+ exports.FieldsValueContext = FieldsValueContext;
1713
+ exports.FieldsValueContextProvider = FieldsValueContextProvider;
1714
+ exports.FontsContext = FontsContext;
1715
+ exports.FontsProvider = FontsProvider;
1716
+ exports.GoogleApiClientContext = GoogleApiClientContext;
1717
+ exports.GoogleApiClientProvider = GoogleApiClientProvider;
1718
+ exports.GoogleKeysContext = GoogleKeysContext;
1719
+ exports.GoogleKeysProvider = GoogleKeysProvider;
1720
+ exports.GoogleMapsClientContext = GoogleMapsClientContext;
1721
+ exports.GoogleMapsClientProvider = GoogleMapsClientProvider;
1722
+ exports.MODALS_NAMESPACE = MODALS_NAMESPACE;
1723
+ exports.ModalsContext = ModalsContext;
1724
+ exports.ModalsProvider = ModalsProvider;
1725
+ exports.PanelsContext = PanelsContext;
1726
+ exports.PanelsProvider = PanelsProvider;
1727
+ exports.PlaybackContext = PlaybackContext;
1728
+ exports.PlaybackProvider = PlaybackProvider;
1729
+ exports.SCREENS_NAMESPACE = SCREENS_NAMESPACE;
1730
+ exports.ScreenContext = ScreenContext;
1731
+ exports.ScreenProvider = ScreenProvider;
1732
+ exports.ScreenSizeContext = ScreenSizeContext;
1733
+ exports.ScreenSizeProvider = ScreenSizeProvider;
1734
+ exports.ScreensContext = ScreensContext;
1735
+ exports.ScreensProvider = ScreensProvider;
1736
+ exports.StoryContext = StoryContext;
1737
+ exports.StoryProvider = StoryProvider;
1738
+ exports.TrackingProvider = TrackingProvider;
1739
+ exports.ViewerContext = ViewerContext;
1740
+ exports.ViewerProvider = ViewerProvider;
1741
+ exports.VisitorContext = VisitorContext;
1742
+ exports.VisitorProvider = VisitorProvider;
1743
+ exports.useComponent = useComponent;
1744
+ exports.useComponents = useComponents;
1745
+ exports.useComponentsManager = useComponentsManager;
1746
+ exports.useConsent = useConsent;
1747
+ exports.useEditor = useEditor;
1748
+ exports.useElementComponent = useElementComponent;
1749
+ exports.useElementsComponents = useElementsComponents;
1750
+ exports.useElementsComponentsManager = useElementsComponentsManager;
1751
+ exports.useFieldComponent = useFieldComponent;
1752
+ exports.useFieldContext = useFieldContext;
1753
+ exports.useFieldDefinition = useFieldDefinition;
1754
+ exports.useFieldsComponents = useFieldsComponents;
1755
+ exports.useFieldsComponentsManager = useFieldsComponentsManager;
1756
+ exports.useFieldsManager = useFieldsManager;
1757
+ exports.useFieldsValue = useFieldsValue;
1758
+ exports.useFonts = useFonts;
1759
+ exports.useFormComponent = useFormComponent;
1760
+ exports.useFormsComponents = useFormsComponents;
1761
+ exports.useFormsComponentsManager = useFormsComponentsManager;
1762
+ exports.useGetColors = useGetColors;
1763
+ exports.useGoogleApiClient = useGoogleApiClient;
1764
+ exports.useGoogleFonts = useGoogleFonts;
1765
+ exports.useGoogleKeys = useGoogleKeys;
1766
+ exports.useGoogleMapsClient = useGoogleMapsClient;
1767
+ exports.useModalComponent = useModalComponent;
1768
+ exports.useModals = useModals;
1769
+ exports.useModalsComponents = useModalsComponents;
1770
+ exports.useModalsComponentsManager = useModalsComponentsManager;
1771
+ exports.usePanels = usePanels;
1772
+ exports.usePlaybackContext = usePlaybackContext;
1773
+ exports.usePlaybackMediaRef = usePlaybackMediaRef;
1774
+ exports.useRouteBack = useRouteBack;
1775
+ exports.useRoutePush = useRoutePush;
1776
+ exports.useScreen = useScreen;
1777
+ exports.useScreenComponent = useScreenComponent;
1778
+ exports.useScreenData = useScreenData;
1779
+ exports.useScreenDefinition = useScreenDefinition;
1780
+ exports.useScreenRenderContext = useScreenRenderContext;
1781
+ exports.useScreenSize = useScreenSize;
1782
+ exports.useScreenState = useScreenState;
1783
+ exports.useScreensComponents = useScreensComponents;
1784
+ exports.useScreensComponentsManager = useScreensComponentsManager;
1785
+ exports.useScreensManager = useScreensManager;
1786
+ exports.useSetVisitor = useSetVisitor;
1787
+ exports.useStory = useStory;
1788
+ exports.useStoryContext = useStoryContext;
1789
+ exports.useTracking = useTracking;
1790
+ exports.useViewerContainer = useViewerContainer;
1791
+ exports.useViewerContext = useViewerContext;
1792
+ exports.useViewerEvents = useViewerEvents;
1793
+ exports.useViewerInteraction = useViewerInteraction;
1794
+ exports.useViewerNavigation = useViewerNavigation;
1795
+ exports.useViewerSize = useViewerSize;
1796
+ exports.useViewerWebView = useViewerWebView;
1797
+ exports.useVisitor = useVisitor;
1798
+ exports.useVisitorContext = useVisitorContext;
1799
+ exports.withGoogleApiClient = withGoogleApiClient;
1800
+ exports.withGoogleMapsClient = withGoogleMapsClient;
1801
+ exports.withModals = withModals;
1802
+ exports.withPanels = withPanels;