@ninetailed/experience.js-react 1.8.1 → 2.0.0-beta.5

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.umd.js CHANGED
@@ -11,17 +11,31 @@
11
11
 
12
12
  var NinetailedContext = /*#__PURE__*/React.createContext(undefined);
13
13
 
14
+ var ExperimentsContext = /*#__PURE__*/React.createContext(undefined);
15
+
16
+ var ExperimentsProvider = function ExperimentsProvider(_a) {
17
+ var experiments = _a.experiments,
18
+ children = _a.children;
19
+ return /*#__PURE__*/React__default["default"].createElement(ExperimentsContext.Provider, {
20
+ value: {
21
+ experiments: experiments
22
+ }
23
+ }, children);
24
+ };
25
+
14
26
  var NinetailedProvider = function NinetailedProvider(_a) {
15
27
  var children = _a.children,
16
28
  clientId = _a.clientId,
29
+ _b = _a.experiments,
30
+ experiments = _b === void 0 ? [] : _b,
17
31
  environment = _a.environment,
18
32
  preview = _a.preview,
19
33
  url = _a.url,
20
34
  profile = _a.profile,
21
35
  locale = _a.locale,
22
36
  requestTimeout = _a.requestTimeout,
23
- _b = _a.plugins,
24
- plugins = _b === void 0 ? [] : _b;
37
+ _c = _a.plugins,
38
+ plugins = _c === void 0 ? [] : _c;
25
39
  var ninetailed = React.useMemo(function () {
26
40
  return new experience_js.Ninetailed({
27
41
  clientId: clientId,
@@ -37,7 +51,9 @@
37
51
  }, []);
38
52
  return /*#__PURE__*/React__default["default"].createElement(NinetailedContext.Provider, {
39
53
  value: ninetailed
40
- }, children);
54
+ }, /*#__PURE__*/React__default["default"].createElement(ExperimentsProvider, {
55
+ experiments: experiments
56
+ }, children));
41
57
  };
42
58
 
43
59
  var useNinetailed = function useNinetailed() {
@@ -50,32 +66,6 @@
50
66
  return ninetailed;
51
67
  };
52
68
 
53
- var useProfile = function useProfile() {
54
- var ninetailed = useNinetailed();
55
-
56
- var _a = React.useState(ninetailed.profileState),
57
- profileState = _a[0],
58
- setProfileState = _a[1];
59
-
60
- React.useEffect(function () {
61
- return ninetailed.onProfileChange(function (profileState) {
62
- setProfileState(profileState);
63
- });
64
- }, []);
65
- return profileState;
66
- };
67
-
68
- var usePersonalize = function usePersonalize(baseline, variants, options) {
69
- if (options === void 0) {
70
- options = {
71
- holdout: -1
72
- };
73
- }
74
-
75
- var profile = useProfile();
76
- return experience_js.selectVariant(baseline, variants, profile, options);
77
- };
78
-
79
69
  /*! *****************************************************************************
80
70
  Copyright (c) Microsoft Corporation.
81
71
 
@@ -114,6 +104,34 @@
114
104
  return t;
115
105
  }
116
106
 
107
+ var useProfile = function useProfile() {
108
+ var ninetailed = useNinetailed();
109
+
110
+ var _a = React.useState(ninetailed.profileState),
111
+ profileState = _a[0],
112
+ setProfileState = _a[1];
113
+
114
+ React.useEffect(function () {
115
+ return ninetailed.onProfileChange(function (profileState) {
116
+ setProfileState(profileState);
117
+ });
118
+ }, []);
119
+ return __assign(__assign({}, profileState), {
120
+ loading: profileState.status === 'loading'
121
+ });
122
+ };
123
+
124
+ var usePersonalize = function usePersonalize(baseline, variants, options) {
125
+ if (options === void 0) {
126
+ options = {
127
+ holdout: -1
128
+ };
129
+ }
130
+
131
+ var profile = useProfile();
132
+ return experience_js.selectVariant(baseline, variants, profile, options);
133
+ };
134
+
117
135
  var TrackHasSeenComponent = function TrackHasSeenComponent(_a) {
118
136
  var children = _a.children,
119
137
  variant = _a.variant,
@@ -207,7 +225,7 @@
207
225
  };
208
226
 
209
227
  // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
210
- var global$r =
228
+ var global$t =
211
229
  // eslint-disable-next-line es/no-global-this -- safe
212
230
  check(typeof globalThis == 'object' && globalThis) ||
213
231
  check(typeof window == 'object' && window) ||
@@ -219,7 +237,7 @@
219
237
 
220
238
  var objectGetOwnPropertyDescriptor = {};
221
239
 
222
- var fails$c = function (exec) {
240
+ var fails$d = function (exec) {
223
241
  try {
224
242
  return !!exec();
225
243
  } catch (error) {
@@ -227,17 +245,17 @@
227
245
  }
228
246
  };
229
247
 
230
- var fails$b = fails$c;
248
+ var fails$c = fails$d;
231
249
 
232
250
  // Detect IE8's incomplete defineProperty implementation
233
- var descriptors = !fails$b(function () {
251
+ var descriptors = !fails$c(function () {
234
252
  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
235
253
  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
236
254
  });
237
255
 
238
- var fails$a = fails$c;
256
+ var fails$b = fails$d;
239
257
 
240
- var functionBindNative = !fails$a(function () {
258
+ var functionBindNative = !fails$b(function () {
241
259
  var test = (function () { /* empty */ }).bind();
242
260
  // eslint-disable-next-line no-prototype-builtins -- safe
243
261
  return typeof test != 'function' || test.hasOwnProperty('prototype');
@@ -300,40 +318,40 @@
300
318
  return stringSlice$4(toString$5(it), 8, -1);
301
319
  };
302
320
 
303
- var global$q = global$r;
321
+ var global$s = global$t;
304
322
  var uncurryThis$c = functionUncurryThis;
305
- var fails$9 = fails$c;
306
- var classof$3 = classofRaw$1;
323
+ var fails$a = fails$d;
324
+ var classof$4 = classofRaw$1;
307
325
 
308
- var Object$4 = global$q.Object;
326
+ var Object$4 = global$s.Object;
309
327
  var split = uncurryThis$c(''.split);
310
328
 
311
329
  // fallback for non-array-like ES3 and non-enumerable old V8 strings
