@ninetailed/experience.js-react 1.8.1 → 2.0.0-beta.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
@@ -1,14 +1,28 @@
1
- import React, { createContext, useMemo, useContext, useState, useEffect } from 'react';
2
- import { Ninetailed, selectVariant } from '@ninetailed/experience.js';
1
+ import React, { createContext, useMemo, useContext, useState, useEffect, useCallback } from 'react';
2
+ import { Ninetailed, selectVariant, selectHasExperienceVariants, selectActiveExperiments, selectExperience, selectExperienceVariant } from '@ninetailed/experience.js';
3
3
  import { useInView } from 'react-intersection-observer';
4
4
  import { isBrowser } from '@ninetailed/experience.js-shared';
5
5
  import get$1 from 'lodash/get';
6
6
 
7
7
  const NinetailedContext = /*#__PURE__*/createContext(undefined);
8
8
 
9
+ const ExperimentsContext = /*#__PURE__*/createContext(undefined);
10
+
11
+ const ExperimentsProvider = ({
12
+ experiments,
13
+ children
14
+ }) => {
15
+ return /*#__PURE__*/React.createElement(ExperimentsContext.Provider, {
16
+ value: {
17
+ experiments
18
+ }
19
+ }, children);
20
+ };
21
+
9
22
  const NinetailedProvider = ({
10
23
  children,
11
24
  clientId,
25
+ experiments: _experiments = [],
12
26
  environment,
13
27
  preview,
14
28
  url,
@@ -30,7 +44,9 @@ const NinetailedProvider = ({
30
44
  }), []);
31
45
  return /*#__PURE__*/React.createElement(NinetailedContext.Provider, {
32
46
  value: ninetailed
33
- }, children);
47
+ }, /*#__PURE__*/React.createElement(ExperimentsProvider, {
48
+ experiments: _experiments
49
+ }, children));
34
50
  };
35
51
 
36
52
  const useNinetailed = () => {
@@ -50,7 +66,7 @@ var check = function (it) {
50
66
  };
51
67
 
52
68
  // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
53
- var global$u =
69
+ var global$w =
54
70
  // eslint-disable-next-line es/no-global-this -- safe
55
71
  check(typeof globalThis == 'object' && globalThis) ||
56
72
  check(typeof window == 'object' && window) ||
@@ -60,7 +76,7 @@ var global$u =
60
76
  // eslint-disable-next-line no-new-func -- fallback
61
77
  (function () { return this; })() || Function('return this')();
62
78
 
63
- var fails$f = function (exec) {
79
+ var fails$g = function (exec) {
64
80
  try {
65
81
  return !!exec();
66
82
  } catch (error) {
@@ -68,9 +84,9 @@ var fails$f = function (exec) {
68
84
  }
69
85
  };
70
86
 
71
- var fails$e = fails$f;
87
+ var fails$f = fails$g;
72
88
 
73
- var functionBindNative = !fails$e(function () {
89
+ var functionBindNative = !fails$f(function () {
74
90
  var test = (function () { /* empty */ }).bind();
75
91
  // eslint-disable-next-line no-prototype-builtins -- safe
76
92
  return typeof test != 'function' || test.hasOwnProperty('prototype');
@@ -100,62 +116,62 @@ var classofRaw$1 = function (it) {
100
116
  return stringSlice$4(toString$5(it), 8, -1);
101
117
  };
102
118
 
103
- var global$t = global$u;
119
+ var global$v = global$w;
104
120
  var uncurryThis$e = functionUncurryThis;
105
- var fails$d = fails$f;
106
- var classof$3 = classofRaw$1;
121
+ var fails$e = fails$g;
122
+ var classof$4 = classofRaw$1;
107
123
 
108
- var Object$5 = global$t.Object;
124
+ var Object$5 = global$v.Object;
109
125
  var split = uncurryThis$e(''.split);
110
126
 
111
127
  // fallback for non-array-like ES3 and non-enumerable old V8 strings
112
- var indexedObject = fails$d(function () {
128
+ var indexedObject = fails$e(function () {
113
129
  // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
114
130
  // eslint-disable-next-line no-prototype-builtins -- safe
115
131
  return !Object$5('z').propertyIsEnumerable(0);
116
132
  }) ? function (it) {
117
- return classof$3(it) == 'String' ? split(it, '') : Object$5(it);
133
+ return classof$4(it) == 'String' ? split(it, '') : Object$5(it);
118
134
  } : Object$5;
119
135
 
120
- var global$s = global$u;
136
+ var global$u = global$w;
121
137
 
122
- var TypeError$9 = global$s.TypeError;
138
+ var TypeError$a = global$u.TypeError;
123
139
 
124
140
  // `RequireObjectCoercible` abstract operation
125
141
  // https://tc39.es/ecma262/#sec-requireobjectcoercible
126
142
  var requireObjectCoercible$4 = function (it) {
127
- if (it == undefined) throw TypeError$9("Can't call method on " + it);
143
+ if (it == undefined) throw TypeError$a("Can't call method on " + it);
128
144
  return it;
129
145
  };
130
146
 
131
147
  // toObject with fallback for non-array-like ES3 strings
132
- var IndexedObject$1 = indexedObject;
148
+ var IndexedObject$2 = indexedObject;
133
149
  var requireObjectCoercible$3 = requireObjectCoercible$4;
134
150
 
135
151
  var toIndexedObject$5 = function (it) {
136
- return IndexedObject$1(requireObjectCoercible$3(it));
152
+ return IndexedObject$2(requireObjectCoercible$3(it));
137
153
  };
138
154
 
139
155
  var shared$4 = {exports: {}};
140
156
 
141
- var global$r = global$u;
157
+ var global$t = global$w;
142
158
 
143
159
  // eslint-disable-next-line es/no-object-defineproperty -- safe
144
160
  var defineProperty$3 = Object.defineProperty;
145
161
 
146
162
  var setGlobal$3 = function (key, value) {
147
163
  try {
148
- defineProperty$3(global$r, key, { value: value, configurable: true, writable: true });
164
+ defineProperty$3(global$t, key, { value: value, configurable: true, writable: true });
149
165
  } catch (error) {
150
- global$r[key] = value;
166
+ global$t[key] = value;
151
167
  } return value;
152
168
  };
153
169
 
154
- var global$q = global$u;
170
+ var global$s = global$w;
155
171
  var setGlobal$2 = setGlobal$3;
156
172
 
157
173
  var SHARED = '__core-js_shared__';
158
- var store$3 = global$q[SHARED] || setGlobal$2(SHARED, {});
174
+ var store$3 = global$s[SHARED] || setGlobal$2(SHARED, {});
159
175
 
160
176
  var sharedStore = store$3;
161
177
 
@@ -171,26 +187,26 @@ var store$2 = sharedStore;
171
187
  source: 'https://github.com/zloirock/core-js'
172
188
  });
173
189
 
174
- var global$p = global$u;
190
+ var global$r = global$w;
175
191
  var requireObjectCoercible$2 = requireObjectCoercible$4;
176
192
 
177
- var Object$4 = global$p.Object;
193
+ var Object$4 = global$r.Object;
178
194
 
179
195
  // `ToObject` abstract operation
180
196
  // https://tc39.es/ecma262/#sec-toobject
181
- var toObject$4 = function (argument) {
197
+ var toObject$5 = function (argument) {
182
198
  return Object$4(requireObjectCoercible$2(argument));
183
199
  };
184
200
 
185
201
  var uncurryThis$d = functionUncurryThis;
186
- var toObject$3 = toObject$4;
202
+ var toObject$4 = toObject$5;
187
203
 
188
204
  var hasOwnProperty = uncurryThis$d({}.hasOwnProperty);
189
205
 
190
206
  // `HasOwnProperty` abstract operation
191
207
  // https://tc39.es/ecma262/#sec-hasownproperty
192
208
  var hasOwnProperty_1 = Object.hasOwn || function hasOwn(it, key) {
193
- return hasOwnProperty(toObject$3(it), key);
209
+ return hasOwnProperty(toObject$4(it), key);
194
210
  };
195
211
 
196
212
  var uncurryThis$c = functionUncurryThis;
@@ -209,7 +225,7 @@ var isCallable$g = function (argument) {
209
225
  return typeof argument == 'function';
210
226
  };
211
227
 
212
- var global$o = global$u;
228
+ var global$q = global$w;
213
229
  var isCallable$f = isCallable$g;
214
230
 
215
231
  var aFunction = function (argument) {
@@ -217,18 +233,18 @@ var aFunction = function (argument) {
217
233
  };
218
234
 
219
235
  var getBuiltIn$4 = function (namespace, method) {
220
- return arguments.length < 2 ? aFunction(global$o[namespace]) : global$o[namespace] && global$o[namespace][method];
236
+ return arguments.length < 2 ? aFunction(global$q[namespace]) : global$q[namespace] && global$q[namespace][method];
221
237
  };
222
238
 
223
239
  var getBuiltIn$3 = getBuiltIn$4;
224
240
 
225
241
  var engineUserAgent = getBuiltIn$3('navigator', 'userAgent') || '';
226
242
 
227
- var global$n = global$u;
243
+ var global$p = global$w;
228
244
  var userAgent = engineUserAgent;
229
245
 
230
- var process = global$n.process;
231
- var Deno = global$n.Deno;
246
+ var process = global$p.process;
247
+ var Deno = global$p.Deno;
232
248
  var versions = process && process.versions || Deno && Deno.version;
233
249
  var v8 = versions && versions.v8;
234
250
  var match, version;
@@ -255,10 +271,10 @@ var engineV8Version = version;
255
271
  /* eslint-disable es/no-symbol -- required for testing */
256
272
 
257
273
  var V8_VERSION = engineV8Version;
258
- var fails$c = fails$f;
274
+ var fails$d = fails$g;
259
275
 
260
276
  // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
261
- var nativeSymbol = !!Object.getOwnPropertySymbols && !fails$c(function () {
277
+ var nativeSymbol = !!Object.getOwnPropertySymbols && !fails$d(function () {
262
278
  var symbol = Symbol();
263
279
  // Chrome 38 Symbol has incorrect toString conversion
264
280
  // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
@@ -275,7 +291,7 @@ var useSymbolAsUid = NATIVE_SYMBOL$1
275
291
  && !Symbol.sham
276
292
  && typeof Symbol.iterator == 'symbol';
277
293
 
278
- var global$m = global$u;
294
+ var global$o = global$w;
279
295
  var shared$3 = shared$4.exports;
280
296
  var hasOwn$8 = hasOwnProperty_1;
281
297
  var uid$1 = uid$2;
@@ -283,7 +299,7 @@ var NATIVE_SYMBOL = nativeSymbol;
283
299
  var USE_SYMBOL_AS_UID$1 = useSymbolAsUid;
284
300
 
285
301
  var WellKnownSymbolsStore = shared$3('wks');
286
- var Symbol$1 = global$m.Symbol;
302
+ var Symbol$1 = global$o.Symbol;
287
303
  var symbolFor = Symbol$1 && Symbol$1['for'];
288
304
  var createWellKnownSymbol = USE_SYMBOL_AS_UID$1 ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid$1;
289
305
 
@@ -306,34 +322,34 @@ var isObject$5 = function (it) {
306
322
  return typeof it == 'object' ? it !== null : isCallable$e(it);
307
323
  };
308
324
 
309
- var global$l = global$u;
325
+ var global$n = global$w;
310
326
  var isObject$4 = isObject$5;
311
327
 
312
- var String$4 = global$l.String;
313
- var TypeError$8 = global$l.TypeError;
328
+ var String$4 = global$n.String;
329
+ var TypeError$9 = global$n.TypeError;
314
330
 
315
331
  // `Assert: Type(argument) is Object`
316
332
  var anObject$8 = function (argument) {
317
333
  if (isObject$4(argument)) return argument;
318
- throw TypeError$8(String$4(argument) + ' is not an object');
334
+ throw TypeError$9(String$4(argument) + ' is not an object');
319
335
  };
320
336
 
321
337
  var objectDefineProperties = {};
322
338
 
323
- var fails$b = fails$f;
339
+ var fails$c = fails$g;
324
340
 
325
341
  // Detect IE8's incomplete defineProperty implementation
326
- var descriptors = !fails$b(function () {
342
+ var descriptors = !fails$c(function () {
327
343
  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
328
344
  return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
329
345
  });
330
346
 
331
347
  var DESCRIPTORS$8 = descriptors;
332
- var fails$a = fails$f;
348
+ var fails$b = fails$g;
333
349
 
334
350
  // V8 ~ Chrome 36-
335
351
  // https://bugs.chromium.org/p/v8/issues/detail?id=3334
336
- var v8PrototypeDefineBug = DESCRIPTORS$8 && fails$a(function () {
352
+ var v8PrototypeDefineBug = DESCRIPTORS$8 && fails$b(function () {
337
353
  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
338
354
  return Object.defineProperty(function () { /* empty */ }, 'prototype', {
339
355
  value: 42,
@@ -343,10 +359,10 @@ var v8PrototypeDefineBug = DESCRIPTORS$8 && fails$a(function () {
343
359
 
344
360
  var objectDefineProperty = {};
345
361
 
346
- var global$k = global$u;
362
+ var global$m = global$w;
347
363
  var isObject$3 = isObject$5;
348
364
 
349
- var document$1 = global$k.document;
365
+ var document$1 = global$m.document;
350
366
  // typeof document.createElement is 'object' in old IE
351
367
  var EXISTS$1 = isObject$3(document$1) && isObject$3(document$1.createElement);
352
368
 
@@ -355,11 +371,11 @@ var documentCreateElement$2 = function (it) {
355
371
  };
356
372
 
357
373
  var DESCRIPTORS$7 = descriptors;
358
- var fails$9 = fails$f;
374
+ var fails$a = fails$g;
359
375
  var createElement = documentCreateElement$2;
360
376
 
361
377
  // Thanks to IE8 for its funny defineProperty
362
- var ie8DomDefine = !DESCRIPTORS$7 && !fails$9(function () {
378
+ var ie8DomDefine = !DESCRIPTORS$7 && !fails$a(function () {
363
379
  // eslint-disable-next-line es/no-object-defineproperty -- required for testing
364
380
  return Object.defineProperty(createElement('div'), 'a', {
365
381
  get: function () { return 7; }
@@ -378,13 +394,13 @@ var uncurryThis$b = functionUncurryThis;
378
394
 
379
395
  var objectIsPrototypeOf = uncurryThis$b({}.isPrototypeOf);
380
396
 
381
- var global$j = global$u;
397
+ var global$l = global$w;
382
398
  var getBuiltIn$2 = getBuiltIn$4;
383
399
  var isCallable$d = isCallable$g;
384
400
  var isPrototypeOf = objectIsPrototypeOf;
385
401
  var USE_SYMBOL_AS_UID = useSymbolAsUid;
386
402
 
387
- var Object$3 = global$j.Object;
403
+ var Object$3 = global$l.Object;
388
404
 
389
405
  var isSymbol$2 = USE_SYMBOL_AS_UID ? function (it) {
390
406
  return typeof it == 'symbol';
@@ -393,9 +409,9 @@ var isSymbol$2 = USE_SYMBOL_AS_UID ? function (it) {
393
409
  return isCallable$d($Symbol) && isPrototypeOf($Symbol.prototype, Object$3(it));
394
410
  };
395
411
 
396
- var global$i = global$u;
412
+ var global$k = global$w;
397
413
 
398
- var String$3 = global$i.String;
414
+ var String$3 = global$k.String;
399
415
 
400
416
  var tryToString$1 = function (argument) {
401
417
  try {
@@ -405,33 +421,33 @@ var tryToString$1 = function (argument) {
405
421
  }
406
422
  };
407
423
 
408
- var global$h = global$u;
424
+ var global$j = global$w;
409
425
  var isCallable$c = isCallable$g;
410
426
  var tryToString = tryToString$1;
411
427
 
412
- var TypeError$7 = global$h.TypeError;
428
+ var TypeError$8 = global$j.TypeError;
413
429
 
414
430
  // `Assert: IsCallable(argument) is true`
415
- var aCallable$1 = function (argument) {
431
+ var aCallable$2 = function (argument) {
416
432
  if (isCallable$c(argument)) return argument;
417
- throw TypeError$7(tryToString(argument) + ' is not a function');
433
+ throw TypeError$8(tryToString(argument) + ' is not a function');
418
434
  };
419
435
 
420
- var aCallable = aCallable$1;
436
+ var aCallable$1 = aCallable$2;
421
437
 
422
438
  // `GetMethod` abstract operation
423
439
  // https://tc39.es/ecma262/#sec-getmethod
424
440
  var getMethod$2 = function (V, P) {
425
441
  var func = V[P];
426
- return func == null ? undefined : aCallable(func);
442
+ return func == null ? undefined : aCallable$1(func);
427
443
  };
428
444
 
429
- var global$g = global$u;
445
+ var global$i = global$w;
430
446
  var call$8 = functionCall;
431
447
  var isCallable$b = isCallable$g;
432
448
  var isObject$2 = isObject$5;
433
449
 
434
- var TypeError$6 = global$g.TypeError;
450
+ var TypeError$7 = global$i.TypeError;
435
451
 
436
452
  // `OrdinaryToPrimitive` abstract operation
437
453
  // https://tc39.es/ecma262/#sec-ordinarytoprimitive
@@ -440,10 +456,10 @@ var ordinaryToPrimitive$1 = function (input, pref) {
440
456
  if (pref === 'string' && isCallable$b(fn = input.toString) && !isObject$2(val = call$8(fn, input))) return val;
441
457
  if (isCallable$b(fn = input.valueOf) && !isObject$2(val = call$8(fn, input))) return val;
442
458
  if (pref !== 'string' && isCallable$b(fn = input.toString) && !isObject$2(val = call$8(fn, input))) return val;
443
- throw TypeError$6("Can't convert object to primitive value");
459
+ throw TypeError$7("Can't convert object to primitive value");
444
460
  };
445
461
 
446
- var global$f = global$u;
462
+ var global$h = global$w;
447
463
  var call$7 = functionCall;
448
464
  var isObject$1 = isObject$5;
449
465
  var isSymbol$1 = isSymbol$2;
@@ -451,7 +467,7 @@ var getMethod$1 = getMethod$2;
451
467
  var ordinaryToPrimitive = ordinaryToPrimitive$1;
452
468
  var wellKnownSymbol$9 = wellKnownSymbol$a;
453
469
 
454
- var TypeError$5 = global$f.TypeError;
470
+ var TypeError$6 = global$h.TypeError;
455
471
  var TO_PRIMITIVE = wellKnownSymbol$9('toPrimitive');
456
472
 
457
473
  // `ToPrimitive` abstract operation
@@ -464,7 +480,7 @@ var toPrimitive$1 = function (input, pref) {
464
480
  if (pref === undefined) pref = 'default';
465
481
  result = call$7(exoticToPrim, input, pref);
466
482
  if (!isObject$1(result) || isSymbol$1(result)) return result;
467
- throw TypeError$5("Can't convert object to primitive value");
483
+ throw TypeError$6("Can't convert object to primitive value");
468
484
  }
469
485
  if (pref === undefined) pref = 'number';
470
486
  return ordinaryToPrimitive(input, pref);
@@ -480,14 +496,14 @@ var toPropertyKey$2 = function (argument) {
480
496
  return isSymbol(key) ? key : key + '';
481
497
  };
482
498
 
483
- var global$e = global$u;
499
+ var global$g = global$w;
484
500
  var DESCRIPTORS$6 = descriptors;
485
501
  var IE8_DOM_DEFINE$1 = ie8DomDefine;
486
502
  var V8_PROTOTYPE_DEFINE_BUG$1 = v8PrototypeDefineBug;
487
503
  var anObject$7 = anObject$8;
488
504
  var toPropertyKey$1 = toPropertyKey$2;
489
505
 
490
- var TypeError$4 = global$e.TypeError;
506
+ var TypeError$5 = global$g.TypeError;
491
507
  // eslint-disable-next-line es/no-object-defineproperty -- safe
492
508
  var $defineProperty = Object.defineProperty;
493
509
  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
@@ -520,7 +536,7 @@ objectDefineProperty.f = DESCRIPTORS$6 ? V8_PROTOTYPE_DEFINE_BUG$1 ? function de
520
536
  if (IE8_DOM_DEFINE$1) try {
521
537
  return $defineProperty(O, P, Attributes);
522
538
  } catch (error) { /* empty */ }
523
- if ('get' in Attributes || 'set' in Attributes) throw TypeError$4('Accessors not supported');
539
+ if ('get' in Attributes || 'set' in Attributes) throw TypeError$5('Accessors not supported');
524
540
  if ('value' in Attributes) O[P] = Attributes.value;
525
541
  return O;
526
542
  };
@@ -563,19 +579,19 @@ var toLength$1 = toLength$2;
563
579
 
564
580
  // `LengthOfArrayLike` abstract operation
565
581
  // https://tc39.es/ecma262/#sec-lengthofarraylike
566
- var lengthOfArrayLike$1 = function (obj) {
582
+ var lengthOfArrayLike$2 = function (obj) {
567
583
  return toLength$1(obj.length);
568
584
  };
569
585
 
570
586
  var toIndexedObject$4 = toIndexedObject$5;
571
587
  var toAbsoluteIndex = toAbsoluteIndex$1;
572
- var lengthOfArrayLike = lengthOfArrayLike$1;
588
+ var lengthOfArrayLike$1 = lengthOfArrayLike$2;
573
589
 
574
590
  // `Array.prototype.{ indexOf, includes }` methods implementation
575
- var createMethod$1 = function (IS_INCLUDES) {
591
+ var createMethod$2 = function (IS_INCLUDES) {
576
592
  return function ($this, el, fromIndex) {
577
593
  var O = toIndexedObject$4($this);
578
- var length = lengthOfArrayLike(O);
594
+ var length = lengthOfArrayLike$1(O);
579
595
  var index = toAbsoluteIndex(fromIndex, length);
580
596
  var value;
581
597
  // Array#includes uses SameValueZero equality algorithm
@@ -594,10 +610,10 @@ var createMethod$1 = function (IS_INCLUDES) {
594
610
  var arrayIncludes = {
595
611
  // `Array.prototype.includes` method
596
612
  // https://tc39.es/ecma262/#sec-array.prototype.includes
597
- includes: createMethod$1(true),
613
+ includes: createMethod$2(true),
598
614
  // `Array.prototype.indexOf` method
599
615
  // https://tc39.es/ecma262/#sec-array.prototype.indexof
600
- indexOf: createMethod$1(false)
616
+ indexOf: createMethod$2(false)
601
617
  };
602
618
 
603
619
  var hiddenKeys$4 = {};
@@ -800,11 +816,11 @@ if (!isCallable$a(store$1.inspectSource)) {
800
816
 
801
817
  var inspectSource$2 = store$1.inspectSource;
802
818
 
803
- var global$d = global$u;
819
+ var global$f = global$w;
804
820
  var isCallable$9 = isCallable$g;
805
821
  var inspectSource$1 = inspectSource$2;
806
822
 
807
- var WeakMap$1 = global$d.WeakMap;
823
+ var WeakMap$1 = global$f.WeakMap;
808
824
 
809
825
  var nativeWeakMap = isCallable$9(WeakMap$1) && /native code/.test(inspectSource$1(WeakMap$1));
810
826
 
@@ -829,7 +845,7 @@ var createNonEnumerableProperty$6 = DESCRIPTORS$4 ? function (object, key, value
829
845
  };
830
846
 
831
847
  var NATIVE_WEAK_MAP = nativeWeakMap;
832
- var global$c = global$u;
848
+ var global$e = global$w;
833
849
  var uncurryThis$8 = functionUncurryThis;
834
850
  var isObject = isObject$5;
835
851
  var createNonEnumerableProperty$5 = createNonEnumerableProperty$6;
@@ -839,8 +855,8 @@ var sharedKey$1 = sharedKey$3;
839
855
  var hiddenKeys$1 = hiddenKeys$4;
840
856
 
841
857
  var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
842
- var TypeError$3 = global$c.TypeError;
843
- var WeakMap = global$c.WeakMap;
858
+ var TypeError$4 = global$e.TypeError;
859
+ var WeakMap = global$e.WeakMap;
844
860
  var set, get, has;
845
861
 
846
862
  var enforce = function (it) {
@@ -851,7 +867,7 @@ var getterFor = function (TYPE) {
851
867
  return function (it) {
852
868
  var state;
853
869
  if (!isObject(it) || (state = get(it)).type !== TYPE) {
854
- throw TypeError$3('Incompatible receiver, ' + TYPE + ' required');
870
+ throw TypeError$4('Incompatible receiver, ' + TYPE + ' required');
855
871
  } return state;
856
872
  };
857
873
  };
@@ -862,7 +878,7 @@ if (NATIVE_WEAK_MAP || shared$1.state) {
862
878
  var wmhas = uncurryThis$8(store.has);
863
879
  var wmset = uncurryThis$8(store.set);
864
880
  set = function (it, metadata) {
865
- if (wmhas(store, it)) throw new TypeError$3(OBJECT_ALREADY_INITIALIZED);
881
+ if (wmhas(store, it)) throw new TypeError$4(OBJECT_ALREADY_INITIALIZED);
866
882
  metadata.facade = it;
867
883
  wmset(store, it, metadata);
868
884
  return metadata;
@@ -877,7 +893,7 @@ if (NATIVE_WEAK_MAP || shared$1.state) {
877
893
  var STATE = sharedKey$1('state');
878
894
  hiddenKeys$1[STATE] = true;
879
895
  set = function (it, metadata) {
880
- if (hasOwn$6(it, STATE)) throw new TypeError$3(OBJECT_ALREADY_INITIALIZED);
896
+ if (hasOwn$6(it, STATE)) throw new TypeError$4(OBJECT_ALREADY_INITIALIZED);
881
897
  metadata.facade = it;
882
898
  createNonEnumerableProperty$5(it, STATE, metadata);
883
899
  return metadata;
@@ -959,7 +975,7 @@ var functionName = {
959
975
  CONFIGURABLE: CONFIGURABLE
960
976
  };
961
977
 
962
- var global$b = global$u;
978
+ var global$d = global$w;
963
979
  var isCallable$8 = isCallable$g;
964
980
  var hasOwn$3 = hasOwnProperty_1;
965
981
  var createNonEnumerableProperty$4 = createNonEnumerableProperty$6;
@@ -990,7 +1006,7 @@ var TEMPLATE = String(String).split('String');
990
1006
  state.source = TEMPLATE.join(typeof name == 'string' ? name : '');
991
1007
  }
992
1008
  }
993
- if (O === global$b) {
1009
+ if (O === global$d) {
994
1010
  if (simple) O[key] = value;
995
1011
  else setGlobal$1(key, value);
996
1012
  return;
@@ -1057,7 +1073,7 @@ var copyConstructorProperties$1 = function (target, source, exceptions) {
1057
1073
  }
1058
1074
  };
1059
1075
 
1060
- var fails$8 = fails$f;
1076
+ var fails$9 = fails$g;
1061
1077
  var isCallable$7 = isCallable$g;
1062
1078
 
1063
1079
  var replacement = /#|\.prototype\./;
@@ -1066,7 +1082,7 @@ var isForced$1 = function (feature, detection) {
1066
1082
  var value = data[normalize(feature)];
1067
1083
  return value == POLYFILL ? true
1068
1084
  : value == NATIVE ? false
1069
- : isCallable$7(detection) ? fails$8(detection)
1085
+ : isCallable$7(detection) ? fails$9(detection)
1070
1086
  : !!detection;
1071
1087
  };
1072
1088
 
@@ -1080,7 +1096,7 @@ var POLYFILL = isForced$1.POLYFILL = 'P';
1080
1096
 
1081
1097
  var isForced_1 = isForced$1;
1082
1098
 
1083
- var global$a = global$u;
1099
+ var global$c = global$w;
1084
1100
  var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;
1085
1101
  var createNonEnumerableProperty$3 = createNonEnumerableProperty$6;
1086
1102
  var redefine$3 = redefine$4.exports;
@@ -1109,11 +1125,11 @@ var _export = function (options, source) {
1109
1125
  var STATIC = options.stat;
1110
1126
  var FORCED, target, key, targetProperty, sourceProperty, descriptor;
1111
1127
  if (GLOBAL) {
1112
- target = global$a;
1128
+ target = global$c;
1113
1129
  } else if (STATIC) {
1114
- target = global$a[TARGET] || setGlobal(TARGET, {});
1130
+ target = global$c[TARGET] || setGlobal(TARGET, {});
1115
1131
  } else {
1116
- target = (global$a[TARGET] || {}).prototype;
1132
+ target = (global$c[TARGET] || {}).prototype;
1117
1133
  }
1118
1134
  if (target) for (key in source) {
1119
1135
  sourceProperty = source[key];
@@ -1136,30 +1152,30 @@ var _export = function (options, source) {
1136
1152
  }
1137
1153
  };
1138
1154
 
1139
- var fails$7 = fails$f;
1155
+ var fails$8 = fails$g;
1140
1156
 
1141
- var correctPrototypeGetter = !fails$7(function () {
1157
+ var correctPrototypeGetter = !fails$8(function () {
1142
1158
  function F() { /* empty */ }
1143
1159
  F.prototype.constructor = null;
1144
1160
  // eslint-disable-next-line es/no-object-getprototypeof -- required for testing
1145
1161
  return Object.getPrototypeOf(new F()) !== F.prototype;
1146
1162
  });
1147
1163
 
1148
- var global$9 = global$u;
1164
+ var global$b = global$w;
1149
1165
  var hasOwn$1 = hasOwnProperty_1;
1150
1166
  var isCallable$6 = isCallable$g;
1151
- var toObject$2 = toObject$4;
1167
+ var toObject$3 = toObject$5;
1152
1168
  var sharedKey = sharedKey$3;
1153
1169
  var CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter;
1154
1170
 
1155
1171
  var IE_PROTO = sharedKey('IE_PROTO');
1156
- var Object$2 = global$9.Object;
1172
+ var Object$2 = global$b.Object;
1157
1173
  var ObjectPrototype = Object$2.prototype;
1158
1174
 
1159
1175
  // `Object.getPrototypeOf` method
1160
1176
  // https://tc39.es/ecma262/#sec-object.getprototypeof
1161
1177
  var objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER ? Object$2.getPrototypeOf : function (O) {
1162
- var object = toObject$2(O);
1178
+ var object = toObject$3(O);
1163
1179
  if (hasOwn$1(object, IE_PROTO)) return object[IE_PROTO];
1164
1180
  var constructor = object.constructor;
1165
1181
  if (isCallable$6(constructor) && object instanceof constructor) {
@@ -1167,7 +1183,7 @@ var objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER ? Object$2.getPrototypeOf :
1167
1183
  } return object instanceof Object$2 ? ObjectPrototype : null;
1168
1184
  };
1169
1185
 
1170
- var fails$6 = fails$f;
1186
+ var fails$7 = fails$g;
1171
1187
  var isCallable$5 = isCallable$g;
1172
1188
  var getPrototypeOf$1 = objectGetPrototypeOf;
1173
1189
  var redefine$2 = redefine$4.exports;
@@ -1191,7 +1207,7 @@ if ([].keys) {
1191
1207
  }
1192
1208
  }
1193
1209
 
1194
- var NEW_ITERATOR_PROTOTYPE = IteratorPrototype$2 == undefined || fails$6(function () {
1210
+ var NEW_ITERATOR_PROTOTYPE = IteratorPrototype$2 == undefined || fails$7(function () {
1195
1211
  var test = {};
1196
1212
  // FF44- legacy iterators case
1197
1213
  return IteratorPrototype$2[ITERATOR$2].call(test) !== test;
@@ -1241,15 +1257,15 @@ var createIteratorConstructor$1 = function (IteratorConstructor, NAME, next, ENU
1241
1257
  return IteratorConstructor;
1242
1258
  };
1243
1259
 
1244
- var global$8 = global$u;
1260
+ var global$a = global$w;
1245
1261
  var isCallable$4 = isCallable$g;
1246
1262
 
1247
- var String$2 = global$8.String;
1248
- var TypeError$2 = global$8.TypeError;
1263
+ var String$2 = global$a.String;
1264
+ var TypeError$3 = global$a.TypeError;
1249
1265
 
1250
1266
  var aPossiblePrototype$1 = function (argument) {
1251
1267
  if (typeof argument == 'object' || isCallable$4(argument)) return argument;
1252
- throw TypeError$2("Can't set " + String$2(argument) + ' as a prototype');
1268
+ throw TypeError$3("Can't set " + String$2(argument) + ' as a prototype');
1253
1269
  };
1254
1270
 
1255
1271
  /* eslint-disable no-proto -- safe */
@@ -1281,7 +1297,7 @@ var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? functio
1281
1297
  };
1282
1298
  }() : undefined);
1283
1299
 
1284
- var $$2 = _export;
1300
+ var $$3 = _export;
1285
1301
  var call$5 = functionCall;
1286
1302
  var FunctionName = functionName;
1287
1303
  var isCallable$3 = isCallable$g;
@@ -1366,7 +1382,7 @@ var defineIterator$1 = function (Iterable, NAME, IteratorConstructor, next, DEFA
1366
1382
  if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
1367
1383
  redefine$1(IterablePrototype, KEY, methods[KEY]);
1368
1384
  }
1369
- } else $$2({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
1385
+ } else $$3({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
1370
1386
  }
1371
1387
 
1372
1388
  // define iterator
@@ -1482,7 +1498,7 @@ var DOMTokenListPrototype$1 = classList && classList.constructor && classList.co
1482
1498
 
1483
1499
  var domTokenListPrototype = DOMTokenListPrototype$1 === Object.prototype ? undefined : DOMTokenListPrototype$1;
1484
1500
 
1485
- var global$7 = global$u;
1501
+ var global$9 = global$w;
1486
1502
  var DOMIterables = domIterables;
1487
1503
  var DOMTokenListPrototype = domTokenListPrototype;
1488
1504
  var ArrayIteratorMethods = es_array_iterator;
@@ -1516,38 +1532,20 @@ var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {
1516
1532
  };
1517
1533
 
1518
1534
  for (var COLLECTION_NAME in DOMIterables) {
1519
- handlePrototype(global$7[COLLECTION_NAME] && global$7[COLLECTION_NAME].prototype, COLLECTION_NAME);
1535
+ handlePrototype(global$9[COLLECTION_NAME] && global$9[COLLECTION_NAME].prototype, COLLECTION_NAME);
1520
1536
  }
1521
1537
 
1522
1538
  handlePrototype(DOMTokenListPrototype, 'DOMTokenList');
1523
1539
 
1524
- const useProfile = () => {
1525
- const ninetailed = useNinetailed();
1526
- const [profileState, setProfileState] = useState(ninetailed.profileState);
1527
- useEffect(() => {
1528
- return ninetailed.onProfileChange(profileState => {
1529
- setProfileState(profileState);
1530
- });
1531
- }, []);
1532
- return profileState;
1533
- };
1534
-
1535
- const usePersonalize = (baseline, variants, options = {
1536
- holdout: -1
1537
- }) => {
1538
- const profile = useProfile();
1539
- return selectVariant(baseline, variants, profile, options);
1540
- };
1541
-
1542
1540
  var DESCRIPTORS = descriptors;
1543
1541
  var uncurryThis$5 = functionUncurryThis;
1544
1542
  var call$4 = functionCall;
1545
- var fails$5 = fails$f;
1543
+ var fails$6 = fails$g;
1546
1544
  var objectKeys = objectKeys$2;
1547
1545
  var getOwnPropertySymbolsModule = objectGetOwnPropertySymbols;
1548
1546
  var propertyIsEnumerableModule = objectPropertyIsEnumerable;
1549
- var toObject$1 = toObject$4;
1550
- var IndexedObject = indexedObject;
1547
+ var toObject$2 = toObject$5;
1548
+ var IndexedObject$1 = indexedObject;
1551
1549
 
1552
1550
  // eslint-disable-next-line es/no-object-assign -- safe
1553
1551
  var $assign = Object.assign;
@@ -1557,7 +1555,7 @@ var concat$1 = uncurryThis$5([].concat);
1557
1555
 
1558
1556
  // `Object.assign` method
1559
1557
  // https://tc39.es/ecma262/#sec-object.assign
1560
- var objectAssign = !$assign || fails$5(function () {
1558
+ var objectAssign = !$assign || fails$6(function () {
1561
1559
  // should have correct order of operations (Edge bug)
1562
1560
  if (DESCRIPTORS && $assign({ b: 1 }, $assign(defineProperty({}, 'a', {
1563
1561
  enumerable: true,
@@ -1578,13 +1576,13 @@ var objectAssign = !$assign || fails$5(function () {
1578
1576
  alphabet.split('').forEach(function (chr) { B[chr] = chr; });
1579
1577
  return $assign({}, A)[symbol] != 7 || objectKeys($assign({}, B)).join('') != alphabet;
1580
1578
  }) ? function assign(target, source) { // eslint-disable-line no-unused-vars -- required for `.length`
1581
- var T = toObject$1(target);
1579
+ var T = toObject$2(target);
1582
1580
  var argumentsLength = arguments.length;
1583
1581
  var index = 1;
1584
1582
  var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
1585
1583
  var propertyIsEnumerable = propertyIsEnumerableModule.f;
1586
1584
  while (argumentsLength > index) {
1587
- var S = IndexedObject(arguments[index++]);
1585
+ var S = IndexedObject$1(arguments[index++]);
1588
1586
  var keys = getOwnPropertySymbols ? concat$1(objectKeys(S), getOwnPropertySymbols(S)) : objectKeys(S);
1589
1587
  var length = keys.length;
1590
1588
  var j = 0;
@@ -1596,16 +1594,36 @@ var objectAssign = !$assign || fails$5(function () {
1596
1594
  } return T;
1597
1595
  } : $assign;
1598
1596
 
1599
- var $$1 = _export;
1597
+ var $$2 = _export;
1600
1598
  var assign = objectAssign;
1601
1599
 
1602
1600
  // `Object.assign` method
1603
1601
  // https://tc39.es/ecma262/#sec-object.assign
1604
1602
  // eslint-disable-next-line es/no-object-assign -- required for testing
1605
- $$1({ target: 'Object', stat: true, forced: Object.assign !== assign }, {
1603
+ $$2({ target: 'Object', stat: true, forced: Object.assign !== assign }, {
1606
1604
  assign: assign
1607
1605
  });
1608
1606
 
1607
+ const useProfile = () => {
1608
+ const ninetailed = useNinetailed();
1609
+ const [profileState, setProfileState] = useState(ninetailed.profileState);
1610
+ useEffect(() => {
1611
+ return ninetailed.onProfileChange(profileState => {
1612
+ setProfileState(profileState);
1613
+ });
1614
+ }, []);
1615
+ return Object.assign(Object.assign({}, profileState), {
1616
+ loading: profileState.status === 'loading'
1617
+ });
1618
+ };
1619
+
1620
+ const usePersonalize = (baseline, variants, options = {
1621
+ holdout: -1
1622
+ }) => {
1623
+ const profile = useProfile();
1624
+ return selectVariant(baseline, variants, profile, options);
1625
+ };
1626
+
1609
1627
  /*! *****************************************************************************
1610
1628
  Copyright (c) Microsoft Corporation.
1611
1629
 
@@ -1728,14 +1746,14 @@ test[TO_STRING_TAG$1] = 'z';
1728
1746
 
1729
1747
  var toStringTagSupport = String(test) === '[object z]';
1730
1748
 
1731
- var global$6 = global$u;
1749
+ var global$8 = global$w;
1732
1750
  var TO_STRING_TAG_SUPPORT = toStringTagSupport;
1733
1751
  var isCallable$2 = isCallable$g;
1734
1752
  var classofRaw = classofRaw$1;
1735
1753
  var wellKnownSymbol$2 = wellKnownSymbol$a;
1736
1754
 
1737
1755
  var TO_STRING_TAG = wellKnownSymbol$2('toStringTag');
1738
- var Object$1 = global$6.Object;
1756
+ var Object$1 = global$8.Object;
1739
1757
 
1740
1758
  // ES3 wrong here
1741
1759
  var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
@@ -1748,7 +1766,7 @@ var tryGet = function (it, key) {
1748
1766
  };
1749
1767
 
1750
1768
  // getting tag from ES6+ `Object.prototype.toString`
1751
- var classof$2 = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
1769
+ var classof$3 = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
1752
1770
  var O, tag, result;
1753
1771
  return it === undefined ? 'Undefined' : it === null ? 'Null'
1754
1772
  // @@toStringTag case
@@ -1759,13 +1777,13 @@ var classof$2 = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {
1759
1777
  : (result = classofRaw(O)) == 'Object' && isCallable$2(O.callee) ? 'Arguments' : result;
1760
1778
  };
1761
1779
 
1762
- var global$5 = global$u;
1763
- var classof$1 = classof$2;
1780
+ var global$7 = global$w;
1781
+ var classof$2 = classof$3;
1764
1782
 
1765
- var String$1 = global$5.String;
1783
+ var String$1 = global$7.String;
1766
1784
 
1767
1785
  var toString$3 = function (argument) {
1768
- if (classof$1(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');
1786
+ if (classof$2(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');
1769
1787
  return String$1(argument);
1770
1788
  };
1771
1789
 
@@ -1785,13 +1803,13 @@ var regexpFlags$1 = function () {
1785
1803
  return result;
1786
1804
  };
1787
1805
 
1788
- var fails$4 = fails$f;
1789
- var global$4 = global$u;
1806
+ var fails$5 = fails$g;
1807
+ var global$6 = global$w;
1790
1808
 
1791
1809
  // babel-minify and Closure Compiler transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
1792
- var $RegExp$2 = global$4.RegExp;
1810
+ var $RegExp$2 = global$6.RegExp;
1793
1811
 
1794
- var UNSUPPORTED_Y$1 = fails$4(function () {
1812
+ var UNSUPPORTED_Y$1 = fails$5(function () {
1795
1813
  var re = $RegExp$2('a', 'y');
1796
1814
  re.lastIndex = 2;
1797
1815
  return re.exec('abcd') != null;
@@ -1799,11 +1817,11 @@ var UNSUPPORTED_Y$1 = fails$4(function () {
1799
1817
 
1800
1818
  // UC Browser bug
1801
1819
  // https://github.com/zloirock/core-js/issues/1008
1802
- var MISSED_STICKY = UNSUPPORTED_Y$1 || fails$4(function () {
1820
+ var MISSED_STICKY = UNSUPPORTED_Y$1 || fails$5(function () {
1803
1821
  return !$RegExp$2('a', 'y').sticky;
1804
1822
  });
1805
1823
 
1806
- var BROKEN_CARET = UNSUPPORTED_Y$1 || fails$4(function () {
1824
+ var BROKEN_CARET = UNSUPPORTED_Y$1 || fails$5(function () {
1807
1825
  // https://bugzilla.mozilla.org/show_bug.cgi?id=773687
1808
1826
  var re = $RegExp$2('^r', 'gy');
1809
1827
  re.lastIndex = 2;
@@ -1816,24 +1834,24 @@ var regexpStickyHelpers = {
1816
1834
  UNSUPPORTED_Y: UNSUPPORTED_Y$1
1817
1835
  };
1818
1836
 
1819
- var fails$3 = fails$f;
1820
- var global$3 = global$u;
1837
+ var fails$4 = fails$g;
1838
+ var global$5 = global$w;
1821
1839
 
1822
1840
  // babel-minify and Closure Compiler transpiles RegExp('.', 's') -> /./s and it causes SyntaxError
1823
- var $RegExp$1 = global$3.RegExp;
1841
+ var $RegExp$1 = global$5.RegExp;
1824
1842
 
1825
- var regexpUnsupportedDotAll = fails$3(function () {
1843
+ var regexpUnsupportedDotAll = fails$4(function () {
1826
1844
  var re = $RegExp$1('.', 's');
1827
1845
  return !(re.dotAll && re.exec('\n') && re.flags === 's');
1828
1846
  });
1829
1847
 
1830
- var fails$2 = fails$f;
1831
- var global$2 = global$u;
1848
+ var fails$3 = fails$g;
1849
+ var global$4 = global$w;
1832
1850
 
1833
1851
  // babel-minify and Closure Compiler transpiles RegExp('(?<a>b)', 'g') -> /(?<a>b)/g and it causes SyntaxError
1834
- var $RegExp = global$2.RegExp;
1852
+ var $RegExp = global$4.RegExp;
1835
1853
 
1836
- var regexpUnsupportedNcg = fails$2(function () {
1854
+ var regexpUnsupportedNcg = fails$3(function () {
1837
1855
  var re = $RegExp('(?<a>b)', 'g');
1838
1856
  return re.exec('b').groups.a !== 'b' ||
1839
1857
  'b'.replace(re, '$<a>c') !== 'bc';
@@ -1956,12 +1974,12 @@ if (PATCH) {
1956
1974
 
1957
1975
  var regexpExec$2 = patchedExec;
1958
1976
 
1959
- var $ = _export;
1977
+ var $$1 = _export;
1960
1978
  var exec = regexpExec$2;
1961
1979
 
1962
1980
  // `RegExp.prototype.exec` method
1963
1981
  // https://tc39.es/ecma262/#sec-regexp.prototype.exec
1964
- $({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
1982
+ $$1({ target: 'RegExp', proto: true, forced: /./.exec !== exec }, {
1965
1983
  exec: exec
1966
1984
  });
1967
1985
 
@@ -1981,7 +1999,7 @@ var functionApply = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND
1981
1999
  var uncurryThis$3 = functionUncurryThis;
1982
2000
  var redefine = redefine$4.exports;
1983
2001
  var regexpExec$1 = regexpExec$2;
1984
- var fails$1 = fails$f;
2002
+ var fails$2 = fails$g;
1985
2003
  var wellKnownSymbol$1 = wellKnownSymbol$a;
1986
2004
  var createNonEnumerableProperty = createNonEnumerableProperty$6;
1987
2005
 
@@ -1991,14 +2009,14 @@ var RegExpPrototype = RegExp.prototype;
1991
2009
  var fixRegexpWellKnownSymbolLogic = function (KEY, exec, FORCED, SHAM) {
1992
2010
  var SYMBOL = wellKnownSymbol$1(KEY);
1993
2011
 
1994
- var DELEGATES_TO_SYMBOL = !fails$1(function () {
2012
+ var DELEGATES_TO_SYMBOL = !fails$2(function () {
1995
2013
  // String methods call symbol-named RegEp methods
1996
2014
  var O = {};
1997
2015
  O[SYMBOL] = function () { return 7; };
1998
2016
  return ''[KEY](O) != 7;
1999
2017
  });
2000
2018
 
2001
- var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$1(function () {
2019
+ var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails$2(function () {
2002
2020
  // Symbol-named RegExp methods call .exec
2003
2021
  var execCalled = false;
2004
2022
  var re = /a/;
@@ -2059,7 +2077,7 @@ var charAt$2 = uncurryThis$2(''.charAt);
2059
2077
  var charCodeAt = uncurryThis$2(''.charCodeAt);
2060
2078
  var stringSlice$2 = uncurryThis$2(''.slice);
2061
2079
 
2062
- var createMethod = function (CONVERT_TO_STRING) {
2080
+ var createMethod$1 = function (CONVERT_TO_STRING) {
2063
2081
  return function ($this, pos) {
2064
2082
  var S = toString$1(requireObjectCoercible$1($this));
2065
2083
  var position = toIntegerOrInfinity$1(pos);
@@ -2081,10 +2099,10 @@ var createMethod = function (CONVERT_TO_STRING) {
2081
2099
  var stringMultibyte = {
2082
2100
  // `String.prototype.codePointAt` method
2083
2101
  // https://tc39.es/ecma262/#sec-string.prototype.codepointat
2084
- codeAt: createMethod(false),
2102
+ codeAt: createMethod$1(false),
2085
2103
  // `String.prototype.at` method
2086
2104
  // https://github.com/mathiasbynens/String.prototype.at
2087
- charAt: createMethod(true)
2105
+ charAt: createMethod$1(true)
2088
2106
  };
2089
2107
 
2090
2108
  var charAt$1 = stringMultibyte.charAt;
@@ -2096,7 +2114,7 @@ var advanceStringIndex$1 = function (S, index, unicode) {
2096
2114
  };
2097
2115
 
2098
2116
  var uncurryThis$1 = functionUncurryThis;
2099
- var toObject = toObject$4;
2117
+ var toObject$1 = toObject$5;
2100
2118
 
2101
2119
  var floor = Math.floor;
2102
2120
  var charAt = uncurryThis$1(''.charAt);
@@ -2112,7 +2130,7 @@ var getSubstitution$1 = function (matched, str, position, captures, namedCapture
2112
2130
  var m = captures.length;
2113
2131
  var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
2114
2132
  if (namedCaptures !== undefined) {
2115
- namedCaptures = toObject(namedCaptures);
2133
+ namedCaptures = toObject$1(namedCaptures);
2116
2134
  symbols = SUBSTITUTION_SYMBOLS;
2117
2135
  }
2118
2136
  return replace(replacement, symbols, function (match, ch) {
@@ -2140,14 +2158,14 @@ var getSubstitution$1 = function (matched, str, position, captures, namedCapture
2140
2158
  });
2141
2159
  };
2142
2160
 
2143
- var global$1 = global$u;
2161
+ var global$3 = global$w;
2144
2162
  var call$1 = functionCall;
2145
2163
  var anObject$1 = anObject$8;
2146
2164
  var isCallable$1 = isCallable$g;
2147
- var classof = classofRaw$1;
2165
+ var classof$1 = classofRaw$1;
2148
2166
  var regexpExec = regexpExec$2;
2149
2167
 
2150
- var TypeError$1 = global$1.TypeError;
2168
+ var TypeError$2 = global$3.TypeError;
2151
2169
 
2152
2170
  // `RegExpExec` abstract operation
2153
2171
  // https://tc39.es/ecma262/#sec-regexpexec
@@ -2158,15 +2176,15 @@ var regexpExecAbstract = function (R, S) {
2158
2176
  if (result !== null) anObject$1(result);
2159
2177
  return result;
2160
2178
  }
2161
- if (classof(R) === 'RegExp') return call$1(regexpExec, R, S);
2162
- throw TypeError$1('RegExp#exec called on incompatible receiver');
2179
+ if (classof$1(R) === 'RegExp') return call$1(regexpExec, R, S);
2180
+ throw TypeError$2('RegExp#exec called on incompatible receiver');
2163
2181
  };
2164
2182
 
2165
2183
  var apply = functionApply;
2166
2184
  var call = functionCall;
2167
2185
  var uncurryThis = functionUncurryThis;
2168
2186
  var fixRegExpWellKnownSymbolLogic = fixRegexpWellKnownSymbolLogic;
2169
- var fails = fails$f;
2187
+ var fails$1 = fails$g;
2170
2188
  var anObject = anObject$8;
2171
2189
  var isCallable = isCallable$g;
2172
2190
  var toIntegerOrInfinity = toIntegerOrInfinity$4;
@@ -2206,7 +2224,7 @@ var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
2206
2224
  return false;
2207
2225
  })();
2208
2226
 
2209
- var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
2227
+ var REPLACE_SUPPORTS_NAMED_GROUPS = !fails$1(function () {
2210
2228
  var re = /./;
2211
2229
  re.exec = function () {
2212
2230
  var result = [];
@@ -2315,4 +2333,308 @@ const MergeTag = ({
2315
2333
  return /*#__PURE__*/React.createElement(React.Fragment, null, value);
2316
2334
  };
2317
2335
 
2318
- export { MergeTag, NinetailedProvider, Personalize, TrackHasSeenComponent, useNinetailed, usePersonalize, useProfile };
2336
+ var global$2 = global$w;
2337
+ var aCallable = aCallable$2;
2338
+ var toObject = toObject$5;
2339
+ var IndexedObject = indexedObject;
2340
+ var lengthOfArrayLike = lengthOfArrayLike$2;
2341
+
2342
+ var TypeError$1 = global$2.TypeError;
2343
+
2344
+ // `Array.prototype.{ reduce, reduceRight }` methods implementation
2345
+ var createMethod = function (IS_RIGHT) {
2346
+ return function (that, callbackfn, argumentsLength, memo) {
2347
+ aCallable(callbackfn);
2348
+ var O = toObject(that);
2349
+ var self = IndexedObject(O);
2350
+ var length = lengthOfArrayLike(O);
2351
+ var index = IS_RIGHT ? length - 1 : 0;
2352
+ var i = IS_RIGHT ? -1 : 1;
2353
+ if (argumentsLength < 2) while (true) {
2354
+ if (index in self) {
2355
+ memo = self[index];
2356
+ index += i;
2357
+ break;
2358
+ }
2359
+ index += i;
2360
+ if (IS_RIGHT ? index < 0 : length <= index) {
2361
+ throw TypeError$1('Reduce of empty array with no initial value');
2362
+ }
2363
+ }
2364
+ for (;IS_RIGHT ? index >= 0 : length > index; index += i) if (index in self) {
2365
+ memo = callbackfn(memo, self[index], index, O);
2366
+ }
2367
+ return memo;
2368
+ };
2369
+ };
2370
+
2371
+ var arrayReduce = {
2372
+ // `Array.prototype.reduce` method
2373
+ // https://tc39.es/ecma262/#sec-array.prototype.reduce
2374
+ left: createMethod(false),
2375
+ // `Array.prototype.reduceRight` method
2376
+ // https://tc39.es/ecma262/#sec-array.prototype.reduceright
2377
+ right: createMethod(true)
2378
+ };
2379
+
2380
+ var fails = fails$g;
2381
+
2382
+ var arrayMethodIsStrict$1 = function (METHOD_NAME, argument) {
2383
+ var method = [][METHOD_NAME];
2384
+ return !!method && fails(function () {
2385
+ // eslint-disable-next-line no-useless-call -- required for testing
2386
+ method.call(null, argument || function () { return 1; }, 1);
2387
+ });
2388
+ };
2389
+
2390
+ var classof = classofRaw$1;
2391
+ var global$1 = global$w;
2392
+
2393
+ var engineIsNode = classof(global$1.process) == 'process';
2394
+
2395
+ var $ = _export;
2396
+ var $reduce = arrayReduce.left;
2397
+ var arrayMethodIsStrict = arrayMethodIsStrict$1;
2398
+ var CHROME_VERSION = engineV8Version;
2399
+ var IS_NODE = engineIsNode;
2400
+
2401
+ var STRICT_METHOD = arrayMethodIsStrict('reduce');
2402
+ // Chrome 80-82 has a critical bug
2403
+ // https://bugs.chromium.org/p/chromium/issues/detail?id=1049982
2404
+ var CHROME_BUG = !IS_NODE && CHROME_VERSION > 79 && CHROME_VERSION < 83;
2405
+
2406
+ // `Array.prototype.reduce` method
2407
+ // https://tc39.es/ecma262/#sec-array.prototype.reduce
2408
+ $({ target: 'Array', proto: true, forced: !STRICT_METHOD || CHROME_BUG }, {
2409
+ reduce: function reduce(callbackfn /* , initialValue */) {
2410
+ var length = arguments.length;
2411
+ return $reduce(this, callbackfn, length, length > 1 ? arguments[1] : undefined);
2412
+ }
2413
+ });
2414
+
2415
+ const useExperiements = () => {
2416
+ const context = useContext(ExperimentsContext);
2417
+
2418
+ if (context === undefined) {
2419
+ throw new Error('The component using the the context must be a descendant of the ExperimentsProvider');
2420
+ }
2421
+
2422
+ return {
2423
+ experiments: context.experiments
2424
+ };
2425
+ };
2426
+
2427
+ const useExperience = ({
2428
+ baseline,
2429
+ experiences
2430
+ }) => {
2431
+ const profileState = useProfile();
2432
+ const {
2433
+ experiments
2434
+ } = useExperiements();
2435
+ const hasVariants = experiences.map(experience => selectHasExperienceVariants(experience, baseline)).reduce((acc, curr) => acc || curr, false);
2436
+ const {
2437
+ status,
2438
+ profile
2439
+ } = profileState;
2440
+ const baseReturn = Object.assign(Object.assign({}, profileState), {
2441
+ hasVariants,
2442
+ baseline
2443
+ });
2444
+ const emptyReturn = Object.assign(Object.assign({}, baseReturn), {
2445
+ experience: null,
2446
+ variant: null,
2447
+ audience: null,
2448
+ isPersonalized: false,
2449
+ profile: null
2450
+ });
2451
+
2452
+ if (status === 'loading') {
2453
+ // @ts-ignore
2454
+ return emptyReturn;
2455
+ }
2456
+
2457
+ if (status === 'error') {
2458
+ // @ts-ignore
2459
+ return emptyReturn;
2460
+ }
2461
+
2462
+ if (!profile) {
2463
+ // @ts-ignore
2464
+ return emptyReturn;
2465
+ }
2466
+
2467
+ const activeExperiments = selectActiveExperiments(experiments, profile);
2468
+ const experience = selectExperience({
2469
+ experiences,
2470
+ activeExperiments,
2471
+ profile
2472
+ });
2473
+
2474
+ if (!experience) {
2475
+ // @ts-ignore
2476
+ return emptyReturn;
2477
+ }
2478
+
2479
+ const audience = experience.audience;
2480
+ const variant = selectExperienceVariant({
2481
+ baseline,
2482
+ experience,
2483
+ profile
2484
+ });
2485
+
2486
+ if (!variant) {
2487
+ return Object.assign(Object.assign({}, baseReturn), {
2488
+ status: 'success',
2489
+ loading: false,
2490
+ error: null,
2491
+ experience,
2492
+ variant: null,
2493
+ audience,
2494
+ profile,
2495
+ isPersonalized: false
2496
+ });
2497
+ }
2498
+
2499
+ return Object.assign(Object.assign({}, baseReturn), {
2500
+ status: 'success',
2501
+ loading: false,
2502
+ error: null,
2503
+ experience,
2504
+ variant,
2505
+ audience,
2506
+ profile,
2507
+ isPersonalized: true
2508
+ });
2509
+ };
2510
+
2511
+ const EXPERIENCE_TRAIT_PREFIX = 'nt_experiment_';
2512
+
2513
+ const useJoinExperiment = ({
2514
+ experiences
2515
+ }) => {
2516
+ const {
2517
+ identify
2518
+ } = useNinetailed();
2519
+ return useCallback(({
2520
+ experiment,
2521
+ profile
2522
+ }) => {
2523
+ const activeExperiments = selectActiveExperiments(experiences, profile);
2524
+
2525
+ if (!activeExperiments.length && experiment.type === 'nt_experiment') {
2526
+ identify('', {
2527
+ [`${EXPERIENCE_TRAIT_PREFIX}${experiment.id}`]: true
2528
+ });
2529
+ }
2530
+ }, [experiences]);
2531
+ };
2532
+
2533
+ const Experience = _a => {
2534
+ var {
2535
+ experiences,
2536
+ component: Component,
2537
+ loadingComponent: LoadingComponent
2538
+ } = _a,
2539
+ baseline = __rest(_a, ["experiences", "component", "loadingComponent"]);
2540
+
2541
+ const {
2542
+ status,
2543
+ hasVariants,
2544
+ experience,
2545
+ variant,
2546
+ audience,
2547
+ isPersonalized,
2548
+ profile
2549
+ } = useExperience({
2550
+ baseline,
2551
+ experiences
2552
+ });
2553
+ const joinExperiment = useJoinExperiment({
2554
+ experiences
2555
+ });
2556
+ useEffect(() => {
2557
+ if (status === 'success' && experience && profile) {
2558
+ joinExperiment({
2559
+ experiment: experience,
2560
+ profile
2561
+ });
2562
+ }
2563
+ }, [status, experience, profile]);
2564
+
2565
+ if (!hasVariants) {
2566
+ return /*#__PURE__*/React.createElement(Component, Object.assign({}, baseline));
2567
+ }
2568
+
2569
+ if (status === 'loading') {
2570
+ if (LoadingComponent) {
2571
+ return /*#__PURE__*/React.createElement(LoadingComponent, null);
2572
+ }
2573
+
2574
+ return /*#__PURE__*/React.createElement("div", {
2575
+ key: "hide",
2576
+ style: {
2577
+ opacity: 0
2578
+ }
2579
+ }, /*#__PURE__*/React.createElement(Component, Object.assign({}, baseline, {
2580
+ ninetailed: {
2581
+ isPersonalized: false,
2582
+ audience: {
2583
+ id: 'baseline'
2584
+ }
2585
+ }
2586
+ })));
2587
+ }
2588
+
2589
+ if (!experience) {
2590
+ return /*#__PURE__*/React.createElement(TrackHasSeenComponent, {
2591
+ variant: {
2592
+ id: baseline.id,
2593
+ audience: {
2594
+ id: 'baseline'
2595
+ },
2596
+ hidden: false
2597
+ },
2598
+ audience: {
2599
+ id: 'baseline'
2600
+ },
2601
+ isPersonalized: false
2602
+ }, /*#__PURE__*/React.createElement(Component, Object.assign({}, baseline, {
2603
+ key: baseline.id,
2604
+ ninetailed: {
2605
+ isPersonalized: false,
2606
+ audience: {
2607
+ id: 'baseline'
2608
+ }
2609
+ }
2610
+ })));
2611
+ }
2612
+
2613
+ return (
2614
+ /*#__PURE__*/
2615
+ // TODO this needs to be resolved when we move away from the old standard
2616
+ React.createElement(TrackHasSeenComponent, {
2617
+ variant: {
2618
+ id: (variant === null || variant === void 0 ? void 0 : variant.id) || baseline.id,
2619
+ audience: {
2620
+ id: (audience === null || audience === void 0 ? void 0 : audience.id) || 'baseline'
2621
+ },
2622
+ hidden: (variant === null || variant === void 0 ? void 0 : variant.hidden) || false
2623
+ },
2624
+ audience: {
2625
+ id: (audience === null || audience === void 0 ? void 0 : audience.id) || 'baseline'
2626
+ },
2627
+ isPersonalized: isPersonalized
2628
+ }, /*#__PURE__*/React.createElement(Component, Object.assign({}, variant, {
2629
+ key: `${experience.id}-${variant.id}`,
2630
+ ninetailed: {
2631
+ isPersonalized,
2632
+ audience: {
2633
+ id: (audience === null || audience === void 0 ? void 0 : audience.id) || 'baseline'
2634
+ }
2635
+ }
2636
+ })))
2637
+ );
2638
+ };
2639
+
2640
+ export { Experience, MergeTag, NinetailedProvider, Personalize, TrackHasSeenComponent, useNinetailed, usePersonalize, useProfile };