@micromag/core 0.3.703 → 0.3.707

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 (2) hide show
  1. package/es/contexts.js +245 -8
  2. package/package.json +3 -2
package/es/contexts.js CHANGED
@@ -2,11 +2,13 @@ import _objectSpread from '@babel/runtime/helpers/objectSpread2';
2
2
  import isString from 'lodash/isString';
3
3
  import PropTypes from 'prop-types';
4
4
  import React, { useContext, useMemo, useState, useEffect, useCallback, useRef } from 'react';
5
- import { ComponentsManager, FieldsManager, PropTypes as PropTypes$1, ScreensManager, ColorsParser, Tracking } from '@micromag/core';
5
+ import { ComponentsManager, PropTypes as PropTypes$1, FieldsManager, ScreensManager, ColorsParser, Tracking } from '@micromag/core';
6
+ import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
7
+ import JSCookie from 'js-cookie';
8
+ import { defineMessages, useIntl } from 'react-intl';
6
9
  import _defineProperty from '@babel/runtime/helpers/defineProperty';
7
10
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
8
11
  import uniqBy from 'lodash/uniqBy';
9
- import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
10
12
  import { getJSON } from '@folklore/fetch';
11
13
  import isObject from 'lodash/isObject';
12
14
  import { loadGoogleApi, loadGoogleMaps } from '@folklore/services';
@@ -14,7 +16,6 @@ import { getDisplayName, getScreenExtraField } from '@micromag/core/utils';
14
16
  import { useUrlGenerator } from '@folklore/routes';
15
17
  export { RoutesContext, RoutesProvider, useRoutes, useUrlGenerator } from '@folklore/routes';
16
18
  import { useLocation } from 'wouter';
17
- import { useIntl } from 'react-intl';
18
19
  import { TrackingContext, TrackingContainer } from '@folklore/tracking';
19
20
  export { TrackingContext } from '@folklore/tracking';
20
21
  import EventEmitter from 'wolfy87-eventemitter';
@@ -133,13 +134,13 @@ var useElementComponent = function useElementComponent(name) {
133
134
  /**
134
135
  * Provider
135
136
  */
136
- var propTypes$i = {
137
+ var propTypes$j = {
137
138
  children: PropTypes.node.isRequired,
138
139
  namespace: PropTypes.string,
139
140
  manager: PropTypes.instanceOf(ComponentsManager),
140
141
  components: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.object, PropTypes.func]))
141
142
  };
142
- var defaultProps$i = {
143
+ var defaultProps$j = {
143
144
  namespace: null,
144
145
  components: {},
145
146
  manager: null
@@ -157,8 +158,244 @@ var ComponentsProvider = function ComponentsProvider(_ref) {
157
158
  value: finalManager
158
159
  }, children);
159
160
  };