312
- var indexedObject = fails$9(function () {
330
+ var indexedObject = fails$a(function () {
313
331
  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
314
332
  // eslint-disable-next-line no-prototype-builtins -- safe
315
333
  return !Object$4('z').propertyIsEnumerable(0);
316
334
  }) ? function (it) {
317
- return classof$3(it) == 'String' ? split(it, '') : Object$4(it);
335
+ return classof$4(it) == 'String' ? split(it, '') : Object$4(it);
318
336
  } : Object$4;
319
337
 
320
- var global$p = global$r;
338
+ var global$r = global$t;
321
339
 
322
- var TypeError$8 = global$p.TypeError;
340
+ var TypeError$9 = global$r.TypeError;
323
341
 
324
342
  // `RequireObjectCoercible` abstract operation
325
343
  // https://tc39.es/ecma262/#sec-requireobjectcoercible
326
344
  var requireObjectCoercible$4 = function (it) {
327
- if (it == undefined) throw TypeError$8("Can't call method on " + it);
345
+ if (it == undefined) throw TypeError$9("Can't call method on " + it);
328
346
  return it;
329
347
  };
330
348
 
331
349
  // toObject with fallback for non-array-like ES3 strings
332
- var IndexedObject = indexedObject;
350
+ var IndexedObject$1 = indexedObject;
333
351
  var requireObjectCoercible$3 = requireObjectCoercible$4;
334
352
 
335
353
  var toIndexedObject$4 = function (it) {
336
- return IndexedObject(requireObjectCoercible$3(it));
354
+ return IndexedObject$1(requireObjectCoercible$3(it));
337
355
  };
338
356
 
339
357
  // `IsCallable` abstract operation
@@ -348,7 +366,7 @@
348
366
  return typeof it == 'object' ? it !== null : isCallable$b(it);
349
367
  };
350
368
 
351
- var global$o = global$r;
369
+ var global$q = global$t;
352
370
  var isCallable$a = isCallable$c;
353
371
 
354
372
  var aFunction = function (argument) {
@@ -356,7 +374,7 @@
356
374
  };
357
375
 
358
376
  var getBuiltIn$4 = function (namespace, method) {
359
- return arguments.length < 2 ? aFunction(global$o[namespace]) : global$o[namespace] && global$o[namespace][method];
377
+ return arguments.length < 2 ? aFunction(global$q[namespace]) : global$q[namespace] && global$q[namespace][method];
360
378
  };
361
379
 
362
380
  var uncurryThis$b = functionUncurryThis;
@@ -367,11 +385,11 @@
367
385
 
368
386
  var engineUserAgent = getBuiltIn$3('navigator', 'userAgent') || '';
369
387
 
370
- var global$n = global$r;
388
+ var global$p = global$t;
371
389
  var userAgent = engineUserAgent;
372
390
 
373
- var process = global$n.process;
374
- var Deno = global$n.Deno;
391
+ var process = global$p.process;
392
+ var Deno = global$p.Deno;
375
393
  var versions = process && process.versions || Deno && Deno.version;
376
394
  var v8 = versions && versions.v8;
377
395
  var match, version;
@@ -398,10 +416,10 @@
398
416
  /* eslint-disable es/no-symbol -- required for testing */
399
417
 
400
418
  var V8_VERSION = engineV8Version;
401
- var fails$8 = fails$c;
419
+ var fails$9 = fails$d;
402
420
 
403
421
  // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
404
- var nativeSymbol = !!Object.getOwnPropertySymbols && !fails$8(function () {
422
+ var nativeSymbol = !!Object.getOwnPropertySymbols && !fails$9(function () {
405
423
  var symbol = Symbol();
406
424
  // Chrome 38 Symbol has incorrect toString conversion
407
425
  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
@@ -418,13 +436,13 @@
418
436
  && !Symbol.sham
419
437
  && typeof Symbol.iterator == 'symbol';
420
438
 
421
- var global$m = global$r;
439
+ var global$o = global$t;
422
440
  var getBuiltIn$2 = getBuiltIn$4;
423
441
  var isCallable$9 = isCallable$c;
424
442
  var isPrototypeOf = objectIsPrototypeOf;
425
443
  var USE_SYMBOL_AS_UID$1 = useSymbolAsUid;
426
444
 
427
- var Object$3 = global$m.Object;
445
+ var Object$3 = global$o.Object;
428
446
 
429
447
  var isSymbol$2 = USE_SYMBOL_AS_UID$1 ? function (it) {
430
448
  return typeof it == 'symbol';
@@ -433,9 +451,9 @@
433
451
  return isCallable$9($Symbol) && isPrototypeOf($Symbol.prototype, Object$3(it));
434
452
  };
435
453
 
436
- var global$l = global$r;
454
+ var global$n = global$t;
437
455
 
438
- var String$3 = global$l.String;
456
+ var String$3 = global$n.String;
439
457
 
440
458
  var tryToString$1 = function (argument) {
441
459
  try {
@@ -445,33 +463,33 @@
445
463
  }
446
464
  };
447
465
 
448
- var global$k = global$r;
466
+ var global$m = global$t;
449
467
  var isCallable$8 = isCallable$c;
450
468
  var tryToString = tryToString$1;
451
469
 
452
- var TypeError$7 = global$k.TypeError;
470
+ var TypeError$8 = global$m.TypeError;
453
471
 
454
472
  // `Assert: IsCallable(argument) is true`
455
- var aCallable$1 = function (argument) {
473
+ var aCallable$2 = function (argument) {
456
474
  if (isCallable$8(argument)) return argument;
457
- throw TypeError$7(tryToString(argument) + ' is not a function');
475
+ throw TypeError$8(tryToString(argument) + ' is not a function');
458
476
  };
459
477
 
460
- var aCallable = aCallable$1;
478
+ var aCallable$1 = aCallable$2;
461
479
 
462
480
  // `GetMethod` abstract operation
463
481
  // https://tc39.es/ecma262/#sec-getmethod
464
482
  var getMethod$2 = function (V, P) {
465
483
  var func = V[P];
466
- return func == null ? undefined : aCallable(func);
484
+ return func == null ? undefined : aCallable$1(func);
467
485
  };
468
486
 
469
- var global$j = global$r;
487
+ var global$l = global$t;
470
488
  var call$6 = functionCall;
471
489
  var isCallable$7 = isCallable$c;
472
490
  var isObject$4 = isObject$5;
473
491
 
474
- var TypeError$6 = global$j.TypeError;
492
+ var TypeError$7 = global$l.TypeError;
475
493
 
476
494
  // `OrdinaryToPrimitive` abstract operation
477
495
  // https://tc39.es/ecma262/#sec-ordinarytoprimitive
@@ -480,29 +498,29 @@
480
498
  if (pref === 'string' && isCallable$7(fn = input.toString) && !isObject$4(val = call$6(fn, input))) return val;
481
499
  if (isCallable$7(fn = input.valueOf) && !isObject$4(val = call$6(fn, input))) return val;
482
500
  if (pref !== 'string' && isCallable$7(fn = input.toString) && !isObject$4(val = call$6(fn, input))) return val;
483
- throw TypeError$6("Can't convert object to primitive value");
501
+ throw TypeError$7("Can't convert object to primitive value");
484
502
  };
485
503
 
486
504
  var shared$4 = {exports: {}};
487
505
 
488
- var global$i = global$r;
506
+ var global$k = global$t;
489
507
 
490
508
  // eslint-disable-next-line es/no-object-defineproperty -- safe
491
509
  var defineProperty = Object.defineProperty;
492
510
 
493
511
  var setGlobal$3 = function (key, value) {
494
512
  try {
495
- defineProperty(global$i, key, { value: value, configurable: true, writable: true });
513
+ defineProperty(global$k, key, { value: value, configurable: true, writable: true });
496
514
  } catch (error) {
497
- global$i[key] = value;
515
+ global$k[key] = value;
498
516
  } return value;
499
517
  };
500
518
 
501
- var global$h = global$r;
519
+ var global$j = global$t;
502
520
  var setGlobal$2 = setGlobal$3;
503
521
 
504
522
  var SHARED = '__core-js_shared__';
505
- var store$3 = global$h[SHARED] || setGlobal$2(SHARED, {});
523
+ var store$3 = global$j[SHARED] || setGlobal$2(SHARED, {});
506
524
 
507
525
  var sharedStore = store$3;
508
526
 
@@ -518,26 +536,26 @@
518
536
  source: 'https://github.com/zloirock/core-js'
519
537
  });
520
538
 
521
- var global$g = global$r;
539
+ var global$i = global$t;
522
540
  var requireObjectCoercible$2 = requireObjectCoercible$4;
523
541
 
524
- var Object$2 = global$g.Object;
542
+ var Object$2 = global$i.Object;
525
543
 
526
544
  // `ToObject` abstract operation
527
545
  // https://tc39.es/ecma262/#sec-toobject
528
- var toObject$2 = function (argument) {
546
+ var toObject$3 = function (argument) {
529
547
  return Object$2(requireObjectCoercible$2(argument));
530
548
  };
531
549
 
532
550
  var uncurryThis$a = functionUncurryThis;
533
- var toObject$1 = toObject$2;
551
+ var toObject$2 = toObject$3;
534
552
 
535
553
  var hasOwnProperty = uncurryThis$a({}.hasOwnProperty);
536
554
 
537
555
  // `HasOwnProperty` abstract operation
538
556
  // https://tc39.es/ecma262/#sec-hasownproperty
539
557
  var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) {
540
- return hasOwnProperty(toObject$1(it), key);
558
+ return hasOwnProperty(toObject$2(it), key);
541
559
  };
542
560
 
543
561
  var uncurryThis$9 = functionUncurryThis;
@@ -550,7 +568,7 @@
550
568
  return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString$4(++id + postfix, 36);
551
569
  };
552
570
 
553
- var global$f = global$r;
571
+ var global$h = global$t;
554
572
  var shared$3 = shared$4.exports;
555
573
  var hasOwn$6 = hasOwnProperty_1;
556
574
  var uid$1 = uid$2;
@@ -558,7 +576,7 @@
558
576
  var USE_SYMBOL_AS_UID = useSymbolAsUid;
559
577
 
560
578
  var WellKnownSymbolsStore = shared$3('wks');
561
- var Symbol$1 = global$f.Symbol;
579
+ var Symbol$1 = global$h.Symbol;
562
580
  var symbolFor = Symbol$1 && Symbol$1['for'];
563
581
  var createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid$1;
564
582
 
@@ -575,7 +593,7 @@
575
593
  } return WellKnownSymbolsStore[name];
576
594
  };
