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

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,29 @@ 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 useESR = () => {
2650
+ const context = React.useContext(ESRContext);
2651
+
2652
+ if (context === undefined) {
2653
+ throw new Error('The component using the the context must be a descendant of the ESRProvider');
2654
+ }
2655
+
2656
+ return {
2657
+ experienceVariantsMap: context.experienceVariantsMap
2658
+ };
2659
+ };
2660
+ const ESRLoadingComponent = _a => {
2650
2661
  var {
2651
2662
  experiences,
2652
2663
  component: Component
2653
2664
  } = _a,
2654
2665
  baseline = __rest(_a, ["experiences", "component"]);
2655
2666
 
2656
- const experience = experiences.find(experience => has$1(encodedExperienceVariantsMap, experience.id));
2667
+ const {
2668
+ experienceVariantsMap
2669
+ } = useESR();
2670
+ const experience = experiences.find(experience => has$1(experienceVariantsMap, experience.id));
2657
2671
 
2658
2672
  if (!experience) {
2659
2673
  return /*#__PURE__*/React.createElement(Component, Object.assign({}, baseline));
@@ -2665,11 +2679,11 @@ _a => {
2665
2679
  return /*#__PURE__*/React.createElement(Component, Object.assign({}, baseline));
2666
2680
  }
2667
2681
 
2668
- if (encodedExperienceVariantsMap[experience.id] === 0) {
2682
+ if (experienceVariantsMap[experience.id] === 0) {
2669
2683
  return /*#__PURE__*/React.createElement(Component, Object.assign({}, baseline));
2670
2684
  }
2671
2685
 
2672
- const variant = component.variants[encodedExperienceVariantsMap[experience.id] - 1];
2686
+ const variant = component.variants[experienceVariantsMap[experience.id] - 1];
2673
2687
 
2674
2688
  if (!variant) {
2675
2689
  return /*#__PURE__*/React.createElement(Component, Object.assign({}, baseline));
@@ -2678,4 +2692,4 @@ _a => {
2678
2692
  return /*#__PURE__*/React.createElement(Component, Object.assign({}, variant));
2679
2693
  };
2680
2694
 
2681
- export { Experience, MergeTag, NinetailedProvider, Personalize, TrackHasSeenComponent, getSSRLoadingComponent, useNinetailed, usePersonalize, useProfile };
2695
+ export { ESRLoadingComponent, Experience, MergeTag, NinetailedProvider, Personalize, TrackHasSeenComponent, useNinetailed, usePersonalize, useProfile };
package/index.umd.js CHANGED
@@ -2190,49 +2190,59 @@
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
- });
2193
+ var ESRContext = /*#__PURE__*/React__default["default"].createContext(undefined);
2194
+ var useESR = function useESR() {
2195
+ var context = React__default["default"].useContext(ESRContext);
2203
2196
 
2204
- if (!experience) {
2205
- return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2206
- }
2197
+ if (context === undefined) {
2198
+ throw new Error('The component using the the context must be a descendant of the ESRProvider');
2199
+ }
2207
2200
 
2208
- var component = experience.components.find(function (component) {
2209
- return component.baseline.id === baseline.id;
2210
- });
2201
+ return {
2202
+ experienceVariantsMap: context.experienceVariantsMap
2203
+ };
2204
+ };
2205
+ var ESRLoadingComponent = function ESRLoadingComponent(_a) {
2206
+ var experiences = _a.experiences,
2207
+ Component = _a.component,
2208
+ baseline = __rest(_a, ["experiences", "component"]);
2211
2209
 
2212
- if (!component) {
2213
- return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2214
- }
2210
+ var experienceVariantsMap = useESR().experienceVariantsMap;
2211
+ var experience = experiences.find(function (experience) {
2212
+ return has__default["default"](experienceVariantsMap, experience.id);
2213
+ });
2215
2214
 
2216
- if (encodedExperienceVariantsMap[experience.id] === 0) {
2217
- return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2218
- }
2215
+ if (!experience) {
2216
+ return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2217
+ }
2219
2218
 
2220
- var variant = component.variants[encodedExperienceVariantsMap[experience.id] - 1];
2219
+ var component = experience.components.find(function (component) {
2220
+ return component.baseline.id === baseline.id;
2221
+ });
2221
2222
 
2222
- if (!variant) {
2223
- return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2224
- }
2223
+ if (!component) {
2224
+ return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2225
+ }
2225
2226
 
2226
- return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, variant));
2227
- };
2227
+ if (experienceVariantsMap[experience.id] === 0) {
2228
+ return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2229
+ }
2230
+
2231
+ var variant = component.variants[experienceVariantsMap[experience.id] - 1];
2232
+
2233
+ if (!variant) {
2234
+ return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2235
+ }
2236
+
2237
+ return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, variant));
2228
2238
  };
2229
2239
 
2240
+ exports.ESRLoadingComponent = ESRLoadingComponent;
2230
2241
  exports.Experience = Experience;
2231
2242
  exports.MergeTag = MergeTag;
2232
2243
  exports.NinetailedProvider = NinetailedProvider;
2233
2244
  exports.Personalize = Personalize;
2234
2245
  exports.TrackHasSeenComponent = TrackHasSeenComponent;
2235
- exports.getSSRLoadingComponent = getSSRLoadingComponent;
2236
2246
  exports.useNinetailed = useNinetailed;
2237
2247
  exports.usePersonalize = usePersonalize;
2238
2248
  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 { 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, 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.25",
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.25",
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.25",
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;