@ninetailed/experience.js 4.2.3 → 4.3.0-beta.0
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.cjs +234 -127
- package/index.d.ts +4 -0
- package/index.js +232 -128
- package/lib/ElementSeenObserver.d.ts +16 -0
- package/lib/Ninetailed.d.ts +8 -1
- package/lib/analytics/index.d.ts +1 -0
- package/lib/constants.d.ts +2 -0
- package/lib/guards/acceptsCredentials.d.ts +2 -0
- package/lib/guards/isInterestedInHiddenPage.d.ts +2 -0
- package/lib/guards/isInterestedInSeenElements.d.ts +2 -0
- package/lib/types/Credentials.d.ts +4 -0
- package/lib/types/ElementSeenPayload.d.ts +7 -0
- package/lib/types/ProfileChangedPayload.d.ts +4 -0
- package/lib/types/TrackingProperties.d.ts +21 -21
- package/lib/types/index.d.ts +8 -0
- package/lib/types/interfaces/AcceptsCredentials.d.ts +4 -0
- package/lib/types/interfaces/InterestedInHiddenPage.d.ts +5 -0
- package/lib/types/interfaces/InterestedInProfileChange.d.ts +6 -0
- package/lib/types/interfaces/InterestedInSeenElements.d.ts +6 -0
- package/package.json +2 -2
package/index.cjs
CHANGED
|
@@ -12,6 +12,8 @@ var Analytics__default = /*#__PURE__*/_interopDefaultLegacy(Analytics);
|
|
|
12
12
|
|
|
13
13
|
const HAS_SEEN_EXPERIENCE = 'has_seen_experience';
|
|
14
14
|
const HAS_SEEN_COMPONENT = 'has_seen_component';
|
|
15
|
+
const HAS_SEEN_ELEMENT = 'has_seen_element';
|
|
16
|
+
const PAGE_HIDDEN = 'page_hidden';
|
|
15
17
|
|
|
16
18
|
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
|
|
17
19
|
|
|
@@ -609,9 +611,9 @@ var inspectSource$3 = store$1.inspectSource;
|
|
|
609
611
|
var global$d = global$k;
|
|
610
612
|
var isCallable$d = isCallable$k;
|
|
611
613
|
|
|
612
|
-
var WeakMap$
|
|
614
|
+
var WeakMap$2 = global$d.WeakMap;
|
|
613
615
|
|
|
614
|
-
var weakMapBasicDetection = isCallable$d(WeakMap$
|
|
616
|
+
var weakMapBasicDetection = isCallable$d(WeakMap$2) && /native code/.test(String(WeakMap$2));
|
|
615
617
|
|
|
616
618
|
var shared$1 = shared$3.exports;
|
|
617
619
|
var uid = uid$2;
|
|
@@ -635,7 +637,7 @@ var hiddenKeys$3 = hiddenKeys$4;
|
|
|
635
637
|
|
|
636
638
|
var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
|
|
637
639
|
var TypeError$2 = global$c.TypeError;
|
|
638
|
-
var WeakMap = global$c.WeakMap;
|
|
640
|
+
var WeakMap$1 = global$c.WeakMap;
|
|
639
641
|
var set$1, get, has;
|
|
640
642
|
|
|
641
643
|
var enforce = function (it) {
|
|
@@ -652,7 +654,7 @@ var getterFor = function (TYPE) {
|
|
|
652
654
|
};
|
|
653
655
|
|
|
654
656
|
if (NATIVE_WEAK_MAP || shared.state) {
|
|
655
|
-
var store = shared.state || (shared.state = new WeakMap());
|
|
657
|
+
var store = shared.state || (shared.state = new WeakMap$1());
|
|
656
658
|
/* eslint-disable no-self-assign -- prototype methods protection */
|
|
657
659
|
store.get = store.get;
|
|
658
660
|
store.has = store.has;
|
|
@@ -2524,6 +2526,18 @@ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
|
2524
2526
|
PERFORMANCE OF THIS SOFTWARE.
|
|
2525
2527
|
***************************************************************************** */
|
|
2526
2528
|
|
|
2529
|
+
function __rest(s, e) {
|
|
2530
|
+
var t = {};
|
|
2531
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
2532
|
+
t[p] = s[p];
|
|
2533
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
2534
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
2535
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
2536
|
+
t[p[i]] = s[p[i]];
|
|
2537
|
+
}
|
|
2538
|
+
return t;
|
|
2539
|
+
}
|
|
2540
|
+
|
|
2527
2541
|
function __awaiter(thisArg, _arguments, P, generator) {
|
|
2528
2542
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
2529
2543
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -2842,6 +2856,115 @@ if (NOT_GENERIC || INCORRECT_NAME) {
|
|
|
2842
2856
|
}, { unsafe: true });
|
|
2843
2857
|
}
|
|
2844
2858
|
|
|
2859
|
+
var classof = classofRaw$2;
|
|
2860
|
+
|
|
2861
|
+
// `IsArray` abstract operation
|
|
2862
|
+
// https://tc39.es/ecma262/#sec-isarray
|
|
2863
|
+
// eslint-disable-next-line es/no-array-isarray -- safe
|
|
2864
|
+
var isArray$2 = Array.isArray || function isArray(argument) {
|
|
2865
|
+
return classof(argument) == 'Array';
|
|
2866
|
+
};
|
|
2867
|
+
|
|
2868
|
+
var $TypeError$1 = TypeError;
|
|
2869
|
+
var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; // 2 ** 53 - 1 == 9007199254740991
|
|
2870
|
+
|
|
2871
|
+
var doesNotExceedSafeInteger$1 = function (it) {
|
|
2872
|
+
if (it > MAX_SAFE_INTEGER) throw $TypeError$1('Maximum allowed index exceeded');
|
|
2873
|
+
return it;
|
|
2874
|
+
};
|
|
2875
|
+
|
|
2876
|
+
var isArray$1 = isArray$2;
|
|
2877
|
+
var lengthOfArrayLike$2 = lengthOfArrayLike$5;
|
|
2878
|
+
var doesNotExceedSafeInteger = doesNotExceedSafeInteger$1;
|
|
2879
|
+
var bind = functionBindContext;
|
|
2880
|
+
|
|
2881
|
+
// `FlattenIntoArray` abstract operation
|
|
2882
|
+
// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
|
|
2883
|
+
var flattenIntoArray$1 = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {
|
|
2884
|
+
var targetIndex = start;
|
|
2885
|
+
var sourceIndex = 0;
|
|
2886
|
+
var mapFn = mapper ? bind(mapper, thisArg) : false;
|
|
2887
|
+
var element, elementLen;
|
|
2888
|
+
|
|
2889
|
+
while (sourceIndex < sourceLen) {
|
|
2890
|
+
if (sourceIndex in source) {
|
|
2891
|
+
element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
|
|
2892
|
+
|
|
2893
|
+
if (depth > 0 && isArray$1(element)) {
|
|
2894
|
+
elementLen = lengthOfArrayLike$2(element);
|
|
2895
|
+
targetIndex = flattenIntoArray$1(target, original, element, elementLen, targetIndex, depth - 1) - 1;
|
|
2896
|
+
} else {
|
|
2897
|
+
doesNotExceedSafeInteger(targetIndex + 1);
|
|
2898
|
+
target[targetIndex] = element;
|
|
2899
|
+
}
|
|
2900
|
+
|
|
2901
|
+
targetIndex++;
|
|
2902
|
+
}
|
|
2903
|
+
sourceIndex++;
|
|
2904
|
+
}
|
|
2905
|
+
return targetIndex;
|
|
2906
|
+
};
|
|
2907
|
+
|
|
2908
|
+
var flattenIntoArray_1 = flattenIntoArray$1;
|
|
2909
|
+
|
|
2910
|
+
var isArray = isArray$2;
|
|
2911
|
+
var isConstructor = isConstructor$2;
|
|
2912
|
+
var isObject$1 = isObject$a;
|
|
2913
|
+
var wellKnownSymbol$3 = wellKnownSymbol$h;
|
|
2914
|
+
|
|
2915
|
+
var SPECIES = wellKnownSymbol$3('species');
|
|
2916
|
+
var $Array = Array;
|
|
2917
|
+
|
|
2918
|
+
// a part of `ArraySpeciesCreate` abstract operation
|
|
2919
|
+
// https://tc39.es/ecma262/#sec-arrayspeciescreate
|
|
2920
|
+
var arraySpeciesConstructor$1 = function (originalArray) {
|
|
2921
|
+
var C;
|
|
2922
|
+
if (isArray(originalArray)) {
|
|
2923
|
+
C = originalArray.constructor;
|
|
2924
|
+
// cross-realm fallback
|
|
2925
|
+
if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;
|
|
2926
|
+
else if (isObject$1(C)) {
|
|
2927
|
+
C = C[SPECIES];
|
|
2928
|
+
if (C === null) C = undefined;
|
|
2929
|
+
}
|
|
2930
|
+
} return C === undefined ? $Array : C;
|
|
2931
|
+
};
|
|
2932
|
+
|
|
2933
|
+
var arraySpeciesConstructor = arraySpeciesConstructor$1;
|
|
2934
|
+
|
|
2935
|
+
// `ArraySpeciesCreate` abstract operation
|
|
2936
|
+
// https://tc39.es/ecma262/#sec-arrayspeciescreate
|
|
2937
|
+
var arraySpeciesCreate$1 = function (originalArray, length) {
|
|
2938
|
+
return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);
|
|
2939
|
+
};
|
|
2940
|
+
|
|
2941
|
+
var $$3 = _export;
|
|
2942
|
+
var flattenIntoArray = flattenIntoArray_1;
|
|
2943
|
+
var toObject$2 = toObject$5;
|
|
2944
|
+
var lengthOfArrayLike$1 = lengthOfArrayLike$5;
|
|
2945
|
+
var toIntegerOrInfinity = toIntegerOrInfinity$3;
|
|
2946
|
+
var arraySpeciesCreate = arraySpeciesCreate$1;
|
|
2947
|
+
|
|
2948
|
+
// `Array.prototype.flat` method
|
|
2949
|
+
// https://tc39.es/ecma262/#sec-array.prototype.flat
|
|
2950
|
+
$$3({ target: 'Array', proto: true }, {
|
|
2951
|
+
flat: function flat(/* depthArg = 1 */) {
|
|
2952
|
+
var depthArg = arguments.length ? arguments[0] : undefined;
|
|
2953
|
+
var O = toObject$2(this);
|
|
2954
|
+
var sourceLen = lengthOfArrayLike$1(O);
|
|
2955
|
+
var A = arraySpeciesCreate(O, 0);
|
|
2956
|
+
A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));
|
|
2957
|
+
return A;
|
|
2958
|
+
}
|
|
2959
|
+
});
|
|
2960
|
+
|
|
2961
|
+
// this method was added to unscopables after implementation
|
|
2962
|
+
// in popular engines, so it's moved to a separate module
|
|
2963
|
+
var addToUnscopables$1 = addToUnscopables$3;
|
|
2964
|
+
|
|
2965
|
+
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
|
|
2966
|
+
addToUnscopables$1('flat');
|
|
2967
|
+
|
|
2845
2968
|
var fails$3 = fails$h;
|
|
2846
2969
|
|
|
2847
2970
|
var correctPrototypeGetter = !fails$3(function () {
|
|
@@ -2853,7 +2976,7 @@ var correctPrototypeGetter = !fails$3(function () {
|
|
|
2853
2976
|
|
|
2854
2977
|
var hasOwn = hasOwnProperty_1;
|
|
2855
2978
|
var isCallable$2 = isCallable$k;
|
|
2856
|
-
var toObject$
|
|
2979
|
+
var toObject$1 = toObject$5;
|
|
2857
2980
|
var sharedKey = sharedKey$3;
|
|
2858
2981
|
var CORRECT_PROTOTYPE_GETTER = correctPrototypeGetter;
|
|
2859
2982
|
|
|
@@ -2865,7 +2988,7 @@ var ObjectPrototype = $Object.prototype;
|
|
|
2865
2988
|
// https://tc39.es/ecma262/#sec-object.getprototypeof
|
|
2866
2989
|
// eslint-disable-next-line es/no-object-getprototypeof -- safe
|
|
2867
2990
|
var objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {
|
|
2868
|
-
var object = toObject$
|
|
2991
|
+
var object = toObject$1(O);
|
|
2869
2992
|
if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];
|
|
2870
2993
|
var constructor = object.constructor;
|
|
2871
2994
|
if (isCallable$2(constructor) && object instanceof constructor) {
|
|
@@ -2875,12 +2998,12 @@ var objectGetPrototypeOf = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : f
|
|
|
2875
2998
|
|
|
2876
2999
|
var fails$2 = fails$h;
|
|
2877
3000
|
var isCallable$1 = isCallable$k;
|
|
2878
|
-
var isObject
|
|
3001
|
+
var isObject = isObject$a;
|
|
2879
3002
|
var getPrototypeOf$1 = objectGetPrototypeOf;
|
|
2880
3003
|
var defineBuiltIn$1 = defineBuiltIn$6;
|
|
2881
|
-
var wellKnownSymbol$
|
|
3004
|
+
var wellKnownSymbol$2 = wellKnownSymbol$h;
|
|
2882
3005
|
|
|
2883
|
-
var ITERATOR$3 = wellKnownSymbol$
|
|
3006
|
+
var ITERATOR$3 = wellKnownSymbol$2('iterator');
|
|
2884
3007
|
var BUGGY_SAFARI_ITERATORS$1 = false;
|
|
2885
3008
|
|
|
2886
3009
|
// `%IteratorPrototype%` object
|
|
@@ -2898,7 +3021,7 @@ if ([].keys) {
|
|
|
2898
3021
|
}
|
|
2899
3022
|
}
|
|
2900
3023
|
|
|
2901
|
-
var NEW_ITERATOR_PROTOTYPE = !isObject
|
|
3024
|
+
var NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype$2) || fails$2(function () {
|
|
2902
3025
|
var test = {};
|
|
2903
3026
|
// FF44- legacy iterators case
|
|
2904
3027
|
return IteratorPrototype$2[ITERATOR$3].call(test) !== test;
|
|
@@ -2935,7 +3058,7 @@ var iteratorCreateConstructor = function (IteratorConstructor, NAME, next, ENUME
|
|
|
2935
3058
|
return IteratorConstructor;
|
|
2936
3059
|
};
|
|
2937
3060
|
|
|
2938
|
-
var $$
|
|
3061
|
+
var $$2 = _export;
|
|
2939
3062
|
var call = functionCall;
|
|
2940
3063
|
var FunctionName = functionName;
|
|
2941
3064
|
var isCallable = isCallable$k;
|
|
@@ -2945,7 +3068,7 @@ var setPrototypeOf = objectSetPrototypeOf;
|
|
|
2945
3068
|
var setToStringTag = setToStringTag$3;
|
|
2946
3069
|
var createNonEnumerableProperty$1 = createNonEnumerableProperty$4;
|
|
2947
3070
|
var defineBuiltIn = defineBuiltIn$6;
|
|
2948
|
-
var wellKnownSymbol$
|
|
3071
|
+
var wellKnownSymbol$1 = wellKnownSymbol$h;
|
|
2949
3072
|
var Iterators$1 = iterators;
|
|
2950
3073
|
var IteratorsCore = iteratorsCore;
|
|
2951
3074
|
|
|
@@ -2953,7 +3076,7 @@ var PROPER_FUNCTION_NAME = FunctionName.PROPER;
|
|
|
2953
3076
|
var CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;
|
|
2954
3077
|
var IteratorPrototype = IteratorsCore.IteratorPrototype;
|
|
2955
3078
|
var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
|
|
2956
|
-
var ITERATOR$2 = wellKnownSymbol$
|
|
3079
|
+
var ITERATOR$2 = wellKnownSymbol$1('iterator');
|
|
2957
3080
|
var KEYS = 'keys';
|
|
2958
3081
|
var VALUES = 'values';
|
|
2959
3082
|
var ENTRIES = 'entries';
|
|
@@ -3020,7 +3143,7 @@ var iteratorDefine = function (Iterable, NAME, IteratorConstructor, next, DEFAUL
|
|
|
3020
3143
|
if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
|
|
3021
3144
|
defineBuiltIn(IterablePrototype, KEY, methods[KEY]);
|
|
3022
3145
|
}
|
|
3023
|
-
} else $$
|
|
3146
|
+
} else $$2({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
|
|
3024
3147
|
}
|
|
3025
3148
|
|
|
3026
3149
|
// define iterator
|
|
@@ -3039,7 +3162,7 @@ var createIterResultObject$1 = function (value, done) {
|
|
|
3039
3162
|
};
|
|
3040
3163
|
|
|
3041
3164
|
var toIndexedObject = toIndexedObject$5;
|
|
3042
|
-
var addToUnscopables
|
|
3165
|
+
var addToUnscopables = addToUnscopables$3;
|
|
3043
3166
|
var Iterators = iterators;
|
|
3044
3167
|
var InternalStateModule = internalState;
|
|
3045
3168
|
var defineProperty = objectDefineProperty.f;
|
|
@@ -3090,9 +3213,9 @@ var es_array_iterator = defineIterator(Array, 'Array', function (iterated, kind)
|
|
|
3090
3213
|
var values = Iterators.Arguments = Iterators.Array;
|
|
3091
3214
|
|
|
3092
3215
|
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
|
|
3093
|
-
addToUnscopables
|
|
3094
|
-
addToUnscopables
|
|
3095
|
-
addToUnscopables
|
|
3216
|
+
addToUnscopables('keys');
|
|
3217
|
+
addToUnscopables('values');
|
|
3218
|
+
addToUnscopables('entries');
|
|
3096
3219
|
|
|
3097
3220
|
// V8 ~ Chrome 45- bug
|
|
3098
3221
|
if (DESCRIPTORS && values.name !== 'values') try {
|
|
@@ -3148,10 +3271,10 @@ var DOMIterables = domIterables;
|
|
|
3148
3271
|
var DOMTokenListPrototype = domTokenListPrototype;
|
|
3149
3272
|
var ArrayIteratorMethods = es_array_iterator;
|
|
3150
3273
|
var createNonEnumerableProperty = createNonEnumerableProperty$4;
|
|
3151
|
-
var wellKnownSymbol
|
|
3274
|
+
var wellKnownSymbol = wellKnownSymbol$h;
|
|
3152
3275
|
|
|
3153
|
-
var ITERATOR$1 = wellKnownSymbol
|
|
3154
|
-
var TO_STRING_TAG = wellKnownSymbol
|
|
3276
|
+
var ITERATOR$1 = wellKnownSymbol('iterator');
|
|
3277
|
+
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
|
|
3155
3278
|
var ArrayValues = ArrayIteratorMethods.values;
|
|
3156
3279
|
|
|
3157
3280
|
var handlePrototype = function (CollectionPrototype, COLLECTION_NAME) {
|
|
@@ -3182,115 +3305,54 @@ for (var COLLECTION_NAME in DOMIterables) {
|
|
|
3182
3305
|
|
|
3183
3306
|
handlePrototype(DOMTokenListPrototype, 'DOMTokenList');
|
|
3184
3307
|
|
|
3185
|
-
|
|
3186
|
-
|
|
3187
|
-
|
|
3188
|
-
|
|
3189
|
-
|
|
3190
|
-
|
|
3191
|
-
|
|
3192
|
-
}
|
|
3193
|
-
|
|
3194
|
-
|
|
3195
|
-
|
|
3196
|
-
|
|
3197
|
-
|
|
3198
|
-
|
|
3199
|
-
|
|
3200
|
-
|
|
3201
|
-
|
|
3202
|
-
|
|
3203
|
-
|
|
3204
|
-
|
|
3205
|
-
|
|
3206
|
-
|
|
3207
|
-
// `FlattenIntoArray` abstract operation
|
|
3208
|
-
// https://tc39.github.io/proposal-flatMap/#sec-FlattenIntoArray
|
|
3209
|
-
var flattenIntoArray$1 = function (target, original, source, sourceLen, start, depth, mapper, thisArg) {
|
|
3210
|
-
var targetIndex = start;
|
|
3211
|
-
var sourceIndex = 0;
|
|
3212
|
-
var mapFn = mapper ? bind(mapper, thisArg) : false;
|
|
3213
|
-
var element, elementLen;
|
|
3214
|
-
|
|
3215
|
-
while (sourceIndex < sourceLen) {
|
|
3216
|
-
if (sourceIndex in source) {
|
|
3217
|
-
element = mapFn ? mapFn(source[sourceIndex], sourceIndex, original) : source[sourceIndex];
|
|
3218
|
-
|
|
3219
|
-
if (depth > 0 && isArray$1(element)) {
|
|
3220
|
-
elementLen = lengthOfArrayLike$2(element);
|
|
3221
|
-
targetIndex = flattenIntoArray$1(target, original, element, elementLen, targetIndex, depth - 1) - 1;
|
|
3308
|
+
class ElementSeenObserver {
|
|
3309
|
+
constructor(_options) {
|
|
3310
|
+
this._options = _options;
|
|
3311
|
+
this._elementDelays = new WeakMap();
|
|
3312
|
+
this._intersectionTimers = new WeakMap();
|
|
3313
|
+
if (typeof IntersectionObserver !== 'undefined') {
|
|
3314
|
+
this._intersectionObserver = new IntersectionObserver(this.onIntersection.bind(this));
|
|
3315
|
+
}
|
|
3316
|
+
}
|
|
3317
|
+
onIntersection(entries) {
|
|
3318
|
+
entries.forEach(entry => {
|
|
3319
|
+
const {
|
|
3320
|
+
isIntersecting,
|
|
3321
|
+
target
|
|
3322
|
+
} = entry;
|
|
3323
|
+
if (isIntersecting) {
|
|
3324
|
+
const delay = this._elementDelays.get(target);
|
|
3325
|
+
const timeOut = window.setTimeout(() => {
|
|
3326
|
+
this._options.onElementSeen(target);
|
|
3327
|
+
}, delay);
|
|
3328
|
+
this._intersectionTimers.set(target, timeOut);
|
|
3222
3329
|
} else {
|
|
3223
|
-
|
|
3224
|
-
|
|
3330
|
+
const timeOut = this._intersectionTimers.get(target);
|
|
3331
|
+
if (typeof timeOut !== 'undefined') {
|
|
3332
|
+
window.clearTimeout(timeOut);
|
|
3333
|
+
}
|
|
3225
3334
|
}
|
|
3226
|
-
|
|
3227
|
-
targetIndex++;
|
|
3228
|
-
}
|
|
3229
|
-
sourceIndex++;
|
|
3335
|
+
});
|
|
3230
3336
|
}
|
|
3231
|
-
|
|
3232
|
-
|
|
3233
|
-
|
|
3234
|
-
|
|
3235
|
-
|
|
3236
|
-
|
|
3237
|
-
var
|
|
3238
|
-
|
|
3239
|
-
|
|
3240
|
-
|
|
3241
|
-
var SPECIES = wellKnownSymbol('species');
|
|
3242
|
-
var $Array = Array;
|
|
3337
|
+
observe(element, options) {
|
|
3338
|
+
var _a, _b;
|
|
3339
|
+
this._elementDelays.set(element, (_a = options === null || options === void 0 ? void 0 : options.delay) !== null && _a !== void 0 ? _a : 2000);
|
|
3340
|
+
(_b = this._intersectionObserver) === null || _b === void 0 ? void 0 : _b.observe(element);
|
|
3341
|
+
}
|
|
3342
|
+
unobserve(element) {
|
|
3343
|
+
var _a;
|
|
3344
|
+
(_a = this._intersectionObserver) === null || _a === void 0 ? void 0 : _a.unobserve(element);
|
|
3345
|
+
}
|
|
3346
|
+
}
|
|
3243
3347
|
|
|
3244
|
-
|
|
3245
|
-
|
|
3246
|
-
var arraySpeciesConstructor$1 = function (originalArray) {
|
|
3247
|
-
var C;
|
|
3248
|
-
if (isArray(originalArray)) {
|
|
3249
|
-
C = originalArray.constructor;
|
|
3250
|
-
// cross-realm fallback
|
|
3251
|
-
if (isConstructor(C) && (C === $Array || isArray(C.prototype))) C = undefined;
|
|
3252
|
-
else if (isObject(C)) {
|
|
3253
|
-
C = C[SPECIES];
|
|
3254
|
-
if (C === null) C = undefined;
|
|
3255
|
-
}
|
|
3256
|
-
} return C === undefined ? $Array : C;
|
|
3348
|
+
const acceptsCredentials = plugin => {
|
|
3349
|
+
return typeof plugin === 'object' && plugin !== null && 'setCredentials' in plugin && typeof plugin.setCredentials === 'function';
|
|
3257
3350
|
};
|
|
3258
3351
|
|
|
3259
|
-
|
|
3260
|
-
|
|
3261
|
-
// `ArraySpeciesCreate` abstract operation
|
|
3262
|
-
// https://tc39.es/ecma262/#sec-arrayspeciescreate
|
|
3263
|
-
var arraySpeciesCreate$1 = function (originalArray, length) {
|
|
3264
|
-
return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);
|
|
3352
|
+
const isInterestedInHiddenPage = arg => {
|
|
3353
|
+
return typeof arg === 'object' && arg !== null && PAGE_HIDDEN in arg && typeof arg[PAGE_HIDDEN] === 'function';
|
|
3265
3354
|
};
|
|
3266
3355
|
|
|
3267
|
-
var $$2 = _export;
|
|
3268
|
-
var flattenIntoArray = flattenIntoArray_1;
|
|
3269
|
-
var toObject$1 = toObject$5;
|
|
3270
|
-
var lengthOfArrayLike$1 = lengthOfArrayLike$5;
|
|
3271
|
-
var toIntegerOrInfinity = toIntegerOrInfinity$3;
|
|
3272
|
-
var arraySpeciesCreate = arraySpeciesCreate$1;
|
|
3273
|
-
|
|
3274
|
-
// `Array.prototype.flat` method
|
|
3275
|
-
// https://tc39.es/ecma262/#sec-array.prototype.flat
|
|
3276
|
-
$$2({ target: 'Array', proto: true }, {
|
|
3277
|
-
flat: function flat(/* depthArg = 1 */) {
|
|
3278
|
-
var depthArg = arguments.length ? arguments[0] : undefined;
|
|
3279
|
-
var O = toObject$1(this);
|
|
3280
|
-
var sourceLen = lengthOfArrayLike$1(O);
|
|
3281
|
-
var A = arraySpeciesCreate(O, 0);
|
|
3282
|
-
A.length = flattenIntoArray(A, O, O, sourceLen, 0, depthArg === undefined ? 1 : toIntegerOrInfinity(depthArg));
|
|
3283
|
-
return A;
|
|
3284
|
-
}
|
|
3285
|
-
});
|
|
3286
|
-
|
|
3287
|
-
// this method was added to unscopables after implementation
|
|
3288
|
-
// in popular engines, so it's moved to a separate module
|
|
3289
|
-
var addToUnscopables = addToUnscopables$3;
|
|
3290
|
-
|
|
3291
|
-
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
|
|
3292
|
-
addToUnscopables('flat');
|
|
3293
|
-
|
|
3294
3356
|
class Ninetailed {
|
|
3295
3357
|
constructor(ninetailedApiClientInstanceOrOptions, {
|
|
3296
3358
|
plugins,
|
|
@@ -3346,6 +3408,28 @@ class Ninetailed {
|
|
|
3346
3408
|
type: HAS_SEEN_EXPERIENCE
|
|
3347
3409
|
}));
|
|
3348
3410
|
};
|
|
3411
|
+
this.observeElement = (payload, options) => {
|
|
3412
|
+
const {
|
|
3413
|
+
element
|
|
3414
|
+
} = payload,
|
|
3415
|
+
remaingPayload = __rest(payload, ["element"]);
|
|
3416
|
+
this.observedElements.set(element, remaingPayload);
|
|
3417
|
+
this.elementSeenObserver.observe(element, options);
|
|
3418
|
+
};
|
|
3419
|
+
this.unobserveElement = element => {
|
|
3420
|
+
this.observedElements.delete(element);
|
|
3421
|
+
this.elementSeenObserver.unobserve(element);
|
|
3422
|
+
};
|
|
3423
|
+
this.onElementSeen = element => {
|
|
3424
|
+
const payload = this.observedElements.get(element);
|
|
3425
|
+
if (typeof payload !== 'undefined') {
|
|
3426
|
+
this.instance.dispatch(Object.assign(Object.assign({
|
|
3427
|
+
element
|
|
3428
|
+
}, payload), {
|
|
3429
|
+
type: HAS_SEEN_ELEMENT
|
|
3430
|
+
}));
|
|
3431
|
+
}
|
|
3432
|
+
};
|
|
3349
3433
|
this.identify = (uid, traits, options) => __awaiter(this, void 0, void 0, function* () {
|
|
3350
3434
|
try {
|
|
3351
3435
|
const result = experience_jsShared.Traits.default({}).safeParse(traits);
|
|
@@ -3413,6 +3497,18 @@ class Ninetailed {
|
|
|
3413
3497
|
this.onIsInitialized(resolve);
|
|
3414
3498
|
});
|
|
3415
3499
|
};
|
|
3500
|
+
this.onVisibilityChange = () => {
|
|
3501
|
+
if (typeof document === 'undefined') {
|
|
3502
|
+
return;
|
|
3503
|
+
}
|
|
3504
|
+
document.addEventListener('visibilitychange', () => {
|
|
3505
|
+
if (document.visibilityState === 'hidden') {
|
|
3506
|
+
this.instance.dispatch({
|
|
3507
|
+
type: PAGE_HIDDEN
|
|
3508
|
+
});
|
|
3509
|
+
}
|
|
3510
|
+
});
|
|
3511
|
+
};
|
|
3416
3512
|
if (ninetailedApiClientInstanceOrOptions instanceof experience_jsShared.NinetailedApiClient) {
|
|
3417
3513
|
this.apiClient = ninetailedApiClientInstanceOrOptions;
|
|
3418
3514
|
} else {
|
|
@@ -3430,15 +3526,15 @@ class Ninetailed {
|
|
|
3430
3526
|
preview
|
|
3431
3527
|
});
|
|
3432
3528
|
}
|
|
3433
|
-
this.plugins =
|
|
3434
|
-
|
|
3435
|
-
|
|
3529
|
+
this.plugins = (plugins !== null && plugins !== void 0 ? plugins : []).flat();
|
|
3530
|
+
this.plugins.forEach(plugin => {
|
|
3531
|
+
if (acceptsCredentials(plugin) && this.clientId && this.environment) {
|
|
3532
|
+
plugin.setCredentials({
|
|
3436
3533
|
clientId: this.clientId,
|
|
3437
3534
|
environment: this.environment
|
|
3438
3535
|
});
|
|
3439
3536
|
}
|
|
3440
|
-
|
|
3441
|
-
}).flat()];
|
|
3537
|
+
});
|
|
3442
3538
|
if (profile) {
|
|
3443
3539
|
this._profileState = {
|
|
3444
3540
|
status: 'success',
|
|
@@ -3486,6 +3582,14 @@ class Ninetailed {
|
|
|
3486
3582
|
});
|
|
3487
3583
|
}
|
|
3488
3584
|
});
|
|
3585
|
+
this.observedElements = new WeakMap();
|
|
3586
|
+
this.elementSeenObserver = new ElementSeenObserver({
|
|
3587
|
+
onElementSeen: this.onElementSeen.bind(this)
|
|
3588
|
+
});
|
|
3589
|
+
const hasPluginsInterestedInHiddenPage = this.plugins.some(isInterestedInHiddenPage);
|
|
3590
|
+
if (hasPluginsInterestedInHiddenPage) {
|
|
3591
|
+
this.onVisibilityChange();
|
|
3592
|
+
}
|
|
3489
3593
|
this.registerWindowHandlers();
|
|
3490
3594
|
}
|
|
3491
3595
|
get profileState() {
|
|
@@ -3929,11 +4033,13 @@ exports.CONSENT = CONSENT;
|
|
|
3929
4033
|
exports.DEBUG_FLAG = DEBUG_FLAG;
|
|
3930
4034
|
exports.EMPTY_MERGE_ID = EMPTY_MERGE_ID;
|
|
3931
4035
|
exports.HAS_SEEN_COMPONENT = HAS_SEEN_COMPONENT;
|
|
4036
|
+
exports.HAS_SEEN_ELEMENT = HAS_SEEN_ELEMENT;
|
|
3932
4037
|
exports.HAS_SEEN_EXPERIENCE = HAS_SEEN_EXPERIENCE;
|
|
3933
4038
|
exports.LEGACY_ANONYMOUS_ID = LEGACY_ANONYMOUS_ID;
|
|
3934
4039
|
exports.Ninetailed = Ninetailed;
|
|
3935
4040
|
exports.NinetailedPlugin = NinetailedPlugin;
|
|
3936
4041
|
exports.OnChangeEmitter = OnChangeEmitter;
|
|
4042
|
+
exports.PAGE_HIDDEN = PAGE_HIDDEN;
|
|
3937
4043
|
exports.PLUGIN_NAME = PLUGIN_NAME;
|
|
3938
4044
|
exports.PROFILE_CHANGE = PROFILE_CHANGE;
|
|
3939
4045
|
exports.PROFILE_FALLBACK_CACHE = PROFILE_FALLBACK_CACHE;
|
|
@@ -3941,6 +4047,7 @@ exports.PROFILE_RESET = PROFILE_RESET;
|
|
|
3941
4047
|
exports.SET_ENABLED_FEATURES = SET_ENABLED_FEATURES;
|
|
3942
4048
|
exports.TrackComponentProperties = TrackComponentProperties;
|
|
3943
4049
|
exports.TrackExperienceProperties = TrackExperienceProperties;
|
|
4050
|
+
exports.buildClientNinetailedRequestContext = buildClientNinetailedRequestContext;
|
|
3944
4051
|
exports.decodeExperienceVariantsMap = decodeExperienceVariantsMap;
|
|
3945
4052
|
exports.makeExperienceSelectMiddleware = makeExperienceSelectMiddleware;
|
|
3946
4053
|
exports.ninetailedPlugin = ninetailedPlugin;
|
package/index.d.ts
CHANGED
|
@@ -7,5 +7,9 @@ export * from './lib/experience';
|
|
|
7
7
|
export * from './lib/plugins/selectPluginsHavingExperienceSelectionMiddleware';
|
|
8
8
|
export * from './lib/plugins/selectPluginsHavingOnChangeEmitter';
|
|
9
9
|
export * from './lib/types/interfaces/HasExperienceSelectionMiddleware';
|
|
10
|
+
export * from './lib/types/interfaces/InterestedInSeenElements';
|
|
11
|
+
export * from './lib/types/interfaces/InterestedInProfileChange';
|
|
12
|
+
export * from './lib/types/interfaces/InterestedInHiddenPage';
|
|
13
|
+
export * from './lib/types/interfaces/AcceptsCredentials';
|
|
10
14
|
export * from './lib/utils/OnChangeEmitter';
|
|
11
15
|
export type { Profile } from '@ninetailed/experience.js-shared';
|