577
595
 
578
- var global$e = global$r;
596
+ var global$g = global$t;
579
597
  var call$5 = functionCall;
580
598
  var isObject$3 = isObject$5;
581
599
  var isSymbol$1 = isSymbol$2;
@@ -583,7 +601,7 @@
583
601
  var ordinaryToPrimitive = ordinaryToPrimitive$1;
584
602
  var wellKnownSymbol$4 = wellKnownSymbol$5;
585
603
 
586
- var TypeError$5 = global$e.TypeError;
604
+ var TypeError$6 = global$g.TypeError;
587
605
  var TO_PRIMITIVE = wellKnownSymbol$4('toPrimitive');
588
606
 
589
607
  // `ToPrimitive` abstract operation
@@ -596,7 +614,7 @@
596
614
  if (pref === undefined) pref = 'default';
597
615
  result = call$5(exoticToPrim, input, pref);
598
616
  if (!isObject$3(result) || isSymbol$1(result)) return result;
599
- throw TypeError$5("Can't convert object to primitive value");
617
+ throw TypeError$6("Can't convert object to primitive value");
600
618
  }
601
619
  if (pref === undefined) pref = 'number';
602
620
  return ordinaryToPrimitive(input, pref);
@@ -612,10 +630,10 @@
612
630
  return isSymbol(key) ? key : key + '';
613
631
  };
614
632
 
615
- var global$d = global$r;
633
+ var global$f = global$t;
616
634
  var isObject$2 = isObject$5;
617
635
 
618
- var document$1 = global$d.document;
636
+ var document$1 = global$f.document;
619
637
  // typeof document.createElement is 'object' in old IE
620
638
  var EXISTS$1 = isObject$2(document$1) && isObject$2(document$1.createElement);
621
639
 
@@ -624,11 +642,11 @@
624
642
  };
625
643
 
626
644
  var DESCRIPTORS$6 = descriptors;
627
- var fails$7 = fails$c;
645
+ var fails$8 = fails$d;
628
646
  var createElement = documentCreateElement$1;
629
647
 
630
648
  // Thanks to IE8 for its funny defineProperty
631
- var ie8DomDefine = !DESCRIPTORS$6 && !fails$7(function () {
649
+ var ie8DomDefine = !DESCRIPTORS$6 && !fails$8(function () {
632
650
  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
633
651
  return Object.defineProperty(createElement('div'), 'a', {
634
652
  get: function () { return 7; }
@@ -661,11 +679,11 @@
661
679
  var objectDefineProperty = {};
662
680
 
663
681
  var DESCRIPTORS$4 = descriptors;
664
- var fails$6 = fails$c;
682
+ var fails$7 = fails$d;
665
683
 
666
684
  // V8 ~ Chrome 36-
667
685
  // https://bugs.chromium.org/p/v8/issues/detail?id=3334
668
- var v8PrototypeDefineBug = DESCRIPTORS$4 && fails$6(function () {
686
+ var v8PrototypeDefineBug = DESCRIPTORS$4 && fails$7(function () {
669
687
  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
670
688
  return Object.defineProperty(function () { /* empty */ }, 'prototype', {
671
689
  value: 42,
@@ -673,26 +691,26 @@
673
691
  }).prototype != 42;
674
692
  });
675
693
 
676
- var global$c = global$r;
694
+ var global$e = global$t;
677
695
  var isObject$1 = isObject$5;
678
696
 
679
- var String$2 = global$c.String;
680
- var TypeError$4 = global$c.TypeError;
697
+ var String$2 = global$e.String;
698
+ var TypeError$5 = global$e.TypeError;
681
699
 
682
700
  // `Assert: Type(argument) is Object`
683
701
  var anObject$7 = function (argument) {
684
702
  if (isObject$1(argument)) return argument;
685
- throw TypeError$4(String$2(argument) + ' is not an object');
703
+ throw TypeError$5(String$2(argument) + ' is not an object');
686
704
  };
687
705
 
688
- var global$b = global$r;
706
+ var global$d = global$t;
689
707
  var DESCRIPTORS$3 = descriptors;
690
708
  var IE8_DOM_DEFINE = ie8DomDefine;
691
709
  var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug;
692
710
  var anObject$6 = anObject$7;
693
711
  var toPropertyKey = toPropertyKey$2;
694
712
 
695
- var TypeError$3 = global$b.TypeError;
713
+ var TypeError$4 = global$d.TypeError;
696
714
  // eslint-disable-next-line es/no-object-defineproperty -- safe
697
715
  var $defineProperty = Object.defineProperty;
698
716
  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
@@ -725,7 +743,7 @@
725
743
  if (IE8_DOM_DEFINE) try {
726
744
  return $defineProperty(O, P, Attributes);
727
745
  } catch (error) { /* empty */ }
728
- if ('get' in Attributes || 'set' in Attributes) throw TypeError$3('Accessors not supported');
746
+ if ('get' in Attributes || 'set' in Attributes) throw TypeError$4('Accessors not supported');
729
747
  if ('value' in Attributes) O[P] = Attributes.value;
730
748
  return O;
731
749
  };
@@ -758,11 +776,11 @@
758
776
 
759
777
  var inspectSource$2 = store$1.inspectSource;
760
778
 
761
- var global$a = global$r;
779
+ var global$c = global$t;
762
780
  var isCallable$5 = isCallable$c;
763
781
  var inspectSource$1 = inspectSource$2;
764
782
 
765
- var WeakMap$1 = global$a.WeakMap;
783
+ var WeakMap$1 = global$c.WeakMap;
766
784
 
767
785
  var nativeWeakMap = isCallable$5(WeakMap$1) && /native code/.test(inspectSource$1(WeakMap$1));
768
786
 
@@ -778,7 +796,7 @@
778
796
  var hiddenKeys$4 = {};
779
797
 
780
798
  var NATIVE_WEAK_MAP = nativeWeakMap;
781
- var global$9 = global$r;
799
+ var global$b = global$t;
782
800
  var uncurryThis$7 = functionUncurryThis;
783
801
  var isObject = isObject$5;
784
802
  var createNonEnumerableProperty$3 = createNonEnumerableProperty$4;
@@ -788,8 +806,8 @@
788
806
  var hiddenKeys$3 = hiddenKeys$4;
789
807
 
790
808
  var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
791
- var TypeError$2 = global$9.TypeError;
792
- var WeakMap = global$9.WeakMap;
809
+ var TypeError$3 = global$b.TypeError;
810
+ var WeakMap = global$b.WeakMap;
793
811
  var set, get, has;
794
812
 
795
813
  var enforce = function (it) {
@@ -800,7 +818,7 @@
800
818
  return function (it) {
801
819
  var state;
802
820
  if (!isObject(it) || (state = get(it)).type !== TYPE) {
803
- throw TypeError$2('Incompatible receiver, ' + TYPE + ' required');
821
+ throw TypeError$3('Incompatible receiver, ' + TYPE + ' required');
804
822
  } return state;
805
823
  };
806
824
  };
@@ -811,7 +829,7 @@
811
829
  var wmhas = uncurryThis$7(store.has);
812
830
  var wmset = uncurryThis$7(store.set);
813
831
  set = function (it, metadata) {
814
- if (wmhas(store, it)) throw new TypeError$2(OBJECT_ALREADY_INITIALIZED);
832
+ if (wmhas(store, it)) throw new TypeError$3(OBJECT_ALREADY_INITIALIZED);
815
833
  metadata.facade = it;
816
834
  wmset(store, it, metadata);
817
835
  return metadata;
@@ -826,7 +844,7 @@
826
844
  var STATE = sharedKey$1('state');
827
845
  hiddenKeys$3[STATE] = true;
828
846
  set = function (it, metadata) {
829
- if (hasOwn$4(it, STATE)) throw new TypeError$2(OBJECT_ALREADY_INITIALIZED);
847
+ if (hasOwn$4(it, STATE)) throw new TypeError$3(OBJECT_ALREADY_INITIALIZED);
830
848
  metadata.facade = it;
831
849
  createNonEnumerableProperty$3(it, STATE, metadata);
832
850
  return metadata;
@@ -865,7 +883,7 @@
865
883
  CONFIGURABLE: CONFIGURABLE
866
884
  };
867
885
 
868
- var global$8 = global$r;
886
+ var global$a = global$t;
869
887
  var isCallable$4 = isCallable$c;
870
888
  var hasOwn$2 = hasOwnProperty_1;
871
889
  var createNonEnumerableProperty$2 = createNonEnumerableProperty$4;
@@ -896,7 +914,7 @@
896
914
  state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
897
915
  }
898
916
  }
899
- if (O === global$8) {
917
+ if (O === global$a) {
900
918
  if (simple) O[key] = value;
901
919
  else setGlobal$1(key, value);
902
920
  return;
@@ -952,19 +970,19 @@
952
970
 
953
971
  // `LengthOfArrayLike` abstract operation
954
972
  // https://tc39.es/ecma262/#sec-lengthofarraylike
955
- var lengthOfArrayLike$1 = function (obj) {
973
+ var lengthOfArrayLike$2 = function (obj) {
956
974
  return toLength$1(obj.length);
957
975
  };
958
976
 
959
977
  var toIndexedObject$2 = toIndexedObject$4;
960
978
  var toAbsoluteIndex = toAbsoluteIndex$1;
961
- var lengthOfArrayLike = lengthOfArrayLike$1;
979
+ var lengthOfArrayLike$1 = lengthOfArrayLike$2;
962
980
 
963
981
  // `Array.prototype.{ indexOf, includes }` methods implementation
964
- var createMethod$1 = function (IS_INCLUDES) {
982
+ var createMethod$2 = function (IS_INCLUDES) {
965
983
  return function ($this, el, fromIndex) {
966
984
  var O = toIndexedObject$2($this);
967
- var length = lengthOfArrayLike(O);
985
+ var length = lengthOfArrayLike$1(O);
968
986
  var index = toAbsoluteIndex(fromIndex, length);
969
987
  var value;
970
988
  // Array#includes uses SameValueZero equality algorithm
@@ -983,10 +1001,10 @@
983
1001
  var arrayIncludes = {
984
1002
  // `Array.prototype.includes` method
985
1003
  // https://tc39.es/ecma262/#sec-array.prototype.includes
986
- includes: createMethod$1(true),
1004
+ includes: createMethod$2(true),
987
1005
  // `Array.prototype.indexOf` method
988
1006
  // https://tc39.es/ecma262/#sec-array.prototype.indexof
989
- indexOf: createMethod$1(false)
1007
+ indexOf: createMethod$2(false)
990
1008
  };
991
1009
 
992
1010
  var uncurryThis$6 = functionUncurryThis;
@@ -1070,7 +1088,7 @@
1070
1088
  }
1071
1089
  };
1072
1090
 
1073
- var fails$5 = fails$c;
1091
+ var fails$6 = fails$d;
1074
1092
  var isCallable$3 = isCallable$c;
1075
1093
 
1076
1094
  var replacement = /#|\.prototype\./;
@@ -1079,7 +1097,7 @@
1079
1097
  var value = data[normalize(feature)];
1080
1098
  return value == POLYFILL ? true
1081
1099
  : value == NATIVE ? false
1082
- : isCallable$3(detection) ? fails$5(detection)
1100
+ : isCallable$3(detection) ? fails$6(detection)
1083
1101
  : !!detection;
1084
1102
  };
1085
1103
 
@@ -1093,7 +1111,7 @@
1093
1111
 
1094
1112
  var isForced_1 = isForced$1;
1095
1113
 
1096
- var global$7 = global$r;
1114
+ var global$9 = global$t;
1097
1115
  var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;
1098
1116
  var createNonEnumerableProperty$1 = createNonEnumerableProperty$4;
1099
1117
  var redefine$1 = redefine$2.exports;
@@ -1122,11 +1140,11 @@
1122
1140
  var STATIC = options.stat;
1123
1141
  var FORCED, target, key, targetProperty, sourceProperty, descriptor;
1124
1142
  if (GLOBAL) {
1125
- target = global$7;
1143
+ target = global$9;
1126
1144
  } else if (STATIC) {
1127
- target = global$7[TARGET] || setGlobal(TARGET, {});
1145
+ target = global$9[TARGET] || setGlobal(TARGET, {});
1128
1146
  } else {
1129
- target = (global$7[TARGET] || {}).prototype;
1147
+ target = (global$9[TARGET] || {}).prototype;
1130
1148
  }
1131
1149
  if (target) for (key in source) {
1132
1150
  sourceProperty = source[key];
@@ -1158,14 +1176,14 @@
1158
1176
 
1159
1177
  var toStringTagSupport = String(test) === '[object z]';
1160
1178
 
1161
- var global$6 = global$r;
1179
+ var global$8 = global$t;
1162
1180
  var TO_STRING_TAG_SUPPORT = toStringTagSupport;
1163
1181
  var isCallable$2 = isCallable$c;
1164
1182
  var classofRaw = classofRaw$1;
1165
1183
  var wellKnownSymbol$2 = wellKnownSymbol$5;
1166
1184
 
1167
1185
  var TO_STRING_TAG = wellKnownSymbol$2('toStringTag');
1168
- var Object$1 = global$6.Object;
1186
+ var Object$1 = global$8.Object;
1169
1187
 
1170
1188
  // ES3 wrong here
1171
1189
  var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
@@ -1178,7 +1196,7 @@
1178
1196
  };
1179
1197
 
1180
1198
  // getting tag from ES6+ `Object.prototype.toString`
1181
- var classof$2 = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
1199
+ var classof$3 = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
1182
1200
  var O, tag, result;
1183
1201
  return it === undefined ? 'Undefined' : it === null ? 'Null'
1184
1202
  // @@toStringTag case
@@ -1189,13 +1207,13 @@
1189
1207
  : (result = classofRaw(O)) == 'Object' && isCallable$2(O.callee) ? 'Arguments' : result;
1190
1208
  };
1191
1209
 
1192
- var global$5 = global$r;
1193
- var classof$1 = classof$2;
1210
+ var global$7 = global$t;
1211
+ var classof$2 = classof$3;
1194
1212
 
1195
- var String$1 = global$5.String;
1213
+ var String$1 = global$7.String;
1196
1214
 
1197
1215
  var toString$3 = function (argument) {
1198
- if (classof$1(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');
1216
+ if (classof$2(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');
1199
1217
  return String$1(argument);
1200
1218
  };
1201
1219
 
@@ -1215,13 +1233,13 @@
1215
1233
  return result;
1216
1234
  };
1217
1235
 
1218
- var fails$4 = fails$c;
1219
- var global$4 = global$r;
1236
+ var fails$5 = fails$d;
1237
+ var global$6 = global$t;
1220
1238
 
1221
1239
  // babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
1222
- var $RegExp$2 = global$4.RegExp;
1240
+ var $RegExp$2 = global$6.RegExp;
1223
1241
 
1224
- var UNSUPPORTED_Y$1 = fails$4(function () {
1242
+ var UNSUPPORTED_Y$1 = fails$5(function () {
1225
1243
  var re = $RegExp$2('a', 'y');
1226
1244
  re.lastIndex = 2;
1227
1245
  return re.exec('abcd') != null;
@@ -1229,11 +1247,11 @@
1229
1247
 
1230
1248
  // UC Browser bug
1231
1249
  // https://github.com/zloirock/core-js/issues/1008
1232
- var MISSED_STICKY = UNSUPPORTED_Y$1 || fails$4(function () {
1250
+ var MISSED_STICKY = UNSUPPORTED_Y$1 || fails$5(function () {
1233
1251
  return !$RegExp$2('a', 'y').sticky;
1234
1252
  });
1235
1253
 
1236
- var BROKEN_CARET = UNSUPPORTED_Y$1 || fails$4(function () {
1254
+ var BROKEN_CARET = UNSUPPORTED_Y$1 || fails$5(function () {
1237
1255
  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687
1238
1256
  var re = $RegExp$2('^r', 'gy');
1239
1257
  re.lastIndex = 2;
@@ -1367,24 +1385,24 @@
1367
1385
  return Properties === undefined ? result : definePropertiesModule.f(result, Properties);
1368
1386
  };
1369
1387
 
1370
- var fails$3 = fails$c;
1371
- var global$3 = global$r;
1388
+ var fails$4 = fails$d;
1389
+ var global$5 = global$t;
1372
1390
 
1373
1391
  // babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError
1374
- var $RegExp$1 = global$3.RegExp;
1392
+ var $RegExp$1 = global$5.RegExp;
1375
1393
 
1376
- var regexpUnsupportedDotAll = fails$3(function () {
1394
+ var regexpUnsupportedDotAll = fails$4(function () {
1377
1395
  var re = $RegExp$1('.', 's');
1378
1396
  return !(re.dotAll && re.exec('\n') && re.flags === 's');
1379
1397
  });
1380
1398
 
1381
- var fails$2 = fails$c;
1382
- var global$2 = global$r;
1399
+ var fails$3 = fails$d;
1400
+ var global$4 = global$t;
1383
1401
 
1384
1402
  // babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError
1385
- var $RegExp = global$2.RegExp;
1403
+ var $RegExp = global$4.RegExp;
1386
1404
 
1387
- var regexpUnsupportedNcg = fails$2(function () {
1405
+ var regexpUnsupportedNcg = fails$3(function () {
1388
1406
  var re = $RegExp('(?<a>b)', 'g');
1389
1407
  return re.exec('b').groups.a !== 'b' ||
1390
1408
  'b'.replace(re, '$<a>c') !== 'bc';
@@ -1507,12 +1525,12 @@
1507
1525
 
1508
1526
  var regexpExec$2 = patchedExec;
1509
1527
 
1510
- var $ = _export;
1528
+ var $$1 = _export;
1511
1529
  var exec = regexpExec$2;
1512
1530
 
1513
1531
  // `RegExp.prototype.exec` method
1514
1532
  // https://tc39.es/ecma262/#sec-regexp.prototype.exec
1515
- $({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
1533
+ $$1({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
1516
1534
  exec: exec
1517
1535
  });
1518
1536
 
@@ -1532,7 +1550,7 @@
1532
1550
  var uncurryThis$3 = functionUncurryThis;
1533
1551
  var redefine = redefine$2.exports;
1534
1552
  var regexpExec$1 = regexpExec$2;
1535
- var fails$1 = fails$c;
1553
+ var fails$2 = fails$d;
1536
1554
  var wellKnownSymbol$1 = wellKnownSymbol$5;
1537
1555
  var createNonEnumerableProperty = createNonEnumerableProperty$4;
1538
1556
 
@@ -1542,14 +1560,14 @@
1542
1560
  var fixRegexpWellKnownSymbolLogic = function (KEY, exec, FORCED, SHAM) {
1543
1561
  var SYMBOL = wellKnownSymbol$1(KEY);
1544
1562
 
1545
- var DELEGATES_TO_SYMBOL = !fails$1(function () {
1563
+ var DELEGATES_TO_SYMBOL = !fails$2(function () {
1546
1564
  // String methods call symbol-named RegEp methods
1547
1565
  var O = {};
1548
1566
  O[SYMBOL] = function () { return 7; };
1549
1567
  return ''[KEY](O) != 7;
1550
1568
  });
1551
1569
 
1552
- var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$1(function () {
1570
+ var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$2(function () {
1553
1571
  // Symbol-named RegExp methods call .exec
1554
1572
  var execCalled = false;
1555
1573
  var re = /a/;
@@ -1610,7 +1628,7 @@
1610
1628
  var charCodeAt = uncurryThis$2(''.charCodeAt);
1611
1629
  var stringSlice$2 = uncurryThis$2(''.slice);
1612
1630
 
1613
- var createMethod = function (CONVERT_TO_STRING) {
1631
+ var createMethod$1 = function (CONVERT_TO_STRING) {
1614
1632
  return function ($this, pos) {
1615
1633
  var S = toString$1(requireObjectCoercible$1($this));
1616
1634
  var position = toIntegerOrInfinity$1(pos);
@@ -1632,10 +1650,10 @@
1632
1650
  var stringMultibyte = {
1633
1651
  // `String.prototype.codePointAt` method
1634
1652
  // https://tc39.es/ecma262/#sec-string.prototype.codepointat
1635
- codeAt: createMethod(false),
1653
+ codeAt: createMethod$1(false),
1636
1654
  // `String.prototype.at` method
1637
1655
  // https://github.com/mathiasbynens/String.prototype.at
1638
- charAt: createMethod(true)
1656
+ charAt: createMethod$1(true)
1639
1657
  };
1640
1658
 
1641
1659
  var charAt$1 = stringMultibyte.charAt;
@@ -1647,7 +1665,7 @@
1647
1665
  };
1648
1666
 
1649
1667
  var uncurryThis$1 = functionUncurryThis;
1650
- var toObject = toObject$2;
1668
+ var toObject$1 = toObject$3;
1651
1669
 
1652
1670
  var floor = Math.floor;
1653
1671
  var charAt = uncurryThis$1(''.charAt);
@@ -1663,7 +1681,7 @@
1663
1681
  var m = captures.length;
1664
1682
  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
1665
1683
  if (namedCaptures !== undefined) {
1666
- namedCaptures = toObject(namedCaptures);
1684
+ namedCaptures = toObject$1(namedCaptures);
1667
1685
  symbols = SUBSTITUTION_SYMBOLS;
1668
1686
  }
1669
1687
  return replace(replacement, symbols, function (match, ch) {
@@ -1691,14 +1709,14 @@
1691
1709
  });
1692
1710
  };
1693
1711
 
1694
- var global$1 = global$r;
1712
+ var global$3 = global$t;
1695
1713
  var call$1 = functionCall;
1696
1714
  var anObject$1 = anObject$7;
1697
1715
  var isCallable$1 = isCallable$c;
1698
- var classof = classofRaw$1;
1716
+ var classof$1 = classofRaw$1;
1699
1717
  var regexpExec = regexpExec$2;
1700
1718
 
1701
- var TypeError$1 = global$1.TypeError;
1719
+ var TypeError$2 = global$3.TypeError;
1702
1720
 
1703
1721
  // `RegExpExec` abstract operation
1704
1722
  // https://tc39.es/ecma262/#sec-regexpexec
@@ -1709,15 +1727,15 @@
1709
1727
  if (result !== null) anObject$1(result);
1710
1728
  return result;
1711
1729
  }
1712
- if (classof(R) === 'RegExp') return call$1(regexpExec, R, S);
1713
- throw TypeError$1('RegExp#exec called on incompatible receiver');
1730
+ if (classof$1(R) === 'RegExp') return call$1(regexpExec, R, S);
1731
+ throw TypeError$2('RegExp#exec called on incompatible receiver');
1714
1732
  };
1715
1733
 
1716
1734
  var apply = functionApply;
1717
1735
  var call = functionCall;
1718
1736
  var uncurryThis = functionUncurryThis;
1719
1737
  var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic;
1720
- var fails = fails$c;
1738
+ var fails$1 = fails$d;
1721
1739
  var anObject = anObject$7;
1722
1740
  var isCallable = isCallable$c;
1723
1741
  var toIntegerOrInfinity = toIntegerOrInfinity$4;
@@ -1757,7 +1775,7 @@
1757
1775
  return false;
1758
1776
  })();
1759
1777
 
1760
- var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
1778
+ var REPLACE_SUPPORTS_NAMED_GROUPS = !fails$1(function () {
1761
1779
  var re = /./;
1762
1780
  re.exec = function () {
1763
1781
  var result = [];
@@ -1865,6 +1883,306 @@
1865
1883
  return /*#__PURE__*/React__default["default"].createElement(React__default["default"].Fragment, null, value);
1866
1884
  };
1867
1885
 
1886
+ var global$2 = global$t;
1887
+ var aCallable = aCallable$2;
1888
+ var toObject = toObject$3;
1889
+ var IndexedObject = indexedObject;
1890
+ var lengthOfArrayLike = lengthOfArrayLike$2;
1891
+
1892
+ var TypeError$1 = global$2.TypeError;
1893
+
1894
+ // `Array.prototype.{ reduce, reduceRight }` methods implementation
1895
+ var createMethod = function (IS_RIGHT) {
1896
+ return function (that, callbackfn, argumentsLength, memo) {
1897
+ aCallable(callbackfn);
1898
+ var O = toObject(that);
1899
+ var self = IndexedObject(O);
1900
+ var length = lengthOfArrayLike(O);
1901
+ var index = IS_RIGHT ? length - 1 : 0;
1902
+ var i = IS_RIGHT ? -1 : 1;
1903
+ if (argumentsLength < 2) while (true) {
1904
+ if (index in self) {
1905
+ memo = self[index];
1906
+ index += i;
1907
+ break;
1908
+ }
1909
+ index += i;
1910
+ if (IS_RIGHT ? index < 0 : length <= index) {
1911
+ throw TypeError$1('Reduce of empty array with no initial value');
1912
+ }
1913
+ }
1914
+ for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {
1915
+ memo = callbackfn(memo, self[index], index, O);
1916
+ }
1917
+ return memo;
1918
+ };
1919
+ };
1920
+
1921
+ var arrayReduce = {
1922
+ // `Array.prototype.reduce` method
1923
+ // https://tc39.es/ecma262/#sec-array.prototype.reduce
1924
+ left: createMethod(false),
1925
+ // `Array.prototype.reduceRight` method
1926
+ // https://tc39.es/ecma262/#sec-array.prototype.reduceright
1927
+ right: createMethod(true)
1928
+ };
1929
+
1930
+ var fails = fails$d;
1931
+
1932
+ var arrayMethodIsStrict$1 = function (METHOD_NAME, argument) {
1933
+ var method = [][METHOD_NAME];
1934
+ return !!method && fails(function () {
1935
+ // eslint-disable-next-line no-useless-call -- required for testing
1936
+ method.call(null, argument || function () { return 1; }, 1);
1937
+ });
1938
+ };
1939
+
1940
+ var classof = classofRaw$1;
1941
+ var global$1 = global$t;
1942
+
1943
+ var engineIsNode = classof(global$1.process) == 'process';
1944
+
1945
+ var $ = _export;
1946
+ var $reduce = arrayReduce.left;
1947
+ var arrayMethodIsStrict = arrayMethodIsStrict$1;
1948
+ var CHROME_VERSION = engineV8Version;
1949
+ var IS_NODE = engineIsNode;
1950
+
1951
+ var STRICT_METHOD = arrayMethodIsStrict('reduce');
1952
+ // Chrome 80-82 has a critical bug
1953
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1049982
1954
+ var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;
1955
+
1956
+ // `Array.prototype.reduce` method
1957
+ // https://tc39.es/ecma262/#sec-array.prototype.reduce
1958
+ $({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {
1959
+ reduce: function reduce(callbackfn /* , initialValue */) {
1960
+ var length = arguments.length;
1961
+ return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);
1962
+ }
1963
+ });
1964
+
1965
+ var useExperiements = function useExperiements() {
1966
+ var context = React.useContext(ExperimentsContext);
1967
+
1968
+ if (context === undefined) {
1969
+ throw new Error('The component using the the context must be a descendant of the ExperimentsProvider');
1970
+ }
1971
+
1972
+ return {
1973
+ experiments: context.experiments
1974
+ };
1975
+ };
1976
+
1977
+ var useExperience = function useExperience(_a) {
1978
+ var baseline = _a.baseline,
1979
+ experiences = _a.experiences;
1980
+ var profileState = useProfile();
1981
+ var experiments = useExperiements().experiments;
1982
+ var hasVariants = experiences.map(function (experience) {
1983
+ return experience_js.selectHasExperienceVariants(experience, baseline);
1984
+ }).reduce(function (acc, curr) {
1985
+ return acc || curr;
1986
+ }, false);
1987
+ var status = profileState.status,
1988
+ profile = profileState.profile;
1989
+
1990
+ var baseReturn = __assign(__assign({}, profileState), {
1991
+ hasVariants: hasVariants,
1992
+ baseline: baseline
1993
+ });
1994
+
1995
+ var emptyReturn = __assign(__assign({}, baseReturn), {
1996
+ experience: null,
1997
+ variant: null,
1998
+ audience: null,
1999
+ isPersonalized: false,
2000
+ profile: null
2001
+ });
2002
+
2003
+ if (status === 'loading') {
2004
+ // @ts-ignore
2005
+ return emptyReturn;
2006
+ }
2007
+
2008
+ if (status === 'error') {
2009
+ // @ts-ignore
2010
+ return emptyReturn;
2011
+ }
2012
+
2013
+ if (!profile) {
2014
+ // @ts-ignore
2015
+ return emptyReturn;
2016
+ }
2017
+
2018
+ var activeExperiments = experience_js.selectActiveExperiments(experiments, profile);
2019
+ var experience = experience_js.selectExperience({
2020
+ experiences: experiences,
2021
+ activeExperiments: activeExperiments,
2022
+ profile: profile
2023
+ });
2024
+
2025
+ if (!experience) {
2026
+ // @ts-ignore
2027
+ return emptyReturn;
2028
+ }
2029
+
2030
+ var audience = experience.audience;
2031
+ var variant = experience_js.selectExperienceVariant({
2032
+ baseline: baseline,
2033
+ experience: experience,
2034
+ profile: profile
2035
+ });
2036
+
2037
+ if (!variant) {
2038
+ return __assign(__assign({}, baseReturn), {
2039
+ status: 'success',
2040
+ loading: false,
2041
+ error: null,
2042
+ experience: experience,
2043
+ variant: null,
2044
+ audience: audience ? audience : null,
2045
+ profile: profile,
2046
+ isPersonalized: false
2047
+ });
2048
+ }
2049
+
2050
+ return __assign(__assign({}, baseReturn), {
2051
+ status: 'success',
2052
+ loading: false,
2053
+ error: null,
2054
+ experience: experience,
2055
+ variant: variant,
2056
+ audience: audience ? audience : null,
2057
+ profile: profile,
2058
+ isPersonalized: true
2059
+ });
2060
+ };
2061
+
2062
+ var EXPERIENCE_TRAIT_PREFIX = 'nt_experiment_';
2063
+
2064
+ var useJoinExperiment = function useJoinExperiment(_a) {
2065
+ var experiences = _a.experiences;
2066
+ var identify = useNinetailed().identify;
2067
+ return React.useCallback(function (_a) {
2068
+ var _b;
2069
+
2070
+ var experiment = _a.experiment,
2071
+ profile = _a.profile;
2072
+ var activeExperiments = experience_js.selectActiveExperiments(experiences, profile);
2073
+
2074
+ if (!activeExperiments.length && experiment.type === 'nt_experiment') {
2075
+ identify('', (_b = {}, _b["".concat(EXPERIENCE_TRAIT_PREFIX).concat(experiment.id)] = true, _b));
2076
+ }
2077
+ }, [experiences]);
2078
+ };
2079
+
2080
+ var Experience = function Experience(_a) {
2081
+ var experiences = _a.experiences,
2082
+ Component = _a.component,
2083
+ LoadingComponent = _a.loadingComponent,
2084
+ baseline = __rest(_a, ["experiences", "component", "loadingComponent"]);
2085
+
2086
+ var _b = useExperience({
2087
+ baseline: baseline,
2088
+ experiences: experiences
2089
+ }),
2090
+ status = _b.status,
2091
+ hasVariants = _b.hasVariants,
2092
+ experience = _b.experience,
2093
+ variant = _b.variant,
2094
+ audience = _b.audience,
2095
+ isPersonalized = _b.isPersonalized,
2096
+ profile = _b.profile;
2097
+
2098
+ var joinExperiment = useJoinExperiment({
2099
+ experiences: experiences
2100
+ });
2101
+ React.useEffect(function () {
2102
+ if (status === 'success' && experience && profile) {
2103
+ joinExperiment({
2104
+ experiment: experience,
2105
+ profile: profile
2106
+ });
2107
+ }
2108
+ }, [status, experience, profile]);
2109
+
2110
+ if (!hasVariants) {
2111
+ return /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline));
2112
+ }
2113
+
2114
+ if (status === 'loading') {
2115
+ if (LoadingComponent) {
2116
+ return /*#__PURE__*/React__default["default"].createElement(LoadingComponent, null);
2117
+ }
2118
+
2119
+ return /*#__PURE__*/React__default["default"].createElement("div", {
2120
+ key: "hide",
2121
+ style: {
2122
+ opacity: 0
2123
+ }
2124
+ }, /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline, {
2125
+ ninetailed: {
2126
+ isPersonalized: false,
2127
+ audience: {
2128
+ id: 'baseline'
2129
+ }
2130
+ }
2131
+ })));
2132
+ }
2133
+
2134
+ if (!experience || !variant) {
2135
+ return /*#__PURE__*/React__default["default"].createElement(TrackHasSeenComponent, {
2136
+ variant: {
2137
+ id: baseline.id,
2138
+ audience: {
2139
+ id: 'baseline'
2140
+ },
2141
+ hidden: false
2142
+ },
2143
+ audience: {
2144
+ id: 'baseline'
2145
+ },
2146
+ isPersonalized: false
2147
+ }, /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, baseline, {
2148
+ key: baseline.id,
2149
+ ninetailed: {
2150
+ isPersonalized: false,
2151
+ audience: {
2152
+ id: 'baseline'
2153
+ }
2154
+ }
2155
+ })));
2156
+ }
2157
+
2158
+ return (
2159
+ /*#__PURE__*/
2160
+ // TODO this needs to be resolved when we move away from the old standard
2161
+ React__default["default"].createElement(TrackHasSeenComponent, {
2162
+ variant: {
2163
+ id: variant.id,
2164
+ audience: {
2165
+ id: (audience === null || audience === void 0 ? void 0 : audience.id) || 'baseline'
2166
+ },
2167
+ hidden: variant.hidden || false
2168
+ },
2169
+ audience: {
2170
+ id: (audience === null || audience === void 0 ? void 0 : audience.id) || 'baseline'
2171
+ },
2172
+ isPersonalized: isPersonalized
2173
+ }, (variant === null || variant === void 0 ? void 0 : variant.hidden) ? null : /*#__PURE__*/React__default["default"].createElement(Component, __assign({}, variant, {
2174
+ key: "".concat(experience.id, "-").concat(variant.id),
2175
+ ninetailed: {
2176
+ isPersonalized: isPersonalized,
2177
+ audience: {
2178
+ id: (audience === null || audience === void 0 ? void 0 : audience.id) || 'baseline'
2179
+ }
2180
+ }
2181
+ })))
2182
+ );
2183
+ };
2184
+
2185
+ exports.Experience = Experience;
1868
2186
  exports.MergeTag = MergeTag;
1869
2187
  exports.NinetailedProvider = NinetailedProvider;
1870
2188
  exports.Personalize = Personalize;