@ninetailed/experience.js-react 2.0.1 → 2.0.2

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
@@ -2563,11 +2563,54 @@ const useJoinExperiment = ({
2563
2563
  }, [experiences]);
2564
2564
  };
2565
2565
 
2566
+ const DefaultExperienceLoadingComponent = _a => {
2567
+ var {
2568
+ component: Component,
2569
+ experiences,
2570
+ unhideAfterMs = 5000
2571
+ } = _a,
2572
+ baseline = __rest(_a, ["component", "experiences", "unhideAfterMs"]);
2573
+
2574
+ const [hidden, setHidden] = useState(true);
2575
+ useEffect(() => {
2576
+ const timer = setTimeout(() => {
2577
+ setHidden(false);
2578
+ }, unhideAfterMs);
2579
+ return () => {
2580
+ clearTimeout(timer);
2581
+ };
2582
+ }, []);
2583
+
2584
+ if (hidden) {
2585
+ return /*#__PURE__*/React.createElement("div", {
2586
+ key: "hide",
2587
+ style: {
2588
+ opacity: 0
2589
+ }
2590
+ }, /*#__PURE__*/React.createElement(Component, Object.assign({}, baseline, {
2591
+ ninetailed: {
2592
+ isPersonalized: false,
2593
+ audience: {
2594
+ id: 'baseline'
2595
+ }
2596
+ }
2597
+ })));
2598
+ }
2599
+
2600
+ return /*#__PURE__*/React.createElement(Component, Object.assign({}, baseline, {
2601
+ ninetailed: {
2602
+ isPersonalized: false,
2603
+ audience: {
2604
+ id: 'baseline'
2605
+ }
2606
+ }
2607
+ }));
2608
+ };
2566
2609
  const Experience = _a => {
2567
2610
  var {
2568
2611
  experiences,
2569
2612
  component: Component,
2570
- loadingComponent: LoadingComponent
2613
+ loadingComponent: LoadingComponent = DefaultExperienceLoadingComponent
2571
2614
  } = _a,
2572
2615
  baseline = __rest(_a, ["experiences", "component", "loadingComponent"]);
2573
2616
 
@@ -2600,26 +2643,10 @@ const Experience = _a => {
2600
2643
  }
2601
2644
 
2602
2645
  if (status === 'loading') {
2603
- if (LoadingComponent) {
2604
- return /*#__PURE__*/React.createElement(LoadingComponent, Object.assign({}, baseline, {
2605
- experiences: experiences,
2606
- component: Component
2607
- }));
2608
- }
2609
-
2610
- return /*#__PURE__*/React.createElement("div", {
2611
- key: "hide",
2612
- style: {
2613
- opacity: 0
2614
- }
2615
- }, /*#__PURE__*/React.createElement(Component, Object.assign({}, baseline, {
2616
- ninetailed: {
2617
- isPersonalized: false,
2618
- audience: {
2619
- id: 'baseline'
2620
- }
2621
- }
2622
- })));
2646
+ return /*#__PURE__*/React.createElement(LoadingComponent, Object.assign({}, baseline, {
2647
+ experiences: experiences,
2648
+ component: Component
2649
+ }));
2623
2650
  }
2624
2651
 
2625
2652
  if (!experience) {
@@ -2724,4 +2751,4 @@ const ESRLoadingComponent = _a => {
2724
2751
  return /*#__PURE__*/React.createElement(Component, Object.assign({}, variant));
2725
2752
  };
2726
2753
 
2727
- export { ESRLoadingComponent, ESRProvider, Experience, MergeTag, NinetailedProvider, Personalize, TrackHasSeenComponent, useNinetailed, usePersonalize, useProfile };
2754
+ export { DefaultExperienceLoadingComponent, ESRLoadingComponent, ESRProvider, Experience, MergeTag, NinetailedProvider, Personalize, TrackHasSeenComponent, useNinetailed, usePersonalize, useProfile };
package/index.umd.js CHANGED
@@ -2110,23 +2110,69 @@
2110
2110
  }, [experiences]);
2111
2111
  };
2112
2112
 
2113
+ var DefaultExperienceLoadingComponent = function DefaultExperienceLoadingComponent(_a) {
2114
+ var Component = _a.component;
2115
+ _a.experiences;
2116
+ var _b = _a.unhideAfterMs,
2117
+ unhideAfterMs = _b === void 0 ? 5000 : _b,
2118
+ baseline = __rest(_a, ["component", "experiences", "unhideAfterMs"]);
2119
+
2120
+ var _c = React.useState(true),
2121
+ hidden = _c[0],
2122
+ setHidden = _c[1];
2123
+
2124
+ React.useEffect(function () {
2125
+ var timer = setTimeout(function () {
2126
+ setHidden(false);
2127
+ }, unhideAfterMs);
2128
+ return function () {
2129
+ clearTimeout(timer);
2130
+ };
2131
+ }, []);
2132
+
2133
+ if (hidden) {
2134
+ return /*#__PURE__*/React__default["default"].createElement("div", {
2135
+ key: "hide",
2136
+ style: {
2137
+ opacity: 0
2138
+ }
2139
+ }, /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline, {
2140
+ ninetailed: {
2141
+ isPersonalized: false,
2142
+ audience: {
2143
+ id: 'baseline'
2144
+ }
2145
+ }
2146
+ })));
2147
+ }
2148
+
2149
+ return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline, {
2150
+ ninetailed: {
2151
+ isPersonalized: false,
2152
+ audience: {
2153
+ id: 'baseline'
2154
+ }
2155
+ }
2156
+ }));
2157
+ };
2113
2158
  var Experience = function Experience(_a) {
2114
2159
  var experiences = _a.experiences,
2115
2160
  Component = _a.component,
2116
- LoadingComponent = _a.loadingComponent,
2161
+ _b = _a.loadingComponent,
2162
+ LoadingComponent = _b === void 0 ? DefaultExperienceLoadingComponent : _b,
2117
2163
  baseline = __rest(_a, ["experiences", "component", "loadingComponent"]);
2118
2164
 
2119
- var _b = useExperience({
2165
+ var _c = useExperience({
2120
2166
  baseline: baseline,
2121
2167
  experiences: experiences
2122
2168
  }),
2123
- status = _b.status,
2124
- hasVariants = _b.hasVariants,
2125
- experience = _b.experience,
2126
- variant = _b.variant,
2127
- audience = _b.audience,
2128
- isPersonalized = _b.isPersonalized,
2129
- profile = _b.profile;
2169
+ status = _c.status,
2170
+ hasVariants = _c.hasVariants,
2171
+ experience = _c.experience,
2172
+ variant = _c.variant,
2173
+ audience = _c.audience,
2174
+ isPersonalized = _c.isPersonalized,
2175
+ profile = _c.profile;
2130
2176
 
2131
2177
  var joinExperiment = useJoinExperiment({
2132
2178
  experiences: experiences
@@ -2145,26 +2191,10 @@
2145
2191
  }
2146
2192
 
2147
2193
  if (status === 'loading') {
2148
- if (LoadingComponent) {
2149
- return /*#__PURE__*/React__default["default"].createElement(LoadingComponent, __assign({}, baseline, {
2150
- experiences: experiences,
2151
- component: Component
2152
- }));
2153
- }
2154
-
2155
- return /*#__PURE__*/React__default["default"].createElement("div", {
2156
- key: "hide",
2157
- style: {
2158
- opacity: 0
2159
- }
2160
- }, /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline, {
2161
- ninetailed: {
2162
- isPersonalized: false,
2163
- audience: {
2164
- id: 'baseline'
2165
- }
2166
- }
2167
- })));
2194
+ return /*#__PURE__*/React__default["default"].createElement(LoadingComponent, __assign({}, baseline, {
2195
+ experiences: experiences,
2196
+ component: Component
2197
+ }));
2168
2198
  }
2169
2199
 
2170
2200
  if (!experience) {
@@ -2268,6 +2298,7 @@
2268
2298
  return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, variant));
2269
2299
  };
2270
2300
 
2301
+ exports.DefaultExperienceLoadingComponent = DefaultExperienceLoadingComponent;
2271
2302
  exports.ESRLoadingComponent = ESRLoadingComponent;
2272
2303
  exports.ESRProvider = ESRProvider;
2273
2304
  exports.Experience = Experience;
@@ -18,6 +18,11 @@ export declare type ExperienceProps<P extends Baseline> = ExperienceBaseProps<P>
18
18
  component: ExperienceComponent<P> | React.ComponentType<P>;
19
19
  loadingComponent?: ExperienceLoadingComponent<P>;
20
20
  };
21
+ declare type DefaultExperienceLoadingComponentProps = ExperienceBaseProps & {
22
+ unhideAfterMs?: number;
23
+ };
24
+ export declare const DefaultExperienceLoadingComponent: React.FC<DefaultExperienceLoadingComponentProps>;
21
25
  export declare const Experience: <P extends {
22
26
  id: string;
23
27
  }>({ experiences, component: Component, loadingComponent: LoadingComponent, ...baseline }: ExperienceProps<P>) => JSX.Element;
28
+ export {};
@@ -1,3 +1,3 @@
1
- export { Experience } from './Experience';
2
- export type { ExperienceProps, ExperienceBaseProps, ExperienceComponent, ExperienceLoadingComponent, } from './Experience';
1
+ export { Experience, DefaultExperienceLoadingComponent } from './Experience';
2
+ export type { ExperienceProps, ExperienceBaseProps, ExperienceComponent, ExperienceLoadingComponent } from './Experience';
3
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, ESRProvider, ESRLoadingComponent } from './Experience';
12
+ export { Experience, ESRProvider, ESRLoadingComponent, DefaultExperienceLoadingComponent } from './Experience';
13
13
  export type { ExperienceProps, ExperienceBaseProps, ExperienceComponent, ExperienceLoadingComponent, } from './Experience';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ninetailed/experience.js-react",
3
- "version": "2.0.1",
3
+ "version": "2.0.2",
4
4
  "peerDependencies": {
5
5
  "react": ">=16.8.0"
6
6
  },
@@ -8,9 +8,9 @@
8
8
  "@analytics/google-analytics": "0.5.3",
9
9
  "react-visibility-sensor": "5.1.1",
10
10
  "lodash": "^4.17.21",
11
- "@ninetailed/experience.js": "2.0.1",
11
+ "@ninetailed/experience.js": "2.0.2",
12
12
  "analytics": "^0.8.0",
13
- "@ninetailed/experience.js-shared": "2.0.1",
13
+ "@ninetailed/experience.js-shared": "2.0.2",
14
14
  "uuid": "^8.3.2",
15
15
  "ts-toolbelt": "^9.6.0",
16
16
  "locale-enum": "^1.1.1",