160
- ComponentsProvider.propTypes = propTypes$i;
161
- ComponentsProvider.defaultProps = defaultProps$i;
161
+ ComponentsProvider.propTypes = propTypes$j;
162
+ ComponentsProvider.defaultProps = defaultProps$j;
163
+
164
+ var messages = 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: true
280
+ }, {
281
+ id: 'analytics_storage',
282
+ label: messages.analytics_title,
283
+ description: messages.analytics_description,
284
+ value: true
285
+ }, {
286
+ id: 'ad_storage',
287
+ label: messages.ad_storage_title,
288
+ description: messages.ad_storage_description,
289
+ value: true
290
+ }, {
291
+ id: 'ad_personalization',
292
+ label: messages.ad_personalization_title,
293
+ description: messages.ad_personalization_description,
294
+ value: true
295
+ }, {
296
+ id: 'ad_user_data',
297
+ label: messages.ad_user_data_title,
298
+ description: messages.ad_user_data_description,
299
+ value: true
300
+ }];
301
+ var ConsentContext = /*#__PURE__*/React.createContext({
302
+ consent: null,
303
+ setConsent: function setConsent() {}
304
+ });
305
+ var useConsent = function useConsent() {
306
+ return useContext(ConsentContext);
307
+ };
308
+ var propTypes$i = {
309
+ children: PropTypes.node.isRequired,
310
+ consent: PropTypes$1.consent,
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: false,
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
+ var cookieConsented = JSCookie.get('has_consented') === 'true';
325
+ var _useState = useState(initialConsented || cookieConsented),
326
+ _useState2 = _slicedToArray(_useState, 2),
327
+ consented = _useState2[0],
328
+ setConsented = _useState2[1];
329
+ useEffect(function () {
330
+ if (initialConsented) {
331
+ setConsented(initialConsented);
332
+ }
333
+ }, [initialConsented, setConsented]);
334
+ var baseConsent = useMemo(function () {
335
+ return (providedConsent || consentStates || []).map(function (item) {
336
+ if (isString(item)) {
337
+ return (consentStates || []).find(function (it) {
338
+ return it.id === item;
339
+ }) || null;
340
+ }
341
+ return item || null;
342
+ }).filter(function (it) {
343
+ return it !== null;
344
+ }).map(function (it) {
345
+ return _objectSpread(_objectSpread({}, it), {}, {
346
+ value:
347
+ // eslint-disable-next-line no-nested-ternary
348
+ JSCookie.get(it.id) === 'granted' ? true : JSCookie.get(it.id) === 'denied' ? false : it.value
349
+ });
350
+ });
351
+ }, [providedConsent]);
352
+ var _useState3 = useState(baseConsent),
353
+ _useState4 = _slicedToArray(_useState3, 2),
354
+ consent = _useState4[0],
355
+ setConsentState = _useState4[1];
356
+ useEffect(function () {
357
+ if (baseConsent) {
358
+ setConsentState(baseConsent);
359
+ }
360
+ }, [baseConsent, setConsentState]);
361
+ var setConsent = useCallback(function (values) {
362
+ var hasConsented = values !== null && typeof values !== 'undefined';
363
+ JSCookie.set('has_consented', hasConsented, {
364
+ secure: true,
365
+ expires: expiration
366
+ });
367
+ setConsented(hasConsented);
368
+ (values || []).forEach(function (it) {
369
+ if (it.value === true) {
370
+ JSCookie.set(it.id, 'granted', {
371
+ secure: true,
372
+ expires: expiration
373
+ });
374
+ } else if (it.value === false) {
375
+ JSCookie.set(it.id, 'denied', {
376
+ secure: true,
377
+ expires: expiration
378
+ });
379
+ } else {
380
+ JSCookie.remove(it.id);
381
+ }
382
+ });
383
+ setConsentState(values);
384
+ return values;
385
+ }, [setConsentState, expiration]);
386
+ var value = useMemo(function () {
387
+ return {
388
+ consent: consent,
389
+ setConsent: setConsent,
390
+ consented: consented
391
+ };
392
+ }, [consent, setConsent, consented]);
393
+ return /*#__PURE__*/React.createElement(ConsentContext.Provider, {
394
+ value: value
395
+ }, children);
396
+ };
397
+ ConsentProvider.propTypes = propTypes$i;
398
+ ConsentProvider.defaultProps = defaultProps$i;
162
399
 
163
400
  var FieldsContext = /*#__PURE__*/React.createContext(null);
164
401
  var useFieldsManager = function useFieldsManager() {
@@ -1421,4 +1658,4 @@ var VisitorProvider = function VisitorProvider(_ref) {
1421
1658
  VisitorProvider.propTypes = propTypes;
1422
1659
  VisitorProvider.defaultProps = defaultProps;
1423
1660
 
1424
- export { ComponentsContext, ComponentsProvider, ELEMENTS_NAMESPACE, EditorContext, EditorProvider, FIELDS_NAMESPACE, FORMS_NAMESPACE, FieldContext, FieldContextProvider, FieldsContext, FieldsProvider, FieldsValueContext, FieldsValueContextProvider, FontsContext, FontsProvider, GoogleApiClientContext, GoogleApiClientProvider, GoogleKeysContext, GoogleKeysProvider, GoogleMapsClientContext, GoogleMapsClientProvider, MODALS_NAMESPACE, ModalsContext, ModalsProvider, PanelsContext, PanelsProvider, PlaybackContext, PlaybackProvider, SCREENS_NAMESPACE, ScreenContext, ScreenProvider, ScreenSizeContext, ScreenSizeProvider, ScreensContext, ScreensProvider, StoryContext, StoryProvider, TrackingProvider, ViewerContext, ViewerProvider, VisitorContext, VisitorProvider, useComponent, useComponents, useComponentsManager, useEditor, useElementComponent, useElementsComponents, useElementsComponentsManager, useFieldComponent, useFieldContext, useFieldDefinition, useFieldsComponents, useFieldsComponentsManager, useFieldsManager, useFieldsValue, useFonts, useFormComponent, useFormsComponents, useFormsComponentsManager, useGetColors, useGoogleApiClient, useGoogleFonts, useGoogleKeys, useGoogleMapsClient, useModalComponent, useModals, useModalsComponents, useModalsComponentsManager, usePanels, usePlaybackContext, usePlaybackMediaRef, useRouteBack, useRoutePush, useScreen, useScreenComponent, useScreenData, useScreenDefinition, useScreenRenderContext, useScreenSize, useScreenState, useScreensComponents, useScreensComponentsManager, useScreensManager, useSetVisitor, useStory, useStoryContext, useTracking, useViewerContainer, useViewerContext, useViewerEvents, useViewerInteraction, useViewerNavigation, useViewerSize, useViewerWebView, useVisitor, useVisitorContext, withGoogleApiClient, withGoogleMapsClient, withModals, withPanels };
1661
+ export { ComponentsContext, ComponentsProvider, ConsentContext, ConsentProvider, ELEMENTS_NAMESPACE, EditorContext, EditorProvider, FIELDS_NAMESPACE, FORMS_NAMESPACE, FieldContext, FieldContextProvider, FieldsContext, FieldsProvider, FieldsValueContext, FieldsValueContextProvider, FontsContext, FontsProvider, GoogleApiClientContext, GoogleApiClientProvider, GoogleKeysContext, GoogleKeysProvider, GoogleMapsClientContext, GoogleMapsClientProvider, MODALS_NAMESPACE, ModalsContext, ModalsProvider, PanelsContext, PanelsProvider, PlaybackContext, PlaybackProvider, SCREENS_NAMESPACE, ScreenContext, ScreenProvider, ScreenSizeContext, ScreenSizeProvider, ScreensContext, ScreensProvider, StoryContext, StoryProvider, TrackingProvider, ViewerContext, ViewerProvider, VisitorContext, VisitorProvider, useComponent, useComponents, useComponentsManager, useConsent, useEditor, useElementComponent, useElementsComponents, useElementsComponentsManager, useFieldComponent, useFieldContext, useFieldDefinition, useFieldsComponents, useFieldsComponentsManager, useFieldsManager, useFieldsValue, useFonts, useFormComponent, useFormsComponents, useFormsComponentsManager, useGetColors, useGoogleApiClient, useGoogleFonts, useGoogleKeys, useGoogleMapsClient, useModalComponent, useModals, useModalsComponents, useModalsComponentsManager, usePanels, usePlaybackContext, usePlaybackMediaRef, useRouteBack, useRoutePush, useScreen, useScreenComponent, useScreenData, useScreenDefinition, useScreenRenderContext, useScreenSize, useScreenState, useScreensComponents, useScreensComponentsManager, useScreensManager, useSetVisitor, useStory, useStoryContext, useTracking, useViewerContainer, useViewerContext, useViewerEvents, useViewerInteraction, useViewerNavigation, useViewerSize, useViewerWebView, useVisitor, useVisitorContext, withGoogleApiClient, withGoogleMapsClient, withModals, withPanels };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@micromag/core",
3
- "version": "0.3.703",
3
+ "version": "0.3.707",
4
4
  "private": false,
5
5
  "description": "",
6
6
  "keywords": [
@@ -126,6 +126,7 @@
126
126
  "debug": "^4.3.4",
127
127
  "flat": "^6.0.1",
128
128
  "hoist-non-react-statics": "^3.3.2",
129
+ "js-cookie": "^3.0.5",
129
130
  "lodash": "^4.17.21",
130
131
  "prop-types": "^15.7.2",
131
132
  "query-string": "^9.0.0",
@@ -144,5 +145,5 @@
144
145
  "access": "public",
145
146
  "registry": "https://registry.npmjs.org/"
146
147
  },
147
- "gitHead": "15a0df01ed9d05f47a056fb2ff078aded803d33d"
148
+ "gitHead": "e3afa5fe973a68bf83383fede41590a5e6428259"
148
149
  }