@micromag/core 0.3.703 → 0.3.706

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 +225 -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,224 @@ 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
+ };
312
+ var defaultProps$i = {
313
+ consent: ['functionality_storage', 'analytics_storage', 'ad_storage', 'ad_personalization', 'ad_user_data']
314
+ };
315
+ var ConsentProvider = function ConsentProvider(_ref) {
316
+ var providedConsent = _ref.consent,
317
+ children = _ref.children;
318
+ var baseConsent = useMemo(function () {
319
+ return (providedConsent || consentStates || []).map(function (item) {
320
+ if (isString(item)) {
321
+ return (consentStates || []).find(function (it) {
322
+ return it.id === item;
323
+ }) || null;
324
+ }
325
+ return item || null;
326
+ }).filter(function (it) {
327
+ return it !== null;
328
+ }).map(function (it) {
329
+ return _objectSpread(_objectSpread({}, it), {}, {
330
+ value:
331
+ // eslint-disable-next-line no-nested-ternary
332
+ JSCookie.get(it.id) === 'granted' ? true : JSCookie.get(it.id) === 'denied' ? false : it.value
333
+ });
334
+ });
335
+ }, [providedConsent]);
336
+ var _useState = useState(baseConsent),
337
+ _useState2 = _slicedToArray(_useState, 2),
338
+ consent = _useState2[0],
339
+ setConsentState = _useState2[1];
340
+ useEffect(function () {
341
+ if (baseConsent) {
342
+ setConsentState(baseConsent);
343
+ }
344
+ }, [baseConsent, setConsentState]);
345
+ var setConsent = useCallback(function (values) {
346
+ JSCookie.set('show_consent', values === null || values === undefined, {
347
+ secure: true,
348
+ expires: 182
349
+ });
350
+ (values || []).forEach(function (it) {
351
+ if (it.value === true) {
352
+ JSCookie.set(it.id, 'granted', {
353
+ secure: true,
354
+ expires: 182
355
+ });
356
+ } else if (it.value === false) {
357
+ JSCookie.set(it.id, 'denied', {
358
+ secure: true,
359
+ expires: 182
360
+ });
361
+ } else {
362
+ JSCookie.remove(it.id);
363
+ }
364
+ });
365
+ setConsentState(values);
366
+ }, [setConsentState]);
367
+ var value = useMemo(function () {
368
+ return {
369
+ consent: consent,
370
+ setConsent: setConsent
371
+ };
372
+ }, [consent, setConsent]);
373
+ return /*#__PURE__*/React.createElement(ConsentContext.Provider, {
374
+ value: value
375
+ }, children);
376
+ };
377
+ ConsentProvider.propTypes = propTypes$i;
378
+ ConsentProvider.defaultProps = defaultProps$i;
162
379
 
163
380
  var FieldsContext = /*#__PURE__*/React.createContext(null);
164
381
  var useFieldsManager = function useFieldsManager() {
@@ -1421,4 +1638,4 @@ var VisitorProvider = function VisitorProvider(_ref) {
1421
1638
  VisitorProvider.propTypes = propTypes;
1422
1639
  VisitorProvider.defaultProps = defaultProps;
1423
1640
 
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 };
1641
+ 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.706",
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": "1797e88940f701824f9b047784d8f5a872b6a790"
148
149
  }