@ninetailed/experience.js-react 2.0.0-beta.24 → 2.0.0-beta.27

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.
package/index.esm.js CHANGED
@@ -2645,15 +2645,39 @@ const Experience = _a => {
2645
2645
  })));
2646
2646
  };
2647
2647
 
2648
- const getSSRLoadingComponent = encodedExperienceVariantsMap => // eslint-disable-next-line react/display-name
2649
- _a => {
2648
+ const ESRContext = /*#__PURE__*/React.createContext(undefined);
2649
+ const ESRProvider = ({
2650
+ experienceVariantsMap,
2651
+ children
2652
+ }) => {
2653
+ return /*#__PURE__*/React.createElement(ESRContext.Provider, {
2654
+ value: {
2655
+ experienceVariantsMap
2656
+ }
2657
+ }, children);
2658
+ };
2659
+ const useESR = () => {
2660
+ const context = React.useContext(ESRContext);
2661
+
2662
+ if (context === undefined) {
2663
+ throw new Error('The component using the the context must be a descendant of the ESRProvider');
2664
+ }
2665
+
2666
+ return {
2667
+ experienceVariantsMap: context.experienceVariantsMap
2668
+ };
2669
+ };
2670
+ const ESRLoadingComponent = _a => {
2650
2671
  var {
2651
2672
  experiences,
2652
2673
  component: Component
2653
2674
  } = _a,
2654
2675
  baseline = __rest(_a, ["experiences", "component"]);
2655
2676
 
2656
- const experience = experiences.find(experience => has$1(encodedExperienceVariantsMap, experience.id));
2677
+ const {
2678
+ experienceVariantsMap
2679
+ } = useESR();
2680
+ const experience = experiences.find(experience => has$1(experienceVariantsMap, experience.id));
2657
2681
 
2658
2682
  if (!experience) {
2659
2683
  return /*#__PURE__*/React.createElement(Component, Object.assign({}, baseline));
@@ -2665,11 +2689,11 @@ _a => {
2665
2689
  return /*#__PURE__*/React.createElement(Component, Object.assign({}, baseline));
2666
2690
  }
2667
2691
 
2668
- if (encodedExperienceVariantsMap[experience.id] === 0) {
2692
+ if (experienceVariantsMap[experience.id] === 0) {
2669
2693
  return /*#__PURE__*/React.createElement(Component, Object.assign({}, baseline));
2670
2694
  }
2671
2695
 
2672
- const variant = component.variants[encodedExperienceVariantsMap[experience.id] - 1];
2696
+ const variant = component.variants[experienceVariantsMap[experience.id] - 1];
2673
2697
 
2674
2698
  if (!variant) {
2675
2699
  return /*#__PURE__*/React.createElement(Component, Object.assign({}, baseline));
@@ -2678,4 +2702,4 @@ _a => {
2678
2702
  return /*#__PURE__*/React.createElement(Component, Object.assign({}, variant));
2679
2703
  };
2680
2704
 
2681
- export { Experience, MergeTag, NinetailedProvider, Personalize, TrackHasSeenComponent, getSSRLoadingComponent, useNinetailed, usePersonalize, useProfile };
2705
+ export { ESRLoadingComponent, ESRProvider, Experience, MergeTag, NinetailedProvider, Personalize, TrackHasSeenComponent, useNinetailed, usePersonalize, useProfile };
package/index.umd.js CHANGED
@@ -2190,49 +2190,69 @@
2190
2190
  })));
2191
2191
  };
2192
2192
 
2193
- var getSSRLoadingComponent = function getSSRLoadingComponent(encodedExperienceVariantsMap) {
2194
- // eslint-disable-next-line react/display-name
2195
- return function (_a) {
2196
- var experiences = _a.experiences,
2197
- Component = _a.component,
2198
- baseline = __rest(_a, ["experiences", "component"]);
2199
-
2200
- var experience = experiences.find(function (experience) {
2201
- return has__default["default"](encodedExperienceVariantsMap, experience.id);
2202
- });
2203
-
2204
- if (!experience) {
2205
- return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2193
+ var ESRContext = /*#__PURE__*/React__default["default"].createContext(undefined);
2194
+ var ESRProvider = function ESRProvider(_a) {
2195
+ var experienceVariantsMap = _a.experienceVariantsMap,
2196
+ children = _a.children;
2197
+ return /*#__PURE__*/React__default["default"].createElement(ESRContext.Provider, {
2198
+ value: {
2199
+ experienceVariantsMap: experienceVariantsMap
2206
2200
  }
2201
+ }, children);
2202
+ };
2203
+ var useESR = function useESR() {
2204
+ var context = React__default["default"].useContext(ESRContext);
2207
2205
 
2208
- var component = experience.components.find(function (component) {
2209
- return component.baseline.id === baseline.id;
2210
- });
2206
+ if (context === undefined) {
2207
+ throw new Error('The component using the the context must be a descendant of the ESRProvider');
2208
+ }
2211
2209
 
2212
- if (!component) {
2213
- return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2214
- }
2210
+ return {
2211
+ experienceVariantsMap: context.experienceVariantsMap
2212
+ };
2213
+ };
2214
+ var ESRLoadingComponent = function ESRLoadingComponent(_a) {
2215
+ var experiences = _a.experiences,
2216
+ Component = _a.component,
2217
+ baseline = __rest(_a, ["experiences", "component"]);
2215
2218
 
2216
- if (encodedExperienceVariantsMap[experience.id] === 0) {
2217
- return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2218
- }
2219
+ var experienceVariantsMap = useESR().experienceVariantsMap;
2220
+ var experience = experiences.find(function (experience) {
2221
+ return has__default["default"](experienceVariantsMap, experience.id);
2222
+ });
2219
2223
 
2220
- var variant = component.variants[encodedExperienceVariantsMap[experience.id] - 1];
2224
+ if (!experience) {
2225
+ return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2226
+ }
2221
2227
 
2222
- if (!variant) {
2223
- return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2224
- }
2228
+ var component = experience.components.find(function (component) {
2229
+ return component.baseline.id === baseline.id;
2230
+ });
2225
2231
 
2226
- return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, variant));
2227
- };
2232
+ if (!component) {
2233
+ return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2234
+ }
2235
+
2236
+ if (experienceVariantsMap[experience.id] === 0) {
2237
+ return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2238
+ }
2239
+
2240
+ var variant = component.variants[experienceVariantsMap[experience.id] - 1];
2241
+
2242
+ if (!variant) {
2243
+ return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2244
+ }
2245
+
2246
+ return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, variant));
2228
2247
  };
2229
2248
 
2249
+ exports.ESRLoadingComponent = ESRLoadingComponent;
2250
+ exports.ESRProvider = ESRProvider;
2230
2251
  exports.Experience = Experience;
2231
2252
  exports.MergeTag = MergeTag;
2232
2253
  exports.NinetailedProvider = NinetailedProvider;
2233
2254
  exports.Personalize = Personalize;
2234
2255
  exports.TrackHasSeenComponent = TrackHasSeenComponent;
2235
- exports.getSSRLoadingComponent = getSSRLoadingComponent;
2236
2256
  exports.useNinetailed = useNinetailed;
2237
2257
  exports.usePersonalize = usePersonalize;
2238
2258
  exports.useProfile = useProfile;
@@ -0,0 +1,15 @@
1
+ import React from 'react';
2
+ import { ExperienceLoadingComponent } from './Experience';
3
+ declare type ESRContextValue = {
4
+ experienceVariantsMap: Record<string, number>;
5
+ };
6
+ export declare const ESRContext: React.Context<ESRContextValue | undefined>;
7
+ declare type ESRProviderProps = {
8
+ experienceVariantsMap: Record<string, number>;
9
+ };
10
+ export declare const ESRProvider: React.FC<ESRProviderProps>;
11
+ export declare const useESR: () => {
12
+ experienceVariantsMap: Record<string, number>;
13
+ };
14
+ export declare const ESRLoadingComponent: ExperienceLoadingComponent;
15
+ export {};
@@ -1,3 +1,3 @@
1
1
  export { Experience } from './Experience';
2
2
  export type { ExperienceProps, ExperienceBaseProps, ExperienceComponent, ExperienceLoadingComponent, } from './Experience';
3
- export { getSSRLoadingComponent } from './getSSRLoadingComponent';
3
+ export { ESRProvider, ESRLoadingComponent } from './ESRLoadingComponent';
package/lib/index.d.ts CHANGED
@@ -9,5 +9,5 @@ export { Personalize } from './Personalize';
9
9
  export type { PersonalizedComponent } from './Personalize';
10
10
  export { MergeTag } from './MergeTag';
11
11
  export { TrackHasSeenComponent } from './TrackHasSeenComponent';
12
- export { Experience, getSSRLoadingComponent } from './Experience';
12
+ export { Experience, ESRProvider, ESRLoadingComponent } from './Experience';
13
13
  export type { ExperienceProps, ExperienceBaseProps, ExperienceComponent, ExperienceLoadingComponent, } from './Experience';
package/package.json CHANGED
@@ -1,20 +1,20 @@
1
1
  {
2
2
  "name": "@ninetailed/experience.js-react",
3
- "version": "2.0.0-beta.24",
3
+ "version": "2.0.0-beta.27",
4
4
  "peerDependencies": {
5
5
  "react": ">=16.8.0"
6
6
  },
7
7
  "dependencies": {
8
8
  "@analytics/google-analytics": "0.5.3",
9
9
  "react-visibility-sensor": "5.1.1",
10
- "@ninetailed/experience.js": "2.0.0-beta.24",
10
+ "lodash": "^4.17.21",
11
+ "@ninetailed/experience.js": "2.0.0-beta.27",
11
12
  "analytics": "^0.8.0",
12
- "@ninetailed/experience.js-shared": "2.0.0-beta.24",
13
+ "@ninetailed/experience.js-shared": "2.0.0-beta.27",
13
14
  "uuid": "^8.3.2",
14
15
  "ts-toolbelt": "^9.6.0",
15
16
  "locale-enum": "^1.1.1",
16
17
  "i18n-iso-countries": "^7.3.0",
17
- "lodash": "^4.17.21",
18
18
  "loglevel": "^1.8.0",
19
19
  "murmurhash-js": "^1.0.0",
20
20
  "react-intersection-observer": "^8.33.1"
@@ -1,2 +0,0 @@
1
- import { ExperienceLoadingComponent } from './Experience';
2
- export declare const getSSRLoadingComponent: (encodedExperienceVariantsMap: Record<string, number>) => ExperienceLoadingComponent;