@ninetailed/experience.js-react 1.8.1-beta.1 → 2.0.0-beta.4
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 +493 -171
- package/index.umd.js +472 -154
- package/lib/Experience/Experience.d.ts +19 -0
- package/lib/Experience/ExperimentsContext.d.ts +6 -0
- package/lib/Experience/ExperimentsProvider.d.ts +7 -0
- package/lib/Experience/constants.d.ts +1 -0
- package/lib/Experience/index.d.ts +1 -0
- package/lib/Experience/types/Baseline.d.ts +3 -0
- package/lib/Experience/types/BaselineWithVariants.d.ts +6 -0
- package/lib/Experience/types/Variant.d.ts +4 -0
- package/lib/Experience/types/index.d.ts +4 -0
- package/lib/Experience/useExperience.d.ts +46 -0
- package/lib/Experience/useExperiments.d.ts +3 -0
- package/lib/Experience/useJoinExperiment.d.ts +11 -0
- package/lib/Experience/useSelectActiveExperiments.d.ts +9 -0
- package/lib/Experience/useSelectExperience.d.ts +10 -0
- package/lib/Experience/useSelectVariant.d.ts +22 -0
- package/lib/NinetailedProvider.d.ts +2 -0
- package/lib/TrackHasSeenComponent.d.ts +1 -1
- package/lib/Variant.d.ts +2 -2
- package/lib/index.d.ts +2 -0
- package/lib/useProfile.d.ts +19 -2
- package/package.json +4 -4
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
|
-
},
|
|
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$
|
|
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$
|
|
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$
|
|
87
|
+
var fails$f = fails$g;
|
|
72
88
|
|
|
73
|
-
var functionBindNative = !fails$
|
|
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$
|
|
119
|
+
var global$v = global$w;
|
|
104
120
|
var uncurryThis$e = functionUncurryThis;
|
|
105
|
-
var fails$
|
|
106
|
-
var classof$
|
|
121
|
+
var fails$e = fails$g;
|
|
122
|
+
var classof$4 = classofRaw$1;
|
|
107
123
|
|
|
108
|
-
var Object$5 = global$
|
|
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$
|
|
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$
|
|
133
|
+
return classof$4(it) == 'String' ? split(it, '') : Object$5(it);
|
|
118
134
|
} : Object$5;
|
|
119
135
|
|
|
120
|
-
var global$
|
|
136
|
+
var global$u = global$w;
|
|
121
137
|
|
|
122
|
-
var 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$
|
|
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$
|
|
148
|
+
var IndexedObject$2 = indexedObject;
|
|
133
149
|
var requireObjectCoercible$3 = requireObjectCoercible$4;
|
|
134
150
|
|
|
135
151
|
var toIndexedObject$5 = function (it) {
|
|
136
|
-
return IndexedObject$
|
|
152
|
+
return IndexedObject$2(requireObjectCoercible$3(it));
|
|
137
153
|
};
|
|
138
154
|
|
|
139
155
|
var shared$4 = {exports: {}};
|
|
140
156
|
|
|
141
|
-
var global$
|
|
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$
|
|
164
|
+
defineProperty$3(global$t, key, { value: value, configurable: true, writable: true });
|
|
149
165
|
} catch (error) {
|
|
150
|
-
global$
|
|
166
|
+
global$t[key] = value;
|
|
151
167
|
} return value;
|
|
152
168
|
};
|
|
153
169
|
|
|
154
|
-
var global$
|
|
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$
|
|
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$
|
|
190
|
+
var global$r = global$w;
|
|
175
191
|
var requireObjectCoercible$2 = requireObjectCoercible$4;
|
|
176
192
|
|
|
177
|
-
var Object$4 = global$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
243
|
+
var global$p = global$w;
|
|
228
244
|
var userAgent = engineUserAgent;
|
|
229
245
|
|
|
230
|
-
var process = global$
|
|
231
|
-
var Deno = global$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
325
|
+
var global$n = global$w;
|
|
310
326
|
var isObject$4 = isObject$5;
|
|
311
327
|
|
|
312
|
-
var String$4 = global$
|
|
313
|
-
var 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$
|
|
334
|
+
throw TypeError$9(String$4(argument) + ' is not an object');
|
|
319
335
|
};
|
|
320
336
|
|
|
321
337
|
var objectDefineProperties = {};
|
|
322
338
|
|
|
323
|
-
var fails$
|
|
339
|
+
var fails$c = fails$g;
|
|
324
340
|
|
|
325
341
|
// Detect IE8's incomplete defineProperty implementation
|
|
326
|
-
var descriptors = !fails$
|
|
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$
|
|
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$
|
|
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$
|
|
362
|
+
var global$m = global$w;
|
|
347
363
|
var isObject$3 = isObject$5;
|
|
348
364
|
|
|
349
|
-
var document$1 = global$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
412
|
+
var global$k = global$w;
|
|
397
413
|
|
|
398
|
-
var String$3 = global$
|
|
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$
|
|
424
|
+
var global$j = global$w;
|
|
409
425
|
var isCallable$c = isCallable$g;
|
|
410
426
|
var tryToString = tryToString$1;
|
|
411
427
|
|
|
412
|
-
var TypeError$
|
|
428
|
+
var TypeError$8 = global$j.TypeError;
|
|
413
429
|
|
|
414
430
|
// `Assert: IsCallable(argument) is true`
|
|
415
|
-
var aCallable$
|
|
431
|
+
var aCallable$2 = function (argument) {
|
|
416
432
|
if (isCallable$c(argument)) return argument;
|
|
417
|
-
throw TypeError$
|
|
433
|
+
throw TypeError$8(tryToString(argument) + ' is not a function');
|
|
418
434
|
};
|
|
419
435
|
|
|
420
|
-
var aCallable = aCallable$
|
|
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$
|
|
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$
|
|
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$
|
|
459
|
+
throw TypeError$7("Can't convert object to primitive value");
|
|
444
460
|
};
|
|
445
461
|
|
|
446
|
-
var global$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
588
|
+
var lengthOfArrayLike$1 = lengthOfArrayLike$2;
|
|
573
589
|
|
|
574
590
|
// `Array.prototype.{ indexOf, includes }` methods implementation
|
|
575
|
-
var createMethod$
|
|
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$
|
|
613
|
+
includes: createMethod$2(true),
|
|
598
614
|
// `Array.prototype.indexOf` method
|
|
599
615
|
// https://tc39.es/ecma262/#sec-array.prototype.indexof
|
|
600
|
-
indexOf: createMethod$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
843
|
-
var WeakMap = global$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1128
|
+
target = global$c;
|
|
1113
1129
|
} else if (STATIC) {
|
|
1114
|
-
target = global$
|
|
1130
|
+
target = global$c[TARGET] || setGlobal(TARGET, {});
|
|
1115
1131
|
} else {
|
|
1116
|
-
target = (global$
|
|
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$
|
|
1155
|
+
var fails$8 = fails$g;
|
|
1140
1156
|
|
|
1141
|
-
var correctPrototypeGetter = !fails$
|
|
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$
|
|
1164
|
+
var global$b = global$w;
|
|
1149
1165
|
var hasOwn$1 = hasOwnProperty_1;
|
|
1150
1166
|
var isCallable$6 = isCallable$g;
|
|
1151
|
-
var toObject$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1260
|
+
var global$a = global$w;
|
|
1245
1261
|
var isCallable$4 = isCallable$g;
|
|
1246
1262
|
|
|
1247
|
-
var String$2 = global$
|
|
1248
|
-
var 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$
|
|
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 $$
|
|
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 $$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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 $$
|
|
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
|
-
$$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1763
|
-
var classof$
|
|
1780
|
+
var global$7 = global$w;
|
|
1781
|
+
var classof$2 = classof$3;
|
|
1764
1782
|
|
|
1765
|
-
var String$1 = global$
|
|
1783
|
+
var String$1 = global$7.String;
|
|
1766
1784
|
|
|
1767
1785
|
var toString$3 = function (argument) {
|
|
1768
|
-
if (classof$
|
|
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$
|
|
1789
|
-
var global$
|
|
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$
|
|
1810
|
+
var $RegExp$2 = global$6.RegExp;
|
|
1793
1811
|
|
|
1794
|
-
var UNSUPPORTED_Y$1 = fails$
|
|
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$
|
|
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$
|
|
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$
|
|
1820
|
-
var global$
|
|
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$
|
|
1841
|
+
var $RegExp$1 = global$5.RegExp;
|
|
1824
1842
|
|
|
1825
|
-
var regexpUnsupportedDotAll = fails$
|
|
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$
|
|
1831
|
-
var global$
|
|
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$
|
|
1852
|
+
var $RegExp = global$4.RegExp;
|
|
1835
1853
|
|
|
1836
|
-
var regexpUnsupportedNcg = fails$
|
|
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
|
|
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
|
-
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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
|
-
|
|
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: audience ? audience : null,
|
|
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: audience ? audience : null,
|
|
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 || !variant) {
|
|
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.id,
|
|
2619
|
+
audience: {
|
|
2620
|
+
id: (audience === null || audience === void 0 ? void 0 : audience.id) || 'baseline'
|
|
2621
|
+
},
|
|
2622
|
+
hidden: variant.hidden || false
|
|
2623
|
+
},
|
|
2624
|
+
audience: {
|
|
2625
|
+
id: (audience === null || audience === void 0 ? void 0 : audience.id) || 'baseline'
|
|
2626
|
+
},
|
|
2627
|
+
isPersonalized: isPersonalized
|
|
2628
|
+
}, (variant === null || variant === void 0 ? void 0 : variant.hidden) ? null : /*#__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 };
|