@usermaven/sdk-js 1.3.3 → 1.4.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.
@@ -791,6 +791,14 @@ function _findClosestLink(element) {
791
791
  }
792
792
  return null;
793
793
  }
794
+ function _cleanObject(obj) {
795
+ for (var propName in obj) {
796
+ if (obj[propName] === '' || obj[propName] === null || obj[propName] === undefined || (typeof obj[propName] === 'object' && Object.keys(obj[propName]).length === 0)) {
797
+ delete obj[propName];
798
+ }
799
+ }
800
+ return obj;
801
+ }
794
802
 
795
803
  /*
796
804
  * Get the className of an element, accounting for edge cases where element.className is an object
@@ -1400,10 +1408,131 @@ var autocapture = {
1400
1408
  _bind_instance_methods(autocapture);
1401
1409
  _safewrap_instance_methods(autocapture);
1402
1410
 
1411
+ var FormTracking = /** @class */ (function () {
1412
+ function FormTracking(instance, trackingType) {
1413
+ if (trackingType === void 0) { trackingType = 'all'; }
1414
+ this.instance = instance;
1415
+ this.trackingType = trackingType;
1416
+ // Wait for the DOM to be ready
1417
+ if (document.readyState === 'loading') {
1418
+ document.addEventListener('DOMContentLoaded', this.track.bind(this));
1419
+ }
1420
+ else {
1421
+ this.track();
1422
+ }
1423
+ }
1424
+ /**
1425
+ * Track form submit
1426
+ * @description this function will be called on every form submit event to track form submit
1427
+ */
1428
+ FormTracking.prototype.track = function () {
1429
+ var _this = this;
1430
+ this.formElements = document.querySelectorAll('form');
1431
+ if (this.trackingType === 'tagged') {
1432
+ this.formElements = document.querySelectorAll('form[data-um-form]');
1433
+ }
1434
+ this.formElements.forEach(function (form) {
1435
+ form.addEventListener('submit', function (event) {
1436
+ var form = event.target;
1437
+ var props = _this._getFormDetails(form);
1438
+ _this.instance.capture('$form', _cleanObject(props));
1439
+ });
1440
+ });
1441
+ };
1442
+ FormTracking.getInstance = function (instance, trackingType) {
1443
+ if (trackingType === void 0) { trackingType = 'all'; }
1444
+ if (!FormTracking.instance) {
1445
+ FormTracking.instance = new FormTracking(instance, trackingType);
1446
+ }
1447
+ return FormTracking.instance;
1448
+ };
1449
+ FormTracking.prototype._getFormDetails = function (form) {
1450
+ var _this = this;
1451
+ var formDetails = {
1452
+ form_id: form.id,
1453
+ form_name: form.name || '',
1454
+ form_action: form.action,
1455
+ form_method: form.method,
1456
+ };
1457
+ var formFields = form.querySelectorAll('input, select, textarea');
1458
+ // ignore form fields with class um-no-capture
1459
+ var filteredFormFields = Array.from(formFields).filter(function (field) { return !field.classList.contains('um-no-capture'); });
1460
+ filteredFormFields.forEach(function (field, index) {
1461
+ var fieldProps = _this._getFieldProps(field, index);
1462
+ Object.assign(formDetails, fieldProps);
1463
+ });
1464
+ return formDetails;
1465
+ };
1466
+ FormTracking.prototype._getFieldProps = function (field, index) {
1467
+ var _a;
1468
+ var fieldDataAttributes = Object.keys(field.dataset).length ? JSON.stringify(field.dataset) : undefined;
1469
+ var safeValue = this.getSafeText(field);
1470
+ return _a = {},
1471
+ _a["field_" + (index + 1) + "_tag"] = field.tagName.toLowerCase(),
1472
+ _a["field_" + (index + 1) + "_type"] = field instanceof HTMLInputElement ? field.type : undefined,
1473
+ _a["field_" + (index + 1) + "_data_attributes"] = fieldDataAttributes,
1474
+ _a["field_" + (index + 1) + "_id"] = field.id,
1475
+ _a["field_" + (index + 1) + "_value"] = safeValue,
1476
+ _a["field_" + (index + 1) + "_class"] = field.className,
1477
+ _a["field_" + (index + 1) + "_name"] = field.name,
1478
+ _a;
1479
+ };
1480
+ FormTracking.prototype.getSafeText = function (element) {
1481
+ var safeText = '';
1482
+ if ('value' in element && element.type !== "password") {
1483
+ safeText = element.value;
1484
+ }
1485
+ else if (element.hasChildNodes()) {
1486
+ var textNodes = Array.from(element.childNodes).filter(function (node) { return node.nodeType === Node.TEXT_NODE; });
1487
+ safeText = textNodes.map(function (node) { return node.textContent; }).join('');
1488
+ }
1489
+ else {
1490
+ safeText = element.textContent || '';
1491
+ }
1492
+ return this._scrubPotentiallySensitiveValues(safeText);
1493
+ };
1494
+ FormTracking.prototype._scrubPotentiallySensitiveValues = function (text) {
1495
+ if (!this._shouldCaptureValue(text)) {
1496
+ return '<redacted>';
1497
+ }
1498
+ return text;
1499
+ };
1500
+ FormTracking.prototype._shouldCaptureValue = function (value) {
1501
+ if (this._isNullish(value)) {
1502
+ return false;
1503
+ }
1504
+ if (this._isString(value)) {
1505
+ value = this._trim(value);
1506
+ // check to see if input value looks like a credit card number
1507
+ // see: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch04s20.html
1508
+ var ccRegex = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/;
1509
+ if (ccRegex.test((value || '').replace(/[- ]/g, ''))) {
1510
+ return false;
1511
+ }
1512
+ // check to see if input value looks like a social security number
1513
+ var ssnRegex = /(^\d{3}-?\d{2}-?\d{4}$)/;
1514
+ if (ssnRegex.test(value)) {
1515
+ return false;
1516
+ }
1517
+ }
1518
+ return true;
1519
+ };
1520
+ FormTracking.prototype._isNullish = function (value) {
1521
+ return value === null || value === undefined;
1522
+ };
1523
+ FormTracking.prototype._isString = function (value) {
1524
+ return typeof value === 'string' || value instanceof String;
1525
+ };
1526
+ FormTracking.prototype._trim = function (value) {
1527
+ return value.trim().replace(/^\s+|\s+$/g, '');
1528
+ };
1529
+ return FormTracking;
1530
+ }());
1531
+
1403
1532
  var VERSION_INFO = {
1404
1533
  env: 'production',
1405
- date: '2024-02-28T06:06:37.148Z',
1406
- version: '1.3.3'
1534
+ date: '2024-05-21T10:41:05.452Z',
1535
+ version: '1.4.0'
1407
1536
  };
1408
1537
  var USERMAVEN_VERSION = VERSION_INFO.version + "/" + VERSION_INFO.env + "@" + VERSION_INFO.date;
1409
1538
  var MAX_AGE_TEN_YEARS = 31622400 * 10;
@@ -1823,6 +1952,7 @@ var UsermavenClientImpl = /** @class */ (function () {
1823
1952
  this.randomizeUrl = false;
1824
1953
  this.namespace = "usermaven";
1825
1954
  this.crossDomainLinking = true;
1955
+ this.formTracking = false;
1826
1956
  this.domains = [];
1827
1957
  this.apiKey = "";
1828
1958
  this.initialized = false;
@@ -2141,7 +2271,7 @@ var UsermavenClientImpl = /** @class */ (function () {
2141
2271
  };
2142
2272
  UsermavenClientImpl.prototype.init = function (options) {
2143
2273
  var _this = this;
2144
- var _a, _b, _c, _d, _e;
2274
+ var _a, _b, _c, _d, _e, _f;
2145
2275
  if (isWindowAvailable() && !options.force_use_fetch) {
2146
2276
  if (options.fetch) {
2147
2277
  getLogger().warn("Custom fetch implementation is provided to Usermaven. However, it will be ignored since Usermaven runs in browser");
@@ -2201,6 +2331,7 @@ var UsermavenClientImpl = /** @class */ (function () {
2201
2331
  this.cookieDomain = options.cookie_domain || getCookieDomain();
2202
2332
  this.namespace = options.namespace || "usermaven";
2203
2333
  this.crossDomainLinking = (_a = options.cross_domain_linking) !== null && _a !== void 0 ? _a : true;
2334
+ this.formTracking = (_b = options.form_tracking) !== null && _b !== void 0 ? _b : false;
2204
2335
  this.domains = options.domains ? (options.domains).split(',').map(function (domain) { return domain.trim(); }) : [];
2205
2336
  this.trackingHost = getHostWithProtocol(options["tracking_host"] || "t.usermaven.com");
2206
2337
  this.randomizeUrl = options.randomize_url || false;
@@ -2227,8 +2358,8 @@ var UsermavenClientImpl = /** @class */ (function () {
2227
2358
  var restored = this.propsPersistance.restore();
2228
2359
  if (restored) {
2229
2360
  this.permanentProperties = restored;
2230
- this.permanentProperties.globalProps = (_b = restored.globalProps) !== null && _b !== void 0 ? _b : {};
2231
- this.permanentProperties.propsPerEvent = (_c = restored.propsPerEvent) !== null && _c !== void 0 ? _c : {};
2361
+ this.permanentProperties.globalProps = (_c = restored.globalProps) !== null && _c !== void 0 ? _c : {};
2362
+ this.permanentProperties.propsPerEvent = (_d = restored.propsPerEvent) !== null && _d !== void 0 ? _d : {};
2232
2363
  }
2233
2364
  getLogger().debug("Restored persistent properties", this.permanentProperties);
2234
2365
  }
@@ -2245,6 +2376,7 @@ var UsermavenClientImpl = /** @class */ (function () {
2245
2376
  getLogger().debug('Default Configuration', this.config);
2246
2377
  // this.manageSession(this.config);
2247
2378
  this.manageAutoCapture(this.config);
2379
+ this.manageFormTracking(this.config);
2248
2380
  this.manageCrossDomainLinking({
2249
2381
  cross_domain_linking: this.crossDomainLinking,
2250
2382
  domains: this.domains,
@@ -2279,8 +2411,8 @@ var UsermavenClientImpl = /** @class */ (function () {
2279
2411
  enableAutoPageviews(this);
2280
2412
  }
2281
2413
  this.retryTimeout = [
2282
- (_d = options.min_send_timeout) !== null && _d !== void 0 ? _d : this.retryTimeout[0],
2283
- (_e = options.max_send_timeout) !== null && _e !== void 0 ? _e : this.retryTimeout[1],
2414
+ (_e = options.min_send_timeout) !== null && _e !== void 0 ? _e : this.retryTimeout[0],
2415
+ (_f = options.max_send_timeout) !== null && _f !== void 0 ? _f : this.retryTimeout[1],
2284
2416
  ];
2285
2417
  if (!!options.max_send_attempts) {
2286
2418
  this.maxSendAttempts = options.max_send_attempts;
@@ -2421,6 +2553,18 @@ var UsermavenClientImpl = /** @class */ (function () {
2421
2553
  autocapture.init(this, options);
2422
2554
  }
2423
2555
  };
2556
+ /**
2557
+ * Manage form tracking
2558
+ */
2559
+ UsermavenClientImpl.prototype.manageFormTracking = function (options) {
2560
+ if (!isWindowAvailable() || !this.formTracking || this.formTracking === "none") {
2561
+ return;
2562
+ }
2563
+ getLogger().debug('Form tracking enabled...');
2564
+ // all and true are the same
2565
+ var trackingType = this.formTracking === true ? 'all' : this.formTracking;
2566
+ FormTracking.getInstance(this, trackingType).track();
2567
+ };
2424
2568
  /**
2425
2569
  * Capture an event. This is the most important and
2426
2570
  * frequently used usermaven function.
@@ -2461,12 +2605,16 @@ var UsermavenClientImpl = /** @class */ (function () {
2461
2605
  if (event_name === '$scroll') {
2462
2606
  this.track(event_name, data.properties);
2463
2607
  }
2608
+ // send event if the event is $form
2609
+ if (event_name === '$form') {
2610
+ this.track(event_name, data.properties);
2611
+ }
2464
2612
  };
2465
2613
  UsermavenClientImpl.prototype._calculate_event_properties = function (event_name, event_properties) {
2466
2614
  var _a, _b;
2467
2615
  // set defaults
2468
2616
  var properties = event_properties || {};
2469
- if (event_name === '$snapshot' || event_name === '$scroll') {
2617
+ if (event_name === '$snapshot' || event_name === '$scroll' || event_name === '$form') {
2470
2618
  return properties;
2471
2619
  }
2472
2620
  if (_isArray(this.propertyBlacklist)) {
@@ -304,6 +304,11 @@ export type UsermavenOptions = {
304
304
  * @example "*.mydomain.com,*mydomain2.com"
305
305
  */
306
306
  domains?: string
307
+
308
+ /**
309
+ * Form tracking
310
+ */
311
+ form_tracking?: 'all' | 'tagged' | 'none' | boolean
307
312
  };
308
313
 
309
314
  /**
@@ -787,6 +787,14 @@ function _findClosestLink(element) {
787
787
  }
788
788
  return null;
789
789
  }
790
+ function _cleanObject(obj) {
791
+ for (var propName in obj) {
792
+ if (obj[propName] === '' || obj[propName] === null || obj[propName] === undefined || (typeof obj[propName] === 'object' && Object.keys(obj[propName]).length === 0)) {
793
+ delete obj[propName];
794
+ }
795
+ }
796
+ return obj;
797
+ }
790
798
 
791
799
  /*
792
800
  * Get the className of an element, accounting for edge cases where element.className is an object
@@ -1396,10 +1404,131 @@ var autocapture = {
1396
1404
  _bind_instance_methods(autocapture);
1397
1405
  _safewrap_instance_methods(autocapture);
1398
1406
 
1407
+ var FormTracking = /** @class */ (function () {
1408
+ function FormTracking(instance, trackingType) {
1409
+ if (trackingType === void 0) { trackingType = 'all'; }
1410
+ this.instance = instance;
1411
+ this.trackingType = trackingType;
1412
+ // Wait for the DOM to be ready
1413
+ if (document.readyState === 'loading') {
1414
+ document.addEventListener('DOMContentLoaded', this.track.bind(this));
1415
+ }
1416
+ else {
1417
+ this.track();
1418
+ }
1419
+ }
1420
+ /**
1421
+ * Track form submit
1422
+ * @description this function will be called on every form submit event to track form submit
1423
+ */
1424
+ FormTracking.prototype.track = function () {
1425
+ var _this = this;
1426
+ this.formElements = document.querySelectorAll('form');
1427
+ if (this.trackingType === 'tagged') {
1428
+ this.formElements = document.querySelectorAll('form[data-um-form]');
1429
+ }
1430
+ this.formElements.forEach(function (form) {
1431
+ form.addEventListener('submit', function (event) {
1432
+ var form = event.target;
1433
+ var props = _this._getFormDetails(form);
1434
+ _this.instance.capture('$form', _cleanObject(props));
1435
+ });
1436
+ });
1437
+ };
1438
+ FormTracking.getInstance = function (instance, trackingType) {
1439
+ if (trackingType === void 0) { trackingType = 'all'; }
1440
+ if (!FormTracking.instance) {
1441
+ FormTracking.instance = new FormTracking(instance, trackingType);
1442
+ }
1443
+ return FormTracking.instance;
1444
+ };
1445
+ FormTracking.prototype._getFormDetails = function (form) {
1446
+ var _this = this;
1447
+ var formDetails = {
1448
+ form_id: form.id,
1449
+ form_name: form.name || '',
1450
+ form_action: form.action,
1451
+ form_method: form.method,
1452
+ };
1453
+ var formFields = form.querySelectorAll('input, select, textarea');
1454
+ // ignore form fields with class um-no-capture
1455
+ var filteredFormFields = Array.from(formFields).filter(function (field) { return !field.classList.contains('um-no-capture'); });
1456
+ filteredFormFields.forEach(function (field, index) {
1457
+ var fieldProps = _this._getFieldProps(field, index);
1458
+ Object.assign(formDetails, fieldProps);
1459
+ });
1460
+ return formDetails;
1461
+ };
1462
+ FormTracking.prototype._getFieldProps = function (field, index) {
1463
+ var _a;
1464
+ var fieldDataAttributes = Object.keys(field.dataset).length ? JSON.stringify(field.dataset) : undefined;
1465
+ var safeValue = this.getSafeText(field);
1466
+ return _a = {},
1467
+ _a["field_" + (index + 1) + "_tag"] = field.tagName.toLowerCase(),
1468
+ _a["field_" + (index + 1) + "_type"] = field instanceof HTMLInputElement ? field.type : undefined,
1469
+ _a["field_" + (index + 1) + "_data_attributes"] = fieldDataAttributes,
1470
+ _a["field_" + (index + 1) + "_id"] = field.id,
1471
+ _a["field_" + (index + 1) + "_value"] = safeValue,
1472
+ _a["field_" + (index + 1) + "_class"] = field.className,
1473
+ _a["field_" + (index + 1) + "_name"] = field.name,
1474
+ _a;
1475
+ };
1476
+ FormTracking.prototype.getSafeText = function (element) {
1477
+ var safeText = '';
1478
+ if ('value' in element && element.type !== "password") {
1479
+ safeText = element.value;
1480
+ }
1481
+ else if (element.hasChildNodes()) {
1482
+ var textNodes = Array.from(element.childNodes).filter(function (node) { return node.nodeType === Node.TEXT_NODE; });
1483
+ safeText = textNodes.map(function (node) { return node.textContent; }).join('');
1484
+ }
1485
+ else {
1486
+ safeText = element.textContent || '';
1487
+ }
1488
+ return this._scrubPotentiallySensitiveValues(safeText);
1489
+ };
1490
+ FormTracking.prototype._scrubPotentiallySensitiveValues = function (text) {
1491
+ if (!this._shouldCaptureValue(text)) {
1492
+ return '<redacted>';
1493
+ }
1494
+ return text;
1495
+ };
1496
+ FormTracking.prototype._shouldCaptureValue = function (value) {
1497
+ if (this._isNullish(value)) {
1498
+ return false;
1499
+ }
1500
+ if (this._isString(value)) {
1501
+ value = this._trim(value);
1502
+ // check to see if input value looks like a credit card number
1503
+ // see: https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9781449327453/ch04s20.html
1504
+ var ccRegex = /^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/;
1505
+ if (ccRegex.test((value || '').replace(/[- ]/g, ''))) {
1506
+ return false;
1507
+ }
1508
+ // check to see if input value looks like a social security number
1509
+ var ssnRegex = /(^\d{3}-?\d{2}-?\d{4}$)/;
1510
+ if (ssnRegex.test(value)) {
1511
+ return false;
1512
+ }
1513
+ }
1514
+ return true;
1515
+ };
1516
+ FormTracking.prototype._isNullish = function (value) {
1517
+ return value === null || value === undefined;
1518
+ };
1519
+ FormTracking.prototype._isString = function (value) {
1520
+ return typeof value === 'string' || value instanceof String;
1521
+ };
1522
+ FormTracking.prototype._trim = function (value) {
1523
+ return value.trim().replace(/^\s+|\s+$/g, '');
1524
+ };
1525
+ return FormTracking;
1526
+ }());
1527
+
1399
1528
  var VERSION_INFO = {
1400
1529
  env: 'production',
1401
- date: '2024-02-28T06:06:37.148Z',
1402
- version: '1.3.3'
1530
+ date: '2024-05-21T10:41:05.452Z',
1531
+ version: '1.4.0'
1403
1532
  };
1404
1533
  var USERMAVEN_VERSION = VERSION_INFO.version + "/" + VERSION_INFO.env + "@" + VERSION_INFO.date;
1405
1534
  var MAX_AGE_TEN_YEARS = 31622400 * 10;
@@ -1819,6 +1948,7 @@ var UsermavenClientImpl = /** @class */ (function () {
1819
1948
  this.randomizeUrl = false;
1820
1949
  this.namespace = "usermaven";
1821
1950
  this.crossDomainLinking = true;
1951
+ this.formTracking = false;
1822
1952
  this.domains = [];
1823
1953
  this.apiKey = "";
1824
1954
  this.initialized = false;
@@ -2137,7 +2267,7 @@ var UsermavenClientImpl = /** @class */ (function () {
2137
2267
  };
2138
2268
  UsermavenClientImpl.prototype.init = function (options) {
2139
2269
  var _this = this;
2140
- var _a, _b, _c, _d, _e;
2270
+ var _a, _b, _c, _d, _e, _f;
2141
2271
  if (isWindowAvailable() && !options.force_use_fetch) {
2142
2272
  if (options.fetch) {
2143
2273
  getLogger().warn("Custom fetch implementation is provided to Usermaven. However, it will be ignored since Usermaven runs in browser");
@@ -2197,6 +2327,7 @@ var UsermavenClientImpl = /** @class */ (function () {
2197
2327
  this.cookieDomain = options.cookie_domain || getCookieDomain();
2198
2328
  this.namespace = options.namespace || "usermaven";
2199
2329
  this.crossDomainLinking = (_a = options.cross_domain_linking) !== null && _a !== void 0 ? _a : true;
2330
+ this.formTracking = (_b = options.form_tracking) !== null && _b !== void 0 ? _b : false;
2200
2331
  this.domains = options.domains ? (options.domains).split(',').map(function (domain) { return domain.trim(); }) : [];
2201
2332
  this.trackingHost = getHostWithProtocol(options["tracking_host"] || "t.usermaven.com");
2202
2333
  this.randomizeUrl = options.randomize_url || false;
@@ -2223,8 +2354,8 @@ var UsermavenClientImpl = /** @class */ (function () {
2223
2354
  var restored = this.propsPersistance.restore();
2224
2355
  if (restored) {
2225
2356
  this.permanentProperties = restored;
2226
- this.permanentProperties.globalProps = (_b = restored.globalProps) !== null && _b !== void 0 ? _b : {};
2227
- this.permanentProperties.propsPerEvent = (_c = restored.propsPerEvent) !== null && _c !== void 0 ? _c : {};
2357
+ this.permanentProperties.globalProps = (_c = restored.globalProps) !== null && _c !== void 0 ? _c : {};
2358
+ this.permanentProperties.propsPerEvent = (_d = restored.propsPerEvent) !== null && _d !== void 0 ? _d : {};
2228
2359
  }
2229
2360
  getLogger().debug("Restored persistent properties", this.permanentProperties);
2230
2361
  }
@@ -2241,6 +2372,7 @@ var UsermavenClientImpl = /** @class */ (function () {
2241
2372
  getLogger().debug('Default Configuration', this.config);
2242
2373
  // this.manageSession(this.config);
2243
2374
  this.manageAutoCapture(this.config);
2375
+ this.manageFormTracking(this.config);
2244
2376
  this.manageCrossDomainLinking({
2245
2377
  cross_domain_linking: this.crossDomainLinking,
2246
2378
  domains: this.domains,
@@ -2275,8 +2407,8 @@ var UsermavenClientImpl = /** @class */ (function () {
2275
2407
  enableAutoPageviews(this);
2276
2408
  }
2277
2409
  this.retryTimeout = [
2278
- (_d = options.min_send_timeout) !== null && _d !== void 0 ? _d : this.retryTimeout[0],
2279
- (_e = options.max_send_timeout) !== null && _e !== void 0 ? _e : this.retryTimeout[1],
2410
+ (_e = options.min_send_timeout) !== null && _e !== void 0 ? _e : this.retryTimeout[0],
2411
+ (_f = options.max_send_timeout) !== null && _f !== void 0 ? _f : this.retryTimeout[1],
2280
2412
  ];
2281
2413
  if (!!options.max_send_attempts) {
2282
2414
  this.maxSendAttempts = options.max_send_attempts;
@@ -2417,6 +2549,18 @@ var UsermavenClientImpl = /** @class */ (function () {
2417
2549
  autocapture.init(this, options);
2418
2550
  }
2419
2551
  };
2552
+ /**
2553
+ * Manage form tracking
2554
+ */
2555
+ UsermavenClientImpl.prototype.manageFormTracking = function (options) {
2556
+ if (!isWindowAvailable() || !this.formTracking || this.formTracking === "none") {
2557
+ return;
2558
+ }
2559
+ getLogger().debug('Form tracking enabled...');
2560
+ // all and true are the same
2561
+ var trackingType = this.formTracking === true ? 'all' : this.formTracking;
2562
+ FormTracking.getInstance(this, trackingType).track();
2563
+ };
2420
2564
  /**
2421
2565
  * Capture an event. This is the most important and
2422
2566
  * frequently used usermaven function.
@@ -2457,12 +2601,16 @@ var UsermavenClientImpl = /** @class */ (function () {
2457
2601
  if (event_name === '$scroll') {
2458
2602
  this.track(event_name, data.properties);
2459
2603
  }
2604
+ // send event if the event is $form
2605
+ if (event_name === '$form') {
2606
+ this.track(event_name, data.properties);
2607
+ }
2460
2608
  };
2461
2609
  UsermavenClientImpl.prototype._calculate_event_properties = function (event_name, event_properties) {
2462
2610
  var _a, _b;
2463
2611
  // set defaults
2464
2612
  var properties = event_properties || {};
2465
- if (event_name === '$snapshot' || event_name === '$scroll') {
2613
+ if (event_name === '$snapshot' || event_name === '$scroll' || event_name === '$form') {
2466
2614
  return properties;
2467
2615
  }
2468
2616
  if (_isArray(this.propertyBlacklist)) {
package/dist/web/lib.js CHANGED
@@ -1 +1 @@
1
- !function(){"use strict";var e=function(){return e=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},e.apply(this,arguments)};function t(e,t,n,i){return new(n||(n=Promise))((function(r,o){function s(e){try{c(i.next(e))}catch(e){o(e)}}function a(e){try{c(i.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((i=i.apply(e,t||[])).next())}))}function n(e,t){var n,i,r,o,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(s=0)),s;)try{if(n=1,i&&(r=2&a[0]?i.return:a[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,a[1])).done)return r;switch(i=0,r&&(a=[2&a[0],r.value]),a[0]){case 0:case 1:r=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,i=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(r=s.trys,(r=r.length>0&&r[r.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]<r[3])){s.label=a[1];break}if(6===a[0]&&s.label<r[1]){s.label=r[1],r=a;break}if(r&&s.label<r[2]){s.label=r[2],s.ops.push(a);break}r[2]&&s.ops.pop(),s.trys.pop();continue}a=t.call(e,s)}catch(e){a=[6,e],i=0}finally{n=r=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}function i(e,t,n){if(n||2===arguments.length)for(var i,r=0,o=t.length;r<o;r++)!i&&r in t||(i||(i=Array.prototype.slice.call(t,0,r)),i[r]=t[r]);return e.concat(i||Array.prototype.slice.call(t))}function r(e=void 0){const t=!!globalThis.window&&!!globalThis.window.document&&!!globalThis.window.location;return!t&&e&&c().warn(e),t}function o(e=void 0){if(!r())throw new Error(e||"window' is not available. Seems like this code runs outside browser environment. It shouldn't happen");return window}"function"==typeof SuppressedError&&SuppressedError;var s={DEBUG:{name:"DEBUG",severity:10},INFO:{name:"INFO",severity:100},WARN:{name:"WARN",severity:1e3},ERROR:{name:"ERROR",severity:1e4},NONE:{name:"NONE",severity:1e4}},a=null;function c(){return a||(a=u())}function u(e){var t=r()&&window.__eventNLogLevel,n=s.WARN;if(t){var o=s[t.toUpperCase()];o&&o>0&&(n=o)}else e&&(n=e);var a={minLogLevel:n};return Object.values(s).forEach((function(e){var t=e.name,r=e.severity;a[t.toLowerCase()]=function(){for(var e=[],o=0;o<arguments.length;o++)e[o]=arguments[o];if(r>=n.severity&&e.length>0){var s=e[0],a=e.splice(1),c="[J-"+t+"] "+s;"DEBUG"===t||"INFO"===t?console.log.apply(console,i([c],a,!1)):"WARN"===t?console.warn.apply(console,i([c],a,!1)):console.error.apply(console,i([c],a,!1))}}})),function(e,t){if(r()){var n=window;n.__usermavenDebug||(n.__usermavenDebug={}),n.__usermavenDebug[e]=t}}("logger",a),a}function l(e,t,n){void 0===n&&(n={});try{var i=n.maxAge,r=n.domain,o=n.path,s=n.expires,a=n.httpOnly,u=n.secure,l=n.sameSite,p=e+"="+encodeURIComponent(t);if(r&&(p+="; domain="+r),p+=o?"; path="+o:"; path=/",s&&(p+="; expires="+s.toUTCString()),i&&(p+="; max-age="+i),a&&(p+="; httponly"),u&&(p+="; secure"),l)switch("string"==typeof l?l.toLowerCase():l){case!0:p+="; SameSite=Strict";break;case"lax":p+="; SameSite=Lax";break;case"strict":p+="; SameSite=Strict";break;case"none":p+="; SameSite=None"}else u&&(p+="; SameSite=None");return p}catch(e){return c().error("serializeCookie",e),""}}var p,d=function(){if(r())return function(e){var t=e.split(".");if(4===t.length&&t.every((function(e){return!isNaN(e)})))return e;var n=function(e){var t=e.match(/[a-z0-9][a-z0-9-]+\.[a-z.]{2,6}$/i);return t?t[0]:""}(e);return n||(n=function(e){var t=function(e){return(e.indexOf("//")>-1?e.split("/")[2]:e.split("/")[0]).split(":")[0].split("?")[0]}(e),n=t.split("."),i=n.length;return i>2&&(2==n[i-1].length?(t=n[i-2]+"."+n[i-1],2==n[i-2].length&&(t=n[i-3]+"."+t)):t=n[i-2]+"."+n[i-1]),t}(e)),n}(window.location.hostname)};function h(e){if(!e)return{};for(var t={},n=e.split(";"),i=0;i<n.length;i++){var r=n[i],o=r.indexOf("=");o>0&&(t[r.substr(i>0?1:0,i>0?o-1:o)]=r.substr(o+1))}return t}function f(e,t){return Array.from(e.attributes).forEach((function(e){t.setAttribute(e.nodeName,e.nodeValue)}))}function m(e,t){e.innerHTML=t;var n,i=e.getElementsByTagName("script");for(n=i.length-1;n>=0;n--){var r=i[n],o=document.createElement("script");f(r,o),r.innerHTML&&(o.innerHTML=r.innerHTML),o.setAttribute("data-usermaven-tag-id",e.id),document.getElementsByTagName("head")[0].appendChild(o),i[n].parentNode.removeChild(i[n])}}var g=function(e){if(!e)return null;try{for(var t=e+"=",n=o().document.cookie.split(";"),i=0;i<n.length;i++){for(var r=n[i];" "==r.charAt(0);)r=r.substring(1,r.length);if(0===r.indexOf(t))return decodeURIComponent(r.substring(t.length,r.length))}}catch(e){c().error("getCookies",e)}return null},v=function(e,t,n){void 0===n&&(n={}),o().document.cookie=l(e,t,n)},y=function(e,t){void 0===t&&(t="/"),document.cookie=e+"= ; SameSite=Strict; expires = Thu, 01 Jan 1970 00:00:00 GMT"+(t?"; path = "+t:"")},_=function(){return Math.random().toString(36).substring(2,12)},b=function(){return Math.random().toString(36).substring(2,7)},k={utm_source:"source",utm_medium:"medium",utm_campaign:"campaign",utm_term:"term",utm_content:"content"},w={gclid:!0,fbclid:!0,dclid:!0};var P=function(){function e(){this.queue=[]}return e.prototype.flush=function(){var e=this.queue;return this.queue=[],e},e.prototype.push=function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];(e=this.queue).push.apply(e,t)},e}(),S=function(){function e(e){this.key=e}return e.prototype.flush=function(){var e=this.get();return e.length&&this.set([]),e},e.prototype.push=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=this.get();n.push.apply(n,e),this.set(n)},e.prototype.set=function(e){localStorage.setItem(this.key,JSON.stringify(e))},e.prototype.get=function(){var e=localStorage.getItem(this.key);return null!==e&&""!==e?JSON.parse(e):[]},e}(),x=Object.prototype,N=x.toString,A=x.hasOwnProperty,E=Array.prototype.forEach,C=Array.isArray,O={},I=C||function(e){return"[object Array]"===N.call(e)};function D(e,t,n){if(Array.isArray(e))if(E&&e.forEach===E)e.forEach(t,n);else if("length"in e&&e.length===+e.length)for(var i=0,r=e.length;i<r;i++)if(i in e&&t.call(n,e[i],i)===O)return}var T=function(e){return e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};function H(e,t,n){if(null!=e)if(E&&Array.isArray(e)&&e.forEach===E)e.forEach(t,n);else if("length"in e&&e.length===+e.length){for(var i=0,r=e.length;i<r;i++)if(i in e&&t.call(n,e[i],i)===O)return}else for(var o in e)if(A.call(e,o)&&t.call(n,e[o],o)===O)return}var L=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return D(t,(function(t){for(var n in t)void 0!==t[n]&&(e[n]=t[n])})),e};function j(e,t){return-1!==e.indexOf(t)}var $=function(e){try{return/^\s*\bfunction\b/.test(e)}catch(e){return!1}},F=function(e){return void 0===e},U=function(){function e(t){return t&&(t.preventDefault=e.preventDefault,t.stopPropagation=e.stopPropagation),t}return e.preventDefault=function(){this.returnValue=!1},e.stopPropagation=function(){this.cancelBubble=!0},function(t,n,i,r,o){if(t)if(t.addEventListener&&!r)t.addEventListener(n,i,!!o);else{var s="on"+n,a=t[s];t[s]=function(t,n,i){return function(r){if(r=r||e(window.event)){var o,s=!0;$(i)&&(o=i(r));var a=n.call(t,r);return!1!==o&&!1!==a||(s=!1),s}}}(t,i,a)}else c().error("No valid element provided to register_event")}}(),z=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];try{return e.apply(this,t)}catch(e){c().error("Implementation error. Please turn on debug and contact support@usermaven.com.",e)}}},M="undefined"!=typeof Symbol?Symbol("__deepCircularCopyInProgress__"):"__deepCircularCopyInProgress__";function R(e,t,n){return e!==Object(e)?t?t(e,n):e:e[M]?void 0:(e[M]=!0,I(e)?(i=[],D(e,(function(e){i.push(R(e,t))}))):(i={},H(e,(function(e,n){n!==M&&(i[n]=R(e,t,n))}))),delete e[M],i);var i}var J=["$performance_raw"];function q(e,t){return R(e,(function(e,n){return n&&J.indexOf(n)>-1?e:"string"==typeof e&&null!==t?e.slice(0,t):e}))}function B(e){switch(typeof e.className){case"string":return e.className;case"object":return("baseVal"in e.className?e.className.baseVal:null)||e.getAttribute("class")||"";default:return""}}function W(e){var t="";return Z(e)&&!X(e)&&e.childNodes&&e.childNodes.length&&H(e.childNodes,(function(e){K(e)&&e.textContent&&(t+=T(e.textContent).split(/(\s+)/).filter(ee).join("").replace(/[\r\n]/g," ").replace(/[ ]+/g," ").substring(0,255))})),T(t)}function V(e){return!!e&&1===e.nodeType}function G(e,t){return!!e&&!!e.tagName&&e.tagName.toLowerCase()===t.toLowerCase()}function K(e){return!!e&&3===e.nodeType}function Q(e){return!!e&&11===e.nodeType}var Y=["a","button","form","input","select","textarea","label"];function Z(e){for(var t=e;t.parentNode&&!G(t,"body");t=t.parentNode){var n=B(t).split(" ");if(j(n,"ph-sensitive")||j(n,"ph-no-capture"))return!1}if(j(B(e).split(" "),"ph-include"))return!0;var i=e.type||"";if("string"==typeof i)switch(i.toLowerCase()){case"hidden":case"password":return!1}var r=e.name||e.id||"";if("string"==typeof r){if(/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(r.replace(/[^a-zA-Z0-9]/g,"")))return!1}return!0}function X(e){return!!(G(e,"input")&&!["button","checkbox","submit","reset"].includes(e.type)||G(e,"select")||G(e,"textarea")||"true"===e.getAttribute("contenteditable"))}function ee(e){if(null===e||F(e))return!1;if("string"==typeof e){e=T(e);if(/^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/.test((e||"").replace(/[- ]/g,"")))return!1;if(/(^\d{3}-?\d{2}-?\d{4}$)/.test(e))return!1}return!0}var te=function(){function e(e,t){void 0===t&&(t=!1),this.clicks=[],this.instance=e,this.enabled=t}return e.prototype.click=function(e,t,n){if(this.enabled){var i=this.clicks[this.clicks.length-1];i&&Math.abs(e-i.x)+Math.abs(t-i.y)<30&&n-i.timestamp<1e3?(this.clicks.push({x:e,y:t,timestamp:n}),3===this.clicks.length&&this.instance.capture("$rageclick")):this.clicks=[{x:e,y:t,timestamp:n}]}},e}(),ne=function(){function e(e){this.instance=e,this.lastScrollDepth=0,this.canSend=!0,this.documentElement=document.documentElement}return e.prototype.track=function(){var e=this.getScrollDepth();e>this.lastScrollDepth&&(this.lastScrollDepth=e,this.canSend=!0)},e.prototype.send=function(e){if(void 0===e&&(e="$scroll"),this.canSend){var t={percent:this.lastScrollDepth,window_height:this.getWindowHeight(),document_height:this.getDocumentHeight(),scroll_distance:this.getScrollDistance()};this.instance.capture(e,t),this.canSend=!1}},e.prototype.getScrollDepth=function(){try{var e=this.getWindowHeight(),t=this.getDocumentHeight(),n=this.getScrollDistance(),i=t-e;return Math.min(100,Math.floor(n/i*100))}catch(e){return 0}},e.prototype.getWindowHeight=function(){try{return window.innerHeight||this.documentElement.clientHeight||document.body.clientHeight||0}catch(e){return 0}},e.prototype.getDocumentHeight=function(){try{return Math.max(document.body.scrollHeight||0,this.documentElement.scrollHeight||0,document.body.offsetHeight||0,this.documentElement.offsetHeight||0,document.body.clientHeight||0,this.documentElement.clientHeight||0)}catch(e){return 0}},e.prototype.getScrollDistance=function(){try{return window.scrollY||window.pageYOffset||document.body.scrollTop||this.documentElement.scrollTop||0}catch(e){return 0}},e}(),ie={_initializedTokens:[],_previousElementSibling:function(e){if(e.previousElementSibling)return e.previousElementSibling;var t=e;do{t=t.previousSibling}while(t&&!V(t));return t},_getPropertiesFromElement:function(e,t,n){var i=e.tagName.toLowerCase(),r={tag_name:i};Y.indexOf(i)>-1&&!n&&(r.$el_text=W(e));var o=B(e);o.length>0&&(r.classes=o.split(" ").filter((function(e){return""!==e}))),H(e.attributes,(function(n){var i;X(e)&&-1===["name","id","class"].indexOf(n.name)||!t&&ee(n.value)&&("string"!=typeof(i=n.name)||"_ngcontent"!==i.substring(0,10)&&"_nghost"!==i.substring(0,7))&&(r["attr__"+n.name]=n.value)}));for(var s=1,a=1,c=e;c=this._previousElementSibling(c);)s++,c.tagName===e.tagName&&a++;return r.nth_child=s,r.nth_of_type=a,r},_getDefaultProperties:function(e){return{$event_type:e,$ce_version:1}},_extractCustomPropertyValue:function(e){var t=[];return H(document.querySelectorAll(e.css_selector),(function(e){var n;["input","select"].indexOf(e.tagName.toLowerCase())>-1?n=e.value:e.textContent&&(n=e.textContent),ee(n)&&t.push(n)})),t.join(", ")},_getCustomProperties:function(e){var t=this,n={};return H(this._customProperties,(function(i){H(i.event_selectors,(function(r){H(document.querySelectorAll(r),(function(r){j(e,r)&&Z(r)&&(n[i.name]=t._extractCustomPropertyValue(i))}))}))})),n},_getEventTarget:function(e){var t;return void 0===e.target?e.srcElement||null:(null===(t=e.target)||void 0===t?void 0:t.shadowRoot)?e.composedPath()[0]||null:e.target||null},_captureEvent:function(e,t,n){var i,r=this,o=this._getEventTarget(e);if(K(o)&&(o=o.parentNode||null),"scroll"===e.type)return this.scrollDepth.track(),!0;if("visibilitychange"===e.type&&"hidden"===document.visibilityState||"popstate"===e.type)return this.scrollDepth.send(),!0;if("click"===e.type&&e instanceof MouseEvent&&(null===(i=this.rageclicks)||void 0===i||i.click(e.clientX,e.clientY,(new Date).getTime())),o&&function(e,t){if(!e||G(e,"html")||!V(e))return!1;if(e.classList&&e.classList.contains("um-no-capture"))return!1;for(var n=!1,i=[e],r=!0,o=e;o.parentNode&&!G(o,"body");)if(Q(o.parentNode))i.push(o.parentNode.host),o=o.parentNode.host;else{if(!(r=o.parentNode||!1))break;if(Y.indexOf(r.tagName.toLowerCase())>-1)n=!0;else{var s=window.getComputedStyle(r);s&&"pointer"===s.getPropertyValue("cursor")&&(n=!0)}i.push(r),o=r}var a=window.getComputedStyle(e);if(a&&"pointer"===a.getPropertyValue("cursor")&&"click"===t.type)return!0;var c=e.tagName.toLowerCase();switch(c){case"html":return!1;case"form":return"submit"===t.type;case"input":case"select":case"textarea":return"change"===t.type||"click"===t.type;default:return n?"click"===t.type:"click"===t.type&&(Y.indexOf(c)>-1||"true"===e.getAttribute("contenteditable"))}}(o,e)){for(var s=[o],a=o;a.parentNode&&!G(a,"body");)Q(a.parentNode)?(s.push(a.parentNode.host),a=a.parentNode.host):(s.push(a.parentNode),a=a.parentNode);var c,u=[],l=!1;if(H(s,(function(e){var t=Z(e);"a"===e.tagName.toLowerCase()&&(c=e.getAttribute("href"),c=t&&ee(c)&&c),j(B(e).split(" "),"ph-no-capture")&&(l=!0),u.push(r._getPropertiesFromElement(e,null==n?void 0:n.mask_all_element_attributes,null==n?void 0:n.mask_all_text))})),(null==n?void 0:n.mask_all_text)||(u[0].$el_text=W(o)),c&&(u[0].attr__href=c),l)return!1;var p=L(this._getDefaultProperties(e.type),{$elements:u},this._getCustomProperties(s));return t.capture("$autocapture",p),!0}},_navigate:function(e){window.location.href=e},_addDomEventHandlers:function(e,t){var n=this,i=function(i){i=i||window.event,n._captureEvent(i,e,t)};U(document,"submit",i,!1,!0),U(document,"change",i,!1,!0),U(document,"click",i,!1,!0),U(document,"visibilitychange",i,!1,!0),U(document,"scroll",i,!1,!0),U(window,"popstate",i,!1,!0)},_customProperties:[],rageclicks:null,scrollDepth:null,opts:{},init:function(e,t){var n=this;if(this.rageclicks=new te(e),this.scrollDepth=new ne(e),this.opts=t,!document||!document.body)return console.debug("document not ready yet, trying again in 500 milliseconds..."),void setTimeout((function(){n.readyAutocapture(e,t)}),500);this.readyAutocapture(e,t)},readyAutocapture:function(e,t){this._addDomEventHandlers(e,t)},enabledForProject:function(e,t,n){if(!e)return!0;t=F(t)?10:t,n=F(n)?10:n;for(var i=0,r=0;r<e.length;r++)i+=e.charCodeAt(r);return i%t<n},isBrowserSupported:function(){return $(document.querySelectorAll)}};!function(e){for(var t in e)"function"==typeof e[t]&&(e[t]=e[t].bind(e))}(ie),function(e){for(var t in e)"function"==typeof e[t]&&(e[t]=z(e[t]))}(ie);var re="production",oe="1.3.3"+"/"+re+"@"+"2024-02-28T06:06:34.043Z",se=316224e3,ae=function(e,t){c().debug("Sending beacon",t);var n=new Blob([t],{type:"text/plain"});return navigator.sendBeacon(e,n),Promise.resolve()};var ce=function(e,t){return console.debug("Jitsu client tried to send payload to "+e,function(e){if("string"==typeof e)try{return JSON.stringify(JSON.parse(e),null,2)}catch(t){return e}}(t)),Promise.resolve()};function ue(e,t){void 0===t&&(t=void 0),""!=(t=null!=t?t:window.location.pathname)&&"/"!=t&&(y(e,t),ue(e,t.slice(0,t.lastIndexOf("/"))))}var le=function(){function e(e,t){this.cookieDomain=e,this.cookieName=t}return e.prototype.save=function(e){v(this.cookieName,JSON.stringify(e),{domain:this.cookieDomain,secure:"http:"!==document.location.protocol,maxAge:se})},e.prototype.restore=function(){ue(this.cookieName);var e=g(this.cookieName);if(e)try{var t=JSON.parse(decodeURIComponent(e));return"object"!=typeof t?void c().warn("Can't restore value of "+this.cookieName+"@"+this.cookieDomain+", expected to be object, but found "+("object"!=typeof t)+": "+t+". Ignoring"):t}catch(t){return void c().error("Failed to decode JSON from "+e,t)}},e.prototype.delete=function(){y(this.cookieName)},e}(),pe=function(){function e(){}return e.prototype.save=function(e){},e.prototype.restore=function(){},e.prototype.delete=function(){},e}();var de={getSourceIp:function(){},describeClient:function(){return{referer:document.referrer,url:window.location.href,page_title:document.title,doc_path:document.location.pathname,doc_host:document.location.hostname,doc_search:window.location.search,screen_resolution:screen.width+"x"+screen.height,vp_size:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0)+"x"+Math.max(document.documentElement.clientHeight||0,window.innerHeight||0),user_agent:navigator.userAgent,user_language:navigator.language,doc_encoding:document.characterSet}},getAnonymousId:function(e){var t=e.name,n=e.domain,i=e.crossDomainLinking,r=void 0===i||i;if(ue(t),r){var o=new URLSearchParams(window.location.search).get("_um"),s=window.location.hash.substring(1).split("~"),a=s.length>1?s[1]:void 0,u=o||a;if(u){c().debug("Existing user id from other domain",u);var l=g(t);return l&&l===u||v(t,u,{domain:n,secure:"http:"!==document.location.protocol,maxAge:se}),u}}var p=g(t);if(p)return c().debug("Existing user id",p),p;var d=_();return c().debug("New user id",d),v(t,d,{domain:n,secure:"http:"!==document.location.protocol,maxAge:se}),d}};var he={getSourceIp:function(){},describeClient:function(){return{}},getAnonymousId:function(){return""}},fe=function(){return de},me=function(){return he},ge=function(e,t,n,i){void 0===i&&(i=function(e,t){});var r=new window.XMLHttpRequest;return new Promise((function(o,s){r.onerror=function(n){c().error("Failed to send payload to "+e+": "+((null==n?void 0:n.message)||"unknown error"),t,n),i(-1,{}),s(new Error("Failed to send JSON. See console logs"))},r.onload=function(){200!==r.status?(i(r.status,{}),c().warn("Failed to send data to "+e+" (#"+r.status+" - "+r.statusText+")",t),s(new Error("Failed to send JSON. Error code: "+r.status+". See logs for details"))):i(r.status,r.responseText),o()},r.open("POST",e),r.setRequestHeader("Content-Type","application/json"),Object.entries(n||{}).forEach((function(e){var t=e[0],n=e[1];return r.setRequestHeader(t,n)})),r.send(t),c().debug("sending json",t)}))},ve=function(){function i(){this.userProperties={},this.groupProperties={},this.permanentProperties={globalProps:{},propsPerEvent:{}},this.cookieDomain="",this.trackingHost="",this.idCookieName="",this.randomizeUrl=!1,this.namespace="usermaven",this.crossDomainLinking=!0,this.domains=[],this.apiKey="",this.initialized=!1,this._3pCookies={},this.cookiePolicy="keep",this.ipPolicy="keep",this.beaconApi=!1,this.transport=ge,this.customHeaders=function(){return{}},this.queue=new P,this.maxSendAttempts=4,this.retryTimeout=[500,1e12],this.flushing=!1,this.attempt=1,this.propertyBlacklist=[],this.__autocapture_enabled=!1,this.__auto_pageview_enabled=!1,this.trackingHostFallback="https://events.usermaven.com"}return i.prototype.get_config=function(e){return this.config?this.config[e]:null},i.prototype.id=function(t,n){return this.userProperties=e(e({},this.userProperties),t),c().debug("Usermaven user identified",t),this.userIdPersistence?this.userIdPersistence.save(t):c().warn("Id() is called before initialization"),n?Promise.resolve():this.track("user_identify",{})},i.prototype.group=function(t,n){return this.groupProperties=e(e({},this.groupProperties),t),c().debug("Usermaven group identified",t),this.userIdPersistence?this.userIdPersistence.save({company:t}):c().warn("Group() is called before initialization"),n?Promise.resolve():this.track("group",{})},i.prototype.reset=function(e){if(this.userIdPersistence&&this.userIdPersistence.delete(),this.propsPersistance&&this.propsPersistance.delete(),e){var t=g(this.idCookieName);t&&(c().debug("Removing id cookie",t),v(this.idCookieName,"",{domain:this.cookieDomain,expires:new Date(0)}))}return Promise.resolve()},i.prototype.rawTrack=function(e){return this.sendJson(e)},i.prototype.makeEvent=function(t,n,i){var o,s=i.env,a=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(n[i[r]]=e[i[r]])}return n}(i,["env"]);s||(s=r()?fe():me()),this.restoreId();var c=this.getCtx(s),u=e(e({},this.permanentProperties.globalProps),null!==(o=this.permanentProperties.propsPerEvent[t])&&void 0!==o?o:{}),l=e({api_key:this.apiKey,src:n,event_type:t},a),p=s.getSourceIp();return p&&(l.source_ip=p),this.compatMode?e(e(e({},u),{eventn_ctx:c}),l):e(e(e({},u),c),l)},i.prototype._send3p=function(e,t,n){var i="3rdparty";n&&""!==n&&(i=n);var r=this.makeEvent(i,e,{src_payload:t});return this.sendJson(r)},i.prototype.sendJson=function(e){return t(this,void 0,Promise,(function(){return n(this,(function(t){switch(t.label){case 0:return n="false","undefined"!=typeof window&&window.localStorage&&(n=localStorage.getItem("um_exclusion")),null!=n&&"false"!==n?[3,3]:this.maxSendAttempts>1?(this.queue.push([e,0]),this.scheduleFlush(0),[3,3]):[3,1];case 1:return[4,this.doSendJson(e)];case 2:t.sent(),t.label=3;case 3:return[2]}var n}))}))},i.prototype.doSendJson=function(e){var t=this,n="keep"!==this.cookiePolicy?"&cookie_policy="+this.cookiePolicy:"",i="keep"!==this.ipPolicy?"&ip_policy="+this.ipPolicy:"",o=r()?"/api/v1/event":"/api/v1/s2s/event",s=""+this.trackingHost+o+"?token="+this.apiKey+n+i;this.randomizeUrl&&(s=this.trackingHost+"/api."+b()+"?p_"+b()+"="+this.apiKey+n+i);var a=JSON.stringify(e);return c().debug("Sending payload to "+s,e.length),this.transport(s,a,this.customHeaders(),(function(e,n){return t.postHandle(e,n)}))},i.prototype.scheduleFlush=function(e){var t=this;if(!this.flushing){if(this.flushing=!0,void 0===e){var n=Math.random()+1,i=Math.pow(2,this.attempt++);e=Math.min(this.retryTimeout[0]*n*i,this.retryTimeout[1])}c().debug("Scheduling event queue flush in "+e+" ms."),setTimeout((function(){return t.flush()}),e)}},i.prototype.flush=function(){return t(this,void 0,Promise,(function(){var e,t,i=this;return n(this,(function(n){switch(n.label){case 0:if(r()&&!window.navigator.onLine&&(this.flushing=!1,this.scheduleFlush()),e=this.queue.flush(),this.flushing=!1,0===e.length)return[2];n.label=1;case 1:return n.trys.push([1,3,,4]),[4,this.doSendJson(e.map((function(e){return e[0]})))];case 2:return n.sent(),this.attempt=1,c().debug("Successfully flushed "+e.length+" events from queue"),[3,4];case 3:return n.sent(),this.trackingHost!==this.trackingHostFallback&&(c().debug("Using fallback tracking host "+this.trackingHostFallback+" instead of "+this.trackingHost+" on "+re),this.trackingHost=this.trackingHostFallback),(e=e.map((function(e){return[e[0],e[1]+1]})).filter((function(e){return!(e[1]>=i.maxSendAttempts)||(c().error("Dropping queued event after "+e[1]+" attempts since max send attempts "+i.maxSendAttempts+" reached. See logs for details"),!1)}))).length>0?((t=this.queue).push.apply(t,e),this.scheduleFlush()):this.attempt=1,[3,4];case 4:return[2]}}))}))},i.prototype.postHandle=function(e,t){if("strict"===this.cookiePolicy||"comply"===this.cookiePolicy){if(200===e){var n=t;if("string"==typeof t&&(n=JSON.parse(t)),!n.delete_cookie)return}this.userIdPersistence.delete(),this.propsPersistance.delete(),y(this.idCookieName)}if(200===e){n=t;if("string"==typeof t&&t.length>0){var i=(n=JSON.parse(t)).jitsu_sdk_extras;if(i&&i.length>0)if(r())for(var o=0,s=i;o<s.length;o++){var a=s[o],u=a.type,l=a.id,p=a.value;if("tag"===u){var d=document.createElement("div");d.id=l,m(d,p),d.childElementCount>0&&document.body.appendChild(d)}}else c().error("Tags destination supported only in browser environment")}}},i.prototype.getCtx=function(t){var n=new Date,i=t.describeClient()||{},r=e({},this.userProperties),o=r.company||{};delete r.company;var s,a,c=e(e({event_id:"",user:e({anonymous_id:"strict"!==this.cookiePolicy?t.getAnonymousId({name:this.idCookieName,domain:this.cookieDomain,crossDomainLinking:this.crossDomainLinking}):""},r),ids:this._getIds(),utc_time:(s=n.toISOString(),a=s.split(".")[1],a?a.length>=7?s:s.slice(0,-1)+"0".repeat(7-a.length)+"Z":s),local_tz_offset:n.getTimezoneOffset()},i),function(e){var t={utm:{},click_id:{}};for(var n in e)if(e.hasOwnProperty(n)){var i=e[n],r=k[n];r?t.utm[r]=i:w[n]&&(t.click_id[n]=i)}return t}(function(e){if(!e)return{};for(var t=e.length>0&&"?"===e.charAt(0)?e.substring(1):e,n={},i=("?"===t[0]?t.substr(1):t).split("&"),r=0;r<i.length;r++){var o=i[r].split("=");n[decodeURIComponent(o[0])]=decodeURIComponent(o[1]||"")}return n}(i.doc_search)));return Object.keys(o).length&&(c.company=o),c},i.prototype._getIds=function(){if(!r())return{};for(var e=function(e){if(void 0===e&&(e=!1),e&&p)return p;var t=h(document.cookie);return p=t,t}(!1),t={},n=0,i=Object.entries(e);n<i.length;n++){var o=i[n],s=o[0],a=o[1];this._3pCookies[s]&&(t["_"==s.charAt(0)?s.substr(1):s]=a)}return t},i.prototype.pathMatches=function(e,t){return new URL(t).pathname.match(new RegExp("^"+e.trim().replace(/\*\*/g,".*").replace(/([^\.])\*/g,"$1[^\\s/]*")+"/?$"))},i.prototype.track=function(e,t){var n=this,i=t||{};c().debug("track event of type",e,i);var o=r()?fe():me(),s=this.getCtx(o);if(this.config&&this.config.exclude&&this.config.exclude.length>1&&(null==s?void 0:s.url)&&this.config.exclude.split(",").some((function(e){return n.pathMatches(e.trim(),null==s?void 0:s.url)})))return void c().debug("Page is excluded from tracking");var a=t||{};"$autocapture"!==e&&"user_identify"!==e&&"pageview"!==e&&"$pageleave"!==e&&(a={event_attributes:t});var u=this.makeEvent(e,this.compatMode?"eventn":"usermaven",a);return this.sendJson(u)},i.prototype.init=function(i){var o,l,p,h,f,m,g,v,y=this;if(r()&&!i.force_use_fetch)i.fetch&&c().warn("Custom fetch implementation is provided to Usermaven. However, it will be ignored since Usermaven runs in browser"),this.transport=this.beaconApi?ae:ge;else{if(!i.fetch&&!globalThis.fetch)throw new Error("Usermaven runs in Node environment. However, neither UsermavenOptions.fetch is provided, nor global fetch function is defined. \nPlease, provide custom fetch implementation. You can get it via node-fetch package");this.transport=(m=i.fetch||globalThis.fetch,function(i,r,o,s){return void 0===s&&(s=function(e,t){}),t(void 0,void 0,void 0,(function(){var t,a,u,l,p,d,h,f;return n(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,m(i,{method:"POST",headers:e({Accept:"application/json","Content-Type":"application/json"},o||{}),body:r})];case 1:return t=n.sent(),[3,3];case 2:return a=n.sent(),c().error("Failed to send data to "+i+": "+((null==a?void 0:a.message)||"unknown error"),r,a),s(-1,{}),[2];case 3:if(200!==t.status)return c().warn("Failed to send data to "+i+" (#"+t.status+" - "+t.statusText+")",r),s(t.status,{}),[2];u={},l="",p=null!==(f=null===(h=t.headers)||void 0===h?void 0:h.get("Content-Type"))&&void 0!==f?f:"",n.label=4;case 4:return n.trys.push([4,6,,7]),[4,t.text()];case 5:return l=n.sent(),u=JSON.parse(l),[3,7];case 6:return d=n.sent(),c().error("Failed to parse "+i+" response. Content-type: "+p+" text: "+l,d),[3,7];case 7:try{s(t.status,u)}catch(e){c().error("Failed to handle "+i+" response. Content-type: "+p+" text: "+l,e)}return[2]}}))}))})}if(i.custom_headers&&"function"==typeof i.custom_headers?this.customHeaders=i.custom_headers:i.custom_headers&&(this.customHeaders=function(){return i.custom_headers}),"echo"===i.tracking_host&&(c().warn('jitsuClient is configured with "echo" transport. Outgoing requests will be written to console'),this.transport=ce),i.ip_policy&&(this.ipPolicy=i.ip_policy),i.cookie_policy&&(this.cookiePolicy=i.cookie_policy),"strict"===i.privacy_policy&&(this.ipPolicy="strict",this.cookiePolicy="strict"),i.use_beacon_api&&navigator.sendBeacon&&(this.beaconApi=!0),"comply"===this.cookiePolicy&&this.beaconApi&&(this.cookiePolicy="strict"),i.log_level&&(g=i.log_level,(v=s[g.toLocaleUpperCase()])||(console.warn("Can't find log level with name "+g.toLocaleUpperCase()+", defaulting to INFO"),v=s.INFO),a=u(v)),this.initialOptions=i,c().debug("Initializing Usemaven Tracker tracker",i,oe),i.key){if(this.compatMode=void 0!==i.compat_mode&&!!i.compat_mode,this.cookieDomain=i.cookie_domain||d(),this.namespace=i.namespace||"usermaven",this.crossDomainLinking=null===(o=i.cross_domain_linking)||void 0===o||o,this.domains=i.domains?i.domains.split(",").map((function(e){return e.trim()})):[],this.trackingHost=function(e){for(;n="/",-1!==(t=e).indexOf(n,t.length-n.length);)e=e.substr(0,e.length-1);var t,n;return 0===e.indexOf("https://")||0===e.indexOf("http://")?e:"https://"+e}(i.tracking_host||"t.usermaven.com"),this.randomizeUrl=i.randomize_url||!1,this.apiKey=i.key,this.__auto_pageview_enabled=i.auto_pageview||!1,this.idCookieName=i.cookie_name||"__eventn_id_"+i.key,"strict"===this.cookiePolicy?this.propsPersistance=new pe:this.propsPersistance=r()?new le(this.cookieDomain,this.idCookieName+"_props"):new pe,"strict"===this.cookiePolicy?this.userIdPersistence=new pe:this.userIdPersistence=r()?new le(this.cookieDomain,this.idCookieName+"_usr"):new pe,this.propsPersistance){var _=this.propsPersistance.restore();_&&(this.permanentProperties=_,this.permanentProperties.globalProps=null!==(l=_.globalProps)&&void 0!==l?l:{},this.permanentProperties.propsPerEvent=null!==(p=_.propsPerEvent)&&void 0!==p?p:{}),c().debug("Restored persistent properties",this.permanentProperties)}this.propertyBlacklist=i.property_blacklist&&i.property_blacklist.length>0?i.property_blacklist:[];this.config=L({},{autocapture:!1,properties_string_max_length:null,property_blacklist:[],sanitize_properties:null,auto_pageview:!1},i||{},this.config||{},{token:this.apiKey}),c().debug("Default Configuration",this.config),this.manageAutoCapture(this.config),this.manageCrossDomainLinking({cross_domain_linking:this.crossDomainLinking,domains:this.domains,cookiePolicy:this.cookiePolicy}),!1===i.capture_3rd_party_cookies?this._3pCookies={}:(i.capture_3rd_party_cookies||["_ga","_fbp","_ym_uid","ajs_user_id","ajs_anonymous_id"]).forEach((function(e){return y._3pCookies[e]=!0})),i.ga_hook&&c().warn("GA event interceptor isn't supported anymore"),i.segment_hook&&function(e){var t=window;t.analytics||(t.analytics=[]);e.interceptAnalytics(t.analytics)}(this),r()&&(i.disable_event_persistence||(this.queue=new S(this.namespace+"-event-queue"),this.scheduleFlush(0)),window.addEventListener("beforeunload",(function(){return y.flush()}))),this.__auto_pageview_enabled&&function(e){var t=function(){return e.track("pageview")},n=history.pushState;n&&(history.pushState=function(e,i,r){n.apply(this,[e,i,r]),t()},addEventListener("popstate",t));addEventListener("hashchange",t)}(this),this.retryTimeout=[null!==(h=i.min_send_timeout)&&void 0!==h?h:this.retryTimeout[0],null!==(f=i.max_send_timeout)&&void 0!==f?f:this.retryTimeout[1]],i.max_send_attempts&&(this.maxSendAttempts=i.max_send_attempts),this.initialized=!0}else c().error("Can't initialize Usemaven, key property is not set")},i.prototype.interceptAnalytics=function(t){var n=this,i=function(t){var i;try{var r=e({},t.payload);c().debug("Intercepted segment payload",r.obj);var o=t.integrations["Segment.io"];if(o&&o.analytics){var s=o.analytics;"function"==typeof s.user&&s.user()&&"function"==typeof s.user().id&&(r.obj.userId=s.user().id())}(null===(i=null==r?void 0:r.obj)||void 0===i?void 0:i.timestamp)&&(r.obj.sentAt=r.obj.timestamp);var a=t.payload.type();"track"===a&&(a=t.payload.event()),n._send3p("ajs",r,a)}catch(e){c().warn("Failed to send an event",e)}t.next(t.payload)};"function"==typeof t.addSourceMiddleware?(c().debug("Analytics.js is initialized, calling addSourceMiddleware"),t.addSourceMiddleware(i)):(c().debug("Analytics.js is not initialized, pushing addSourceMiddleware to callstack"),t.push(["addSourceMiddleware",i])),t.__en_intercepted=!0},i.prototype.restoreId=function(){if(this.userIdPersistence){var t=this.userIdPersistence.restore();t&&(this.userProperties=e(e({},t),this.userProperties))}},i.prototype.set=function(t,n){var i,r=null==n?void 0:n.eventType,o=void 0===(null==n?void 0:n.persist)||(null==n?void 0:n.persist);if(void 0!==r){var s=null!==(i=this.permanentProperties.propsPerEvent[r])&&void 0!==i?i:{};this.permanentProperties.propsPerEvent[r]=e(e({},s),t)}else this.permanentProperties.globalProps=e(e({},this.permanentProperties.globalProps),t);this.propsPersistance&&o&&this.propsPersistance.save(this.permanentProperties)},i.prototype.unset=function(e,t){o();var n=null==t?void 0:t.eventType,i=void 0===(null==t?void 0:t.persist)||(null==t?void 0:t.persist);n?this.permanentProperties.propsPerEvent[n]&&delete this.permanentProperties.propsPerEvent[n][e]:delete this.permanentProperties.globalProps[e],this.propsPersistance&&i&&this.propsPersistance.save(this.permanentProperties)},i.prototype.manageCrossDomainLinking=function(e){if(!r()||!e.cross_domain_linking||0===e.domains.length||"strict"===e.cookiePolicy)return!1;var t=this.idCookieName,n=e.domains||[];document.addEventListener("click",(function(e){var i=function(e){for(;e&&e.tagName;){if("a"==e.tagName.toLowerCase())return e;e=e.parentNode}return null}(e.target);if(i){var r=(null==i?void 0:i.hasAttribute("href"))?null==i?void 0:i.getAttribute("href"):"";if(r&&r.startsWith("http")){var o=new URL(r),s=g(t);if(o.hostname===window.location.hostname)return;n.includes(o.hostname)&&s&&(o.searchParams.append("_um",s),i.setAttribute("href",o.toString()))}}}),!1)},i.prototype.manageAutoCapture=function(e){if(c().debug("Auto Capture Status: ",this.config.autocapture),this.__autocapture_enabled=this.config.autocapture&&r(),this.__autocapture_enabled){ie.enabledForProject(this.apiKey,100,100)?ie.isBrowserSupported()?(c().debug("Autocapture enabled..."),ie.init(this,e)):(this.config.autocapture=!1,this.__autocapture_enabled=!1,c().debug("Disabling Automatic Event Collection because this browser is not supported")):(this.config.autocapture=!1,this.__autocapture_enabled=!1,c().debug("Not in active bucket: disabling Automatic Event Collection."))}},i.prototype.capture=function(e,t){var n,i;if(void 0===t&&(t={}),this.initialized)if(F(e)||"string"!=typeof e)console.error("No event name provided to usermaven.capture");else{var r={event:e+(t.$event_type?"_"+t.$event_type:""),properties:this._calculate_event_properties(e,t)};(null===(i=null===(n=(r=q(r,this.get_config("properties_string_max_length"))).properties)||void 0===n?void 0:n.autocapture_attributes)||void 0===i?void 0:i.tag_name)&&this.track("$autocapture",r.properties),"$scroll"===e&&this.track(e,r.properties)}else console.error("Trying to capture event before initialization")},i.prototype._calculate_event_properties=function(e,t){var n,i,r=t||{};if("$snapshot"===e||"$scroll"===e)return r;I(this.propertyBlacklist)?H(this.propertyBlacklist,(function(e){delete r[e]})):console.error("Invalid value for property_blacklist config: "+this.propertyBlacklist);var o={},s=r.$elements||[];return s.length&&(o=s[0]),r.autocapture_attributes=o,r.autocapture_attributes.el_text=null!==(n=r.autocapture_attributes.$el_text)&&void 0!==n?n:"",r.autocapture_attributes.event_type=null!==(i=r.$event_type)&&void 0!==i?i:"",["$ce_version","$event_type","$initial_referrer","$initial_referring_domain","$referrer","$referring_domain","$elements"].forEach((function(e){delete r[e]})),delete r.autocapture_attributes.$el_text,delete r.autocapture_attributes.nth_child,delete r.autocapture_attributes.nth_of_type,r},i}();var ye="lib.js",_e=["use_beacon_api","cookie_domain","tracking_host","cookie_name","key","ga_hook","segment_hook","randomize_url","capture_3rd_party_cookies","id_method","log_level","compat_mode","privacy_policy","cookie_policy","ip_policy","custom_headers","force_use_fetch","min_send_timeout","max_send_timeout","max_send_attempts","disable_event_persistence","project_id","autocapture","properties_string_max_length","property_blacklist","exclude","auto_pageview","namespace","cross_domain_linking","domains"];var be="data-suppress-interception-warning";function ke(e){return"\n ATTENTION! "+e+"-hook set to true along with defer/async attribute! If "+e+" code is inserted right after Usermaven tag,\n first tracking call might not be intercepted! Consider one of the following:\n - Inject usermaven tracking code without defer/async attribute\n - If you're sure that events won't be sent to "+e+" before Usermaven is fully initialized, set "+be+'="true"\n script attribute\n '}function we(e){var t=document.currentScript;if(t){var n,i={tracking_host:(n=t.getAttribute("src"),n.replace("/s/"+ye,"").replace("/"+ye,"")),key:null},r=t.getAttribute("data-namespace")||"usermaven";_e.forEach((function(e){var n="data-"+e.replace(new RegExp("_","g"),"-");if(void 0!==t.getAttribute(n)&&null!==t.getAttribute(n)){var r=t.getAttribute(n);"true"===r?r=!0:"false"===r&&(r=!1),i[e]=r}}));var o=r+"Client";e[o]=function(e){var t=new ve;return t.init(e),t}(i),!i.segment_hook||null===t.getAttribute("defer")&&null===t.getAttribute("async")||null!==t.getAttribute(be)||c().warn(ke("segment")),!i.ga_hook||null===t.getAttribute("defer")&&null===t.getAttribute("async")||null!==t.getAttribute(be)||c().warn(ke("ga")),!function(t,n,i){e[t]=function(){var i=e[t+"Q"]=e[t+"Q"]||[];i.push(arguments),Pe(i,e[n])}}(r,o),i.project_id&&e[r]("set",{project_id:i.project_id}),"true"!==t.getAttribute("data-init-only")&&"yes"!==t.getAttribute("data-init-only")&&e[r]("track","pageview");var s=void 0===e.onpagehide?"unload":"pagehide";return e.addEventListener(s,(function(){e[r]("track","$pageleave")})),e[o]}c().warn("Usermaven script is not properly initialized. The definition must contain data-usermaven-api-key as a parameter")}function Pe(e,t){c().debug("Processing queue",e);for(var n=0;n<e.length;n+=1){var r=i([],e[n],!0)||[],o=r[0],s=r.slice(1),a=t[o];"function"==typeof a&&a.apply(t,s)}e.length=0}!function(e){if(window){var t=window,n=e,i=we(t);i?(c().debug("Usermaven in-browser tracker has been initialized",n),t[n]=function(){var e=t[n+"Q"]=t[n+"Q"]||[];e.push(arguments),Pe(e,i)},t[n+"Q"]&&(c().debug("Initial queue size of "+t[n+"Q"].length+" will be processed"),Pe(t[n+"Q"],i))):c().error("Usermaven tracker has not been initialized (reason unknown)")}else c().warn("Usermaven tracker called outside browser context. It will be ignored")}(document.currentScript.getAttribute("data-namespace")||"usermaven")}();
1
+ !function(){"use strict";var e=function(){return e=Object.assign||function(e){for(var t,n=1,i=arguments.length;n<i;n++)for(var r in t=arguments[n])Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r]);return e},e.apply(this,arguments)};function t(e,t,n,i){return new(n||(n=Promise))((function(r,o){function s(e){try{c(i.next(e))}catch(e){o(e)}}function a(e){try{c(i.throw(e))}catch(e){o(e)}}function c(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(s,a)}c((i=i.apply(e,t||[])).next())}))}function n(e,t){var n,i,r,o,s={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:a(0),throw:a(1),return:a(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function a(a){return function(c){return function(a){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,a[0]&&(s=0)),s;)try{if(n=1,i&&(r=2&a[0]?i.return:a[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,a[1])).done)return r;switch(i=0,r&&(a=[2&a[0],r.value]),a[0]){case 0:case 1:r=a;break;case 4:return s.label++,{value:a[1],done:!1};case 5:s.label++,i=a[1],a=[0];continue;case 7:a=s.ops.pop(),s.trys.pop();continue;default:if(!(r=s.trys,(r=r.length>0&&r[r.length-1])||6!==a[0]&&2!==a[0])){s=0;continue}if(3===a[0]&&(!r||a[1]>r[0]&&a[1]<r[3])){s.label=a[1];break}if(6===a[0]&&s.label<r[1]){s.label=r[1],r=a;break}if(r&&s.label<r[2]){s.label=r[2],s.ops.push(a);break}r[2]&&s.ops.pop(),s.trys.pop();continue}a=t.call(e,s)}catch(e){a=[6,e],i=0}finally{n=r=0}if(5&a[0])throw a[1];return{value:a[0]?a[1]:void 0,done:!0}}([a,c])}}}function i(e,t,n){if(n||2===arguments.length)for(var i,r=0,o=t.length;r<o;r++)!i&&r in t||(i||(i=Array.prototype.slice.call(t,0,r)),i[r]=t[r]);return e.concat(i||Array.prototype.slice.call(t))}function r(e=void 0){const t=!!globalThis.window&&!!globalThis.window.document&&!!globalThis.window.location;return!t&&e&&c().warn(e),t}function o(e=void 0){if(!r())throw new Error(e||"window' is not available. Seems like this code runs outside browser environment. It shouldn't happen");return window}"function"==typeof SuppressedError&&SuppressedError;var s={DEBUG:{name:"DEBUG",severity:10},INFO:{name:"INFO",severity:100},WARN:{name:"WARN",severity:1e3},ERROR:{name:"ERROR",severity:1e4},NONE:{name:"NONE",severity:1e4}},a=null;function c(){return a||(a=u())}function u(e){var t=r()&&window.__eventNLogLevel,n=s.WARN;if(t){var o=s[t.toUpperCase()];o&&o>0&&(n=o)}else e&&(n=e);var a={minLogLevel:n};return Object.values(s).forEach((function(e){var t=e.name,r=e.severity;a[t.toLowerCase()]=function(){for(var e=[],o=0;o<arguments.length;o++)e[o]=arguments[o];if(r>=n.severity&&e.length>0){var s=e[0],a=e.splice(1),c="[J-"+t+"] "+s;"DEBUG"===t||"INFO"===t?console.log.apply(console,i([c],a,!1)):"WARN"===t?console.warn.apply(console,i([c],a,!1)):console.error.apply(console,i([c],a,!1))}}})),function(e,t){if(r()){var n=window;n.__usermavenDebug||(n.__usermavenDebug={}),n.__usermavenDebug[e]=t}}("logger",a),a}function l(e,t,n){void 0===n&&(n={});try{var i=n.maxAge,r=n.domain,o=n.path,s=n.expires,a=n.httpOnly,u=n.secure,l=n.sameSite,p=e+"="+encodeURIComponent(t);if(r&&(p+="; domain="+r),p+=o?"; path="+o:"; path=/",s&&(p+="; expires="+s.toUTCString()),i&&(p+="; max-age="+i),a&&(p+="; httponly"),u&&(p+="; secure"),l)switch("string"==typeof l?l.toLowerCase():l){case!0:p+="; SameSite=Strict";break;case"lax":p+="; SameSite=Lax";break;case"strict":p+="; SameSite=Strict";break;case"none":p+="; SameSite=None"}else u&&(p+="; SameSite=None");return p}catch(e){return c().error("serializeCookie",e),""}}var p,d=function(){if(r())return function(e){var t=e.split(".");if(4===t.length&&t.every((function(e){return!isNaN(e)})))return e;var n=function(e){var t=e.match(/[a-z0-9][a-z0-9-]+\.[a-z.]{2,6}$/i);return t?t[0]:""}(e);return n||(n=function(e){var t=function(e){return(e.indexOf("//")>-1?e.split("/")[2]:e.split("/")[0]).split(":")[0].split("?")[0]}(e),n=t.split("."),i=n.length;return i>2&&(2==n[i-1].length?(t=n[i-2]+"."+n[i-1],2==n[i-2].length&&(t=n[i-3]+"."+t)):t=n[i-2]+"."+n[i-1]),t}(e)),n}(window.location.hostname)};function h(e){if(!e)return{};for(var t={},n=e.split(";"),i=0;i<n.length;i++){var r=n[i],o=r.indexOf("=");o>0&&(t[r.substr(i>0?1:0,i>0?o-1:o)]=r.substr(o+1))}return t}function f(e,t){return Array.from(e.attributes).forEach((function(e){t.setAttribute(e.nodeName,e.nodeValue)}))}function m(e,t){e.innerHTML=t;var n,i=e.getElementsByTagName("script");for(n=i.length-1;n>=0;n--){var r=i[n],o=document.createElement("script");f(r,o),r.innerHTML&&(o.innerHTML=r.innerHTML),o.setAttribute("data-usermaven-tag-id",e.id),document.getElementsByTagName("head")[0].appendChild(o),i[n].parentNode.removeChild(i[n])}}var g=function(e){if(!e)return null;try{for(var t=e+"=",n=o().document.cookie.split(";"),i=0;i<n.length;i++){for(var r=n[i];" "==r.charAt(0);)r=r.substring(1,r.length);if(0===r.indexOf(t))return decodeURIComponent(r.substring(t.length,r.length))}}catch(e){c().error("getCookies",e)}return null},v=function(e,t,n){void 0===n&&(n={}),o().document.cookie=l(e,t,n)},y=function(e,t){void 0===t&&(t="/"),document.cookie=e+"= ; SameSite=Strict; expires = Thu, 01 Jan 1970 00:00:00 GMT"+(t?"; path = "+t:"")},_=function(){return Math.random().toString(36).substring(2,12)},b=function(){return Math.random().toString(36).substring(2,7)},k={utm_source:"source",utm_medium:"medium",utm_campaign:"campaign",utm_term:"term",utm_content:"content"},w={gclid:!0,fbclid:!0,dclid:!0};var P=function(){function e(){this.queue=[]}return e.prototype.flush=function(){var e=this.queue;return this.queue=[],e},e.prototype.push=function(){for(var e,t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];(e=this.queue).push.apply(e,t)},e}(),S=function(){function e(e){this.key=e}return e.prototype.flush=function(){var e=this.get();return e.length&&this.set([]),e},e.prototype.push=function(){for(var e=[],t=0;t<arguments.length;t++)e[t]=arguments[t];var n=this.get();n.push.apply(n,e),this.set(n)},e.prototype.set=function(e){localStorage.setItem(this.key,JSON.stringify(e))},e.prototype.get=function(){var e=localStorage.getItem(this.key);return null!==e&&""!==e?JSON.parse(e):[]},e}(),x=Object.prototype,N=x.toString,E=x.hasOwnProperty,A=Array.prototype.forEach,C=Array.isArray,O={},T=C||function(e){return"[object Array]"===N.call(e)};function D(e,t,n){if(Array.isArray(e))if(A&&e.forEach===A)e.forEach(t,n);else if("length"in e&&e.length===+e.length)for(var i=0,r=e.length;i<r;i++)if(i in e&&t.call(n,e[i],i)===O)return}var I=function(e){return e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")};function L(e,t,n){if(null!=e)if(A&&Array.isArray(e)&&e.forEach===A)e.forEach(t,n);else if("length"in e&&e.length===+e.length){for(var i=0,r=e.length;i<r;i++)if(i in e&&t.call(n,e[i],i)===O)return}else for(var o in e)if(E.call(e,o)&&t.call(n,e[o],o)===O)return}var j=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];return D(t,(function(t){for(var n in t)void 0!==t[n]&&(e[n]=t[n])})),e};function H(e,t){return-1!==e.indexOf(t)}var F=function(e){try{return/^\s*\bfunction\b/.test(e)}catch(e){return!1}},$=function(e){return void 0===e},U=function(){function e(t){return t&&(t.preventDefault=e.preventDefault,t.stopPropagation=e.stopPropagation),t}return e.preventDefault=function(){this.returnValue=!1},e.stopPropagation=function(){this.cancelBubble=!0},function(t,n,i,r,o){if(t)if(t.addEventListener&&!r)t.addEventListener(n,i,!!o);else{var s="on"+n,a=t[s];t[s]=function(t,n,i){return function(r){if(r=r||e(window.event)){var o,s=!0;F(i)&&(o=i(r));var a=n.call(t,r);return!1!==o&&!1!==a||(s=!1),s}}}(t,i,a)}else c().error("No valid element provided to register_event")}}(),M=function(e){return function(){for(var t=[],n=0;n<arguments.length;n++)t[n]=arguments[n];try{return e.apply(this,t)}catch(e){c().error("Implementation error. Please turn on debug and contact support@usermaven.com.",e)}}},z="undefined"!=typeof Symbol?Symbol("__deepCircularCopyInProgress__"):"__deepCircularCopyInProgress__";function R(e,t,n){return e!==Object(e)?t?t(e,n):e:e[z]?void 0:(e[z]=!0,T(e)?(i=[],D(e,(function(e){i.push(R(e,t))}))):(i={},L(e,(function(e,n){n!==z&&(i[n]=R(e,t,n))}))),delete e[z],i);var i}var q=["$performance_raw"];function J(e,t){return R(e,(function(e,n){return n&&q.indexOf(n)>-1?e:"string"==typeof e&&null!==t?e.slice(0,t):e}))}function B(e){switch(typeof e.className){case"string":return e.className;case"object":return("baseVal"in e.className?e.className.baseVal:null)||e.getAttribute("class")||"";default:return""}}function V(e){var t="";return X(e)&&!Z(e)&&e.childNodes&&e.childNodes.length&&L(e.childNodes,(function(e){K(e)&&e.textContent&&(t+=I(e.textContent).split(/(\s+)/).filter(ee).join("").replace(/[\r\n]/g," ").replace(/[ ]+/g," ").substring(0,255))})),I(t)}function W(e){return!!e&&1===e.nodeType}function G(e,t){return!!e&&!!e.tagName&&e.tagName.toLowerCase()===t.toLowerCase()}function K(e){return!!e&&3===e.nodeType}function Q(e){return!!e&&11===e.nodeType}var Y=["a","button","form","input","select","textarea","label"];function X(e){for(var t=e;t.parentNode&&!G(t,"body");t=t.parentNode){var n=B(t).split(" ");if(H(n,"ph-sensitive")||H(n,"ph-no-capture"))return!1}if(H(B(e).split(" "),"ph-include"))return!0;var i=e.type||"";if("string"==typeof i)switch(i.toLowerCase()){case"hidden":case"password":return!1}var r=e.name||e.id||"";if("string"==typeof r){if(/^cc|cardnum|ccnum|creditcard|csc|cvc|cvv|exp|pass|pwd|routing|seccode|securitycode|securitynum|socialsec|socsec|ssn/i.test(r.replace(/[^a-zA-Z0-9]/g,"")))return!1}return!0}function Z(e){return!!(G(e,"input")&&!["button","checkbox","submit","reset"].includes(e.type)||G(e,"select")||G(e,"textarea")||"true"===e.getAttribute("contenteditable"))}function ee(e){if(null===e||$(e))return!1;if("string"==typeof e){e=I(e);if(/^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/.test((e||"").replace(/[- ]/g,"")))return!1;if(/(^\d{3}-?\d{2}-?\d{4}$)/.test(e))return!1}return!0}var te=function(){function e(e,t){void 0===t&&(t=!1),this.clicks=[],this.instance=e,this.enabled=t}return e.prototype.click=function(e,t,n){if(this.enabled){var i=this.clicks[this.clicks.length-1];i&&Math.abs(e-i.x)+Math.abs(t-i.y)<30&&n-i.timestamp<1e3?(this.clicks.push({x:e,y:t,timestamp:n}),3===this.clicks.length&&this.instance.capture("$rageclick")):this.clicks=[{x:e,y:t,timestamp:n}]}},e}(),ne=function(){function e(e){this.instance=e,this.lastScrollDepth=0,this.canSend=!0,this.documentElement=document.documentElement}return e.prototype.track=function(){var e=this.getScrollDepth();e>this.lastScrollDepth&&(this.lastScrollDepth=e,this.canSend=!0)},e.prototype.send=function(e){if(void 0===e&&(e="$scroll"),this.canSend){var t={percent:this.lastScrollDepth,window_height:this.getWindowHeight(),document_height:this.getDocumentHeight(),scroll_distance:this.getScrollDistance()};this.instance.capture(e,t),this.canSend=!1}},e.prototype.getScrollDepth=function(){try{var e=this.getWindowHeight(),t=this.getDocumentHeight(),n=this.getScrollDistance(),i=t-e;return Math.min(100,Math.floor(n/i*100))}catch(e){return 0}},e.prototype.getWindowHeight=function(){try{return window.innerHeight||this.documentElement.clientHeight||document.body.clientHeight||0}catch(e){return 0}},e.prototype.getDocumentHeight=function(){try{return Math.max(document.body.scrollHeight||0,this.documentElement.scrollHeight||0,document.body.offsetHeight||0,this.documentElement.offsetHeight||0,document.body.clientHeight||0,this.documentElement.clientHeight||0)}catch(e){return 0}},e.prototype.getScrollDistance=function(){try{return window.scrollY||window.pageYOffset||document.body.scrollTop||this.documentElement.scrollTop||0}catch(e){return 0}},e}(),ie={_initializedTokens:[],_previousElementSibling:function(e){if(e.previousElementSibling)return e.previousElementSibling;var t=e;do{t=t.previousSibling}while(t&&!W(t));return t},_getPropertiesFromElement:function(e,t,n){var i=e.tagName.toLowerCase(),r={tag_name:i};Y.indexOf(i)>-1&&!n&&(r.$el_text=V(e));var o=B(e);o.length>0&&(r.classes=o.split(" ").filter((function(e){return""!==e}))),L(e.attributes,(function(n){var i;Z(e)&&-1===["name","id","class"].indexOf(n.name)||!t&&ee(n.value)&&("string"!=typeof(i=n.name)||"_ngcontent"!==i.substring(0,10)&&"_nghost"!==i.substring(0,7))&&(r["attr__"+n.name]=n.value)}));for(var s=1,a=1,c=e;c=this._previousElementSibling(c);)s++,c.tagName===e.tagName&&a++;return r.nth_child=s,r.nth_of_type=a,r},_getDefaultProperties:function(e){return{$event_type:e,$ce_version:1}},_extractCustomPropertyValue:function(e){var t=[];return L(document.querySelectorAll(e.css_selector),(function(e){var n;["input","select"].indexOf(e.tagName.toLowerCase())>-1?n=e.value:e.textContent&&(n=e.textContent),ee(n)&&t.push(n)})),t.join(", ")},_getCustomProperties:function(e){var t=this,n={};return L(this._customProperties,(function(i){L(i.event_selectors,(function(r){L(document.querySelectorAll(r),(function(r){H(e,r)&&X(r)&&(n[i.name]=t._extractCustomPropertyValue(i))}))}))})),n},_getEventTarget:function(e){var t;return void 0===e.target?e.srcElement||null:(null===(t=e.target)||void 0===t?void 0:t.shadowRoot)?e.composedPath()[0]||null:e.target||null},_captureEvent:function(e,t,n){var i,r=this,o=this._getEventTarget(e);if(K(o)&&(o=o.parentNode||null),"scroll"===e.type)return this.scrollDepth.track(),!0;if("visibilitychange"===e.type&&"hidden"===document.visibilityState||"popstate"===e.type)return this.scrollDepth.send(),!0;if("click"===e.type&&e instanceof MouseEvent&&(null===(i=this.rageclicks)||void 0===i||i.click(e.clientX,e.clientY,(new Date).getTime())),o&&function(e,t){if(!e||G(e,"html")||!W(e))return!1;if(e.classList&&e.classList.contains("um-no-capture"))return!1;for(var n=!1,i=[e],r=!0,o=e;o.parentNode&&!G(o,"body");)if(Q(o.parentNode))i.push(o.parentNode.host),o=o.parentNode.host;else{if(!(r=o.parentNode||!1))break;if(Y.indexOf(r.tagName.toLowerCase())>-1)n=!0;else{var s=window.getComputedStyle(r);s&&"pointer"===s.getPropertyValue("cursor")&&(n=!0)}i.push(r),o=r}var a=window.getComputedStyle(e);if(a&&"pointer"===a.getPropertyValue("cursor")&&"click"===t.type)return!0;var c=e.tagName.toLowerCase();switch(c){case"html":return!1;case"form":return"submit"===t.type;case"input":case"select":case"textarea":return"change"===t.type||"click"===t.type;default:return n?"click"===t.type:"click"===t.type&&(Y.indexOf(c)>-1||"true"===e.getAttribute("contenteditable"))}}(o,e)){for(var s=[o],a=o;a.parentNode&&!G(a,"body");)Q(a.parentNode)?(s.push(a.parentNode.host),a=a.parentNode.host):(s.push(a.parentNode),a=a.parentNode);var c,u=[],l=!1;if(L(s,(function(e){var t=X(e);"a"===e.tagName.toLowerCase()&&(c=e.getAttribute("href"),c=t&&ee(c)&&c),H(B(e).split(" "),"ph-no-capture")&&(l=!0),u.push(r._getPropertiesFromElement(e,null==n?void 0:n.mask_all_element_attributes,null==n?void 0:n.mask_all_text))})),(null==n?void 0:n.mask_all_text)||(u[0].$el_text=V(o)),c&&(u[0].attr__href=c),l)return!1;var p=j(this._getDefaultProperties(e.type),{$elements:u},this._getCustomProperties(s));return t.capture("$autocapture",p),!0}},_navigate:function(e){window.location.href=e},_addDomEventHandlers:function(e,t){var n=this,i=function(i){i=i||window.event,n._captureEvent(i,e,t)};U(document,"submit",i,!1,!0),U(document,"change",i,!1,!0),U(document,"click",i,!1,!0),U(document,"visibilitychange",i,!1,!0),U(document,"scroll",i,!1,!0),U(window,"popstate",i,!1,!0)},_customProperties:[],rageclicks:null,scrollDepth:null,opts:{},init:function(e,t){var n=this;if(this.rageclicks=new te(e),this.scrollDepth=new ne(e),this.opts=t,!document||!document.body)return console.debug("document not ready yet, trying again in 500 milliseconds..."),void setTimeout((function(){n.readyAutocapture(e,t)}),500);this.readyAutocapture(e,t)},readyAutocapture:function(e,t){this._addDomEventHandlers(e,t)},enabledForProject:function(e,t,n){if(!e)return!0;t=$(t)?10:t,n=$(n)?10:n;for(var i=0,r=0;r<e.length;r++)i+=e.charCodeAt(r);return i%t<n},isBrowserSupported:function(){return F(document.querySelectorAll)}};!function(e){for(var t in e)"function"==typeof e[t]&&(e[t]=e[t].bind(e))}(ie),function(e){for(var t in e)"function"==typeof e[t]&&(e[t]=M(e[t]))}(ie);var re=function(){function e(e,t){void 0===t&&(t="all"),this.instance=e,this.trackingType=t,"loading"===document.readyState?document.addEventListener("DOMContentLoaded",this.track.bind(this)):this.track()}return e.prototype.track=function(){var e=this;this.formElements=document.querySelectorAll("form"),"tagged"===this.trackingType&&(this.formElements=document.querySelectorAll("form[data-um-form]")),this.formElements.forEach((function(t){t.addEventListener("submit",(function(t){var n=t.target,i=e._getFormDetails(n);e.instance.capture("$form",function(e){for(var t in e)(""===e[t]||null===e[t]||void 0===e[t]||"object"==typeof e[t]&&0===Object.keys(e[t]).length)&&delete e[t];return e}(i))}))}))},e.getInstance=function(t,n){return void 0===n&&(n="all"),e.instance||(e.instance=new e(t,n)),e.instance},e.prototype._getFormDetails=function(e){var t=this,n={form_id:e.id,form_name:e.name||"",form_action:e.action,form_method:e.method},i=e.querySelectorAll("input, select, textarea");return Array.from(i).filter((function(e){return!e.classList.contains("um-no-capture")})).forEach((function(e,i){var r=t._getFieldProps(e,i);Object.assign(n,r)})),n},e.prototype._getFieldProps=function(e,t){var n,i=Object.keys(e.dataset).length?JSON.stringify(e.dataset):void 0,r=this.getSafeText(e);return(n={})["field_"+(t+1)+"_tag"]=e.tagName.toLowerCase(),n["field_"+(t+1)+"_type"]=e instanceof HTMLInputElement?e.type:void 0,n["field_"+(t+1)+"_data_attributes"]=i,n["field_"+(t+1)+"_id"]=e.id,n["field_"+(t+1)+"_value"]=r,n["field_"+(t+1)+"_class"]=e.className,n["field_"+(t+1)+"_name"]=e.name,n},e.prototype.getSafeText=function(e){var t="";if("value"in e&&"password"!==e.type)t=e.value;else if(e.hasChildNodes()){t=Array.from(e.childNodes).filter((function(e){return e.nodeType===Node.TEXT_NODE})).map((function(e){return e.textContent})).join("")}else t=e.textContent||"";return this._scrubPotentiallySensitiveValues(t)},e.prototype._scrubPotentiallySensitiveValues=function(e){return this._shouldCaptureValue(e)?e:"<redacted>"},e.prototype._shouldCaptureValue=function(e){if(this._isNullish(e))return!1;if(this._isString(e)){e=this._trim(e);if(/^(?:(4[0-9]{12}(?:[0-9]{3})?)|(5[1-5][0-9]{14})|(6(?:011|5[0-9]{2})[0-9]{12})|(3[47][0-9]{13})|(3(?:0[0-5]|[68][0-9])[0-9]{11})|((?:2131|1800|35[0-9]{3})[0-9]{11}))$/.test((e||"").replace(/[- ]/g,"")))return!1;if(/(^\d{3}-?\d{2}-?\d{4}$)/.test(e))return!1}return!0},e.prototype._isNullish=function(e){return null==e},e.prototype._isString=function(e){return"string"==typeof e||e instanceof String},e.prototype._trim=function(e){return e.trim().replace(/^\s+|\s+$/g,"")},e}(),oe="production",se="1.4.0"+"/"+oe+"@"+"2024-05-21T10:41:03.987Z",ae=316224e3,ce=function(e,t){c().debug("Sending beacon",t);var n=new Blob([t],{type:"text/plain"});return navigator.sendBeacon(e,n),Promise.resolve()};var ue=function(e,t){return console.debug("Jitsu client tried to send payload to "+e,function(e){if("string"==typeof e)try{return JSON.stringify(JSON.parse(e),null,2)}catch(t){return e}}(t)),Promise.resolve()};function le(e,t){void 0===t&&(t=void 0),""!=(t=null!=t?t:window.location.pathname)&&"/"!=t&&(y(e,t),le(e,t.slice(0,t.lastIndexOf("/"))))}var pe=function(){function e(e,t){this.cookieDomain=e,this.cookieName=t}return e.prototype.save=function(e){v(this.cookieName,JSON.stringify(e),{domain:this.cookieDomain,secure:"http:"!==document.location.protocol,maxAge:ae})},e.prototype.restore=function(){le(this.cookieName);var e=g(this.cookieName);if(e)try{var t=JSON.parse(decodeURIComponent(e));return"object"!=typeof t?void c().warn("Can't restore value of "+this.cookieName+"@"+this.cookieDomain+", expected to be object, but found "+("object"!=typeof t)+": "+t+". Ignoring"):t}catch(t){return void c().error("Failed to decode JSON from "+e,t)}},e.prototype.delete=function(){y(this.cookieName)},e}(),de=function(){function e(){}return e.prototype.save=function(e){},e.prototype.restore=function(){},e.prototype.delete=function(){},e}();var he={getSourceIp:function(){},describeClient:function(){return{referer:document.referrer,url:window.location.href,page_title:document.title,doc_path:document.location.pathname,doc_host:document.location.hostname,doc_search:window.location.search,screen_resolution:screen.width+"x"+screen.height,vp_size:Math.max(document.documentElement.clientWidth||0,window.innerWidth||0)+"x"+Math.max(document.documentElement.clientHeight||0,window.innerHeight||0),user_agent:navigator.userAgent,user_language:navigator.language,doc_encoding:document.characterSet}},getAnonymousId:function(e){var t=e.name,n=e.domain,i=e.crossDomainLinking,r=void 0===i||i;if(le(t),r){var o=new URLSearchParams(window.location.search).get("_um"),s=window.location.hash.substring(1).split("~"),a=s.length>1?s[1]:void 0,u=o||a;if(u){c().debug("Existing user id from other domain",u);var l=g(t);return l&&l===u||v(t,u,{domain:n,secure:"http:"!==document.location.protocol,maxAge:ae}),u}}var p=g(t);if(p)return c().debug("Existing user id",p),p;var d=_();return c().debug("New user id",d),v(t,d,{domain:n,secure:"http:"!==document.location.protocol,maxAge:ae}),d}};var fe={getSourceIp:function(){},describeClient:function(){return{}},getAnonymousId:function(){return""}},me=function(){return he},ge=function(){return fe},ve=function(e,t,n,i){void 0===i&&(i=function(e,t){});var r=new window.XMLHttpRequest;return new Promise((function(o,s){r.onerror=function(n){c().error("Failed to send payload to "+e+": "+((null==n?void 0:n.message)||"unknown error"),t,n),i(-1,{}),s(new Error("Failed to send JSON. See console logs"))},r.onload=function(){200!==r.status?(i(r.status,{}),c().warn("Failed to send data to "+e+" (#"+r.status+" - "+r.statusText+")",t),s(new Error("Failed to send JSON. Error code: "+r.status+". See logs for details"))):i(r.status,r.responseText),o()},r.open("POST",e),r.setRequestHeader("Content-Type","application/json"),Object.entries(n||{}).forEach((function(e){var t=e[0],n=e[1];return r.setRequestHeader(t,n)})),r.send(t),c().debug("sending json",t)}))},ye=function(){function i(){this.userProperties={},this.groupProperties={},this.permanentProperties={globalProps:{},propsPerEvent:{}},this.cookieDomain="",this.trackingHost="",this.idCookieName="",this.randomizeUrl=!1,this.namespace="usermaven",this.crossDomainLinking=!0,this.formTracking=!1,this.domains=[],this.apiKey="",this.initialized=!1,this._3pCookies={},this.cookiePolicy="keep",this.ipPolicy="keep",this.beaconApi=!1,this.transport=ve,this.customHeaders=function(){return{}},this.queue=new P,this.maxSendAttempts=4,this.retryTimeout=[500,1e12],this.flushing=!1,this.attempt=1,this.propertyBlacklist=[],this.__autocapture_enabled=!1,this.__auto_pageview_enabled=!1,this.trackingHostFallback="https://events.usermaven.com"}return i.prototype.get_config=function(e){return this.config?this.config[e]:null},i.prototype.id=function(t,n){return this.userProperties=e(e({},this.userProperties),t),c().debug("Usermaven user identified",t),this.userIdPersistence?this.userIdPersistence.save(t):c().warn("Id() is called before initialization"),n?Promise.resolve():this.track("user_identify",{})},i.prototype.group=function(t,n){return this.groupProperties=e(e({},this.groupProperties),t),c().debug("Usermaven group identified",t),this.userIdPersistence?this.userIdPersistence.save({company:t}):c().warn("Group() is called before initialization"),n?Promise.resolve():this.track("group",{})},i.prototype.reset=function(e){if(this.userIdPersistence&&this.userIdPersistence.delete(),this.propsPersistance&&this.propsPersistance.delete(),e){var t=g(this.idCookieName);t&&(c().debug("Removing id cookie",t),v(this.idCookieName,"",{domain:this.cookieDomain,expires:new Date(0)}))}return Promise.resolve()},i.prototype.rawTrack=function(e){return this.sendJson(e)},i.prototype.makeEvent=function(t,n,i){var o,s=i.env,a=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r<i.length;r++)t.indexOf(i[r])<0&&Object.prototype.propertyIsEnumerable.call(e,i[r])&&(n[i[r]]=e[i[r]])}return n}(i,["env"]);s||(s=r()?me():ge()),this.restoreId();var c=this.getCtx(s),u=e(e({},this.permanentProperties.globalProps),null!==(o=this.permanentProperties.propsPerEvent[t])&&void 0!==o?o:{}),l=e({api_key:this.apiKey,src:n,event_type:t},a),p=s.getSourceIp();return p&&(l.source_ip=p),this.compatMode?e(e(e({},u),{eventn_ctx:c}),l):e(e(e({},u),c),l)},i.prototype._send3p=function(e,t,n){var i="3rdparty";n&&""!==n&&(i=n);var r=this.makeEvent(i,e,{src_payload:t});return this.sendJson(r)},i.prototype.sendJson=function(e){return t(this,void 0,Promise,(function(){return n(this,(function(t){switch(t.label){case 0:return n="false","undefined"!=typeof window&&window.localStorage&&(n=localStorage.getItem("um_exclusion")),null!=n&&"false"!==n?[3,3]:this.maxSendAttempts>1?(this.queue.push([e,0]),this.scheduleFlush(0),[3,3]):[3,1];case 1:return[4,this.doSendJson(e)];case 2:t.sent(),t.label=3;case 3:return[2]}var n}))}))},i.prototype.doSendJson=function(e){var t=this,n="keep"!==this.cookiePolicy?"&cookie_policy="+this.cookiePolicy:"",i="keep"!==this.ipPolicy?"&ip_policy="+this.ipPolicy:"",o=r()?"/api/v1/event":"/api/v1/s2s/event",s=""+this.trackingHost+o+"?token="+this.apiKey+n+i;this.randomizeUrl&&(s=this.trackingHost+"/api."+b()+"?p_"+b()+"="+this.apiKey+n+i);var a=JSON.stringify(e);return c().debug("Sending payload to "+s,e.length),this.transport(s,a,this.customHeaders(),(function(e,n){return t.postHandle(e,n)}))},i.prototype.scheduleFlush=function(e){var t=this;if(!this.flushing){if(this.flushing=!0,void 0===e){var n=Math.random()+1,i=Math.pow(2,this.attempt++);e=Math.min(this.retryTimeout[0]*n*i,this.retryTimeout[1])}c().debug("Scheduling event queue flush in "+e+" ms."),setTimeout((function(){return t.flush()}),e)}},i.prototype.flush=function(){return t(this,void 0,Promise,(function(){var e,t,i=this;return n(this,(function(n){switch(n.label){case 0:if(r()&&!window.navigator.onLine&&(this.flushing=!1,this.scheduleFlush()),e=this.queue.flush(),this.flushing=!1,0===e.length)return[2];n.label=1;case 1:return n.trys.push([1,3,,4]),[4,this.doSendJson(e.map((function(e){return e[0]})))];case 2:return n.sent(),this.attempt=1,c().debug("Successfully flushed "+e.length+" events from queue"),[3,4];case 3:return n.sent(),this.trackingHost!==this.trackingHostFallback&&(c().debug("Using fallback tracking host "+this.trackingHostFallback+" instead of "+this.trackingHost+" on "+oe),this.trackingHost=this.trackingHostFallback),(e=e.map((function(e){return[e[0],e[1]+1]})).filter((function(e){return!(e[1]>=i.maxSendAttempts)||(c().error("Dropping queued event after "+e[1]+" attempts since max send attempts "+i.maxSendAttempts+" reached. See logs for details"),!1)}))).length>0?((t=this.queue).push.apply(t,e),this.scheduleFlush()):this.attempt=1,[3,4];case 4:return[2]}}))}))},i.prototype.postHandle=function(e,t){if("strict"===this.cookiePolicy||"comply"===this.cookiePolicy){if(200===e){var n=t;if("string"==typeof t&&(n=JSON.parse(t)),!n.delete_cookie)return}this.userIdPersistence.delete(),this.propsPersistance.delete(),y(this.idCookieName)}if(200===e){n=t;if("string"==typeof t&&t.length>0){var i=(n=JSON.parse(t)).jitsu_sdk_extras;if(i&&i.length>0)if(r())for(var o=0,s=i;o<s.length;o++){var a=s[o],u=a.type,l=a.id,p=a.value;if("tag"===u){var d=document.createElement("div");d.id=l,m(d,p),d.childElementCount>0&&document.body.appendChild(d)}}else c().error("Tags destination supported only in browser environment")}}},i.prototype.getCtx=function(t){var n=new Date,i=t.describeClient()||{},r=e({},this.userProperties),o=r.company||{};delete r.company;var s,a,c=e(e({event_id:"",user:e({anonymous_id:"strict"!==this.cookiePolicy?t.getAnonymousId({name:this.idCookieName,domain:this.cookieDomain,crossDomainLinking:this.crossDomainLinking}):""},r),ids:this._getIds(),utc_time:(s=n.toISOString(),a=s.split(".")[1],a?a.length>=7?s:s.slice(0,-1)+"0".repeat(7-a.length)+"Z":s),local_tz_offset:n.getTimezoneOffset()},i),function(e){var t={utm:{},click_id:{}};for(var n in e)if(e.hasOwnProperty(n)){var i=e[n],r=k[n];r?t.utm[r]=i:w[n]&&(t.click_id[n]=i)}return t}(function(e){if(!e)return{};for(var t=e.length>0&&"?"===e.charAt(0)?e.substring(1):e,n={},i=("?"===t[0]?t.substr(1):t).split("&"),r=0;r<i.length;r++){var o=i[r].split("=");n[decodeURIComponent(o[0])]=decodeURIComponent(o[1]||"")}return n}(i.doc_search)));return Object.keys(o).length&&(c.company=o),c},i.prototype._getIds=function(){if(!r())return{};for(var e=function(e){if(void 0===e&&(e=!1),e&&p)return p;var t=h(document.cookie);return p=t,t}(!1),t={},n=0,i=Object.entries(e);n<i.length;n++){var o=i[n],s=o[0],a=o[1];this._3pCookies[s]&&(t["_"==s.charAt(0)?s.substr(1):s]=a)}return t},i.prototype.pathMatches=function(e,t){return new URL(t).pathname.match(new RegExp("^"+e.trim().replace(/\*\*/g,".*").replace(/([^\.])\*/g,"$1[^\\s/]*")+"/?$"))},i.prototype.track=function(e,t){var n=this,i=t||{};c().debug("track event of type",e,i);var o=r()?me():ge(),s=this.getCtx(o);if(this.config&&this.config.exclude&&this.config.exclude.length>1&&(null==s?void 0:s.url)&&this.config.exclude.split(",").some((function(e){return n.pathMatches(e.trim(),null==s?void 0:s.url)})))return void c().debug("Page is excluded from tracking");var a=t||{};"$autocapture"!==e&&"user_identify"!==e&&"pageview"!==e&&"$pageleave"!==e&&(a={event_attributes:t});var u=this.makeEvent(e,this.compatMode?"eventn":"usermaven",a);return this.sendJson(u)},i.prototype.init=function(i){var o,l,p,h,f,m,g,v,y,_=this;if(r()&&!i.force_use_fetch)i.fetch&&c().warn("Custom fetch implementation is provided to Usermaven. However, it will be ignored since Usermaven runs in browser"),this.transport=this.beaconApi?ce:ve;else{if(!i.fetch&&!globalThis.fetch)throw new Error("Usermaven runs in Node environment. However, neither UsermavenOptions.fetch is provided, nor global fetch function is defined. \nPlease, provide custom fetch implementation. You can get it via node-fetch package");this.transport=(g=i.fetch||globalThis.fetch,function(i,r,o,s){return void 0===s&&(s=function(e,t){}),t(void 0,void 0,void 0,(function(){var t,a,u,l,p,d,h,f;return n(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,g(i,{method:"POST",headers:e({Accept:"application/json","Content-Type":"application/json"},o||{}),body:r})];case 1:return t=n.sent(),[3,3];case 2:return a=n.sent(),c().error("Failed to send data to "+i+": "+((null==a?void 0:a.message)||"unknown error"),r,a),s(-1,{}),[2];case 3:if(200!==t.status)return c().warn("Failed to send data to "+i+" (#"+t.status+" - "+t.statusText+")",r),s(t.status,{}),[2];u={},l="",p=null!==(f=null===(h=t.headers)||void 0===h?void 0:h.get("Content-Type"))&&void 0!==f?f:"",n.label=4;case 4:return n.trys.push([4,6,,7]),[4,t.text()];case 5:return l=n.sent(),u=JSON.parse(l),[3,7];case 6:return d=n.sent(),c().error("Failed to parse "+i+" response. Content-type: "+p+" text: "+l,d),[3,7];case 7:try{s(t.status,u)}catch(e){c().error("Failed to handle "+i+" response. Content-type: "+p+" text: "+l,e)}return[2]}}))}))})}if(i.custom_headers&&"function"==typeof i.custom_headers?this.customHeaders=i.custom_headers:i.custom_headers&&(this.customHeaders=function(){return i.custom_headers}),"echo"===i.tracking_host&&(c().warn('jitsuClient is configured with "echo" transport. Outgoing requests will be written to console'),this.transport=ue),i.ip_policy&&(this.ipPolicy=i.ip_policy),i.cookie_policy&&(this.cookiePolicy=i.cookie_policy),"strict"===i.privacy_policy&&(this.ipPolicy="strict",this.cookiePolicy="strict"),i.use_beacon_api&&navigator.sendBeacon&&(this.beaconApi=!0),"comply"===this.cookiePolicy&&this.beaconApi&&(this.cookiePolicy="strict"),i.log_level&&(v=i.log_level,(y=s[v.toLocaleUpperCase()])||(console.warn("Can't find log level with name "+v.toLocaleUpperCase()+", defaulting to INFO"),y=s.INFO),a=u(y)),this.initialOptions=i,c().debug("Initializing Usemaven Tracker tracker",i,se),i.key){if(this.compatMode=void 0!==i.compat_mode&&!!i.compat_mode,this.cookieDomain=i.cookie_domain||d(),this.namespace=i.namespace||"usermaven",this.crossDomainLinking=null===(o=i.cross_domain_linking)||void 0===o||o,this.formTracking=null!==(l=i.form_tracking)&&void 0!==l&&l,this.domains=i.domains?i.domains.split(",").map((function(e){return e.trim()})):[],this.trackingHost=function(e){for(;n="/",-1!==(t=e).indexOf(n,t.length-n.length);)e=e.substr(0,e.length-1);var t,n;return 0===e.indexOf("https://")||0===e.indexOf("http://")?e:"https://"+e}(i.tracking_host||"t.usermaven.com"),this.randomizeUrl=i.randomize_url||!1,this.apiKey=i.key,this.__auto_pageview_enabled=i.auto_pageview||!1,this.idCookieName=i.cookie_name||"__eventn_id_"+i.key,"strict"===this.cookiePolicy?this.propsPersistance=new de:this.propsPersistance=r()?new pe(this.cookieDomain,this.idCookieName+"_props"):new de,"strict"===this.cookiePolicy?this.userIdPersistence=new de:this.userIdPersistence=r()?new pe(this.cookieDomain,this.idCookieName+"_usr"):new de,this.propsPersistance){var b=this.propsPersistance.restore();b&&(this.permanentProperties=b,this.permanentProperties.globalProps=null!==(p=b.globalProps)&&void 0!==p?p:{},this.permanentProperties.propsPerEvent=null!==(h=b.propsPerEvent)&&void 0!==h?h:{}),c().debug("Restored persistent properties",this.permanentProperties)}this.propertyBlacklist=i.property_blacklist&&i.property_blacklist.length>0?i.property_blacklist:[];this.config=j({},{autocapture:!1,properties_string_max_length:null,property_blacklist:[],sanitize_properties:null,auto_pageview:!1},i||{},this.config||{},{token:this.apiKey}),c().debug("Default Configuration",this.config),this.manageAutoCapture(this.config),this.manageFormTracking(this.config),this.manageCrossDomainLinking({cross_domain_linking:this.crossDomainLinking,domains:this.domains,cookiePolicy:this.cookiePolicy}),!1===i.capture_3rd_party_cookies?this._3pCookies={}:(i.capture_3rd_party_cookies||["_ga","_fbp","_ym_uid","ajs_user_id","ajs_anonymous_id"]).forEach((function(e){return _._3pCookies[e]=!0})),i.ga_hook&&c().warn("GA event interceptor isn't supported anymore"),i.segment_hook&&function(e){var t=window;t.analytics||(t.analytics=[]);e.interceptAnalytics(t.analytics)}(this),r()&&(i.disable_event_persistence||(this.queue=new S(this.namespace+"-event-queue"),this.scheduleFlush(0)),window.addEventListener("beforeunload",(function(){return _.flush()}))),this.__auto_pageview_enabled&&function(e){var t=function(){return e.track("pageview")},n=history.pushState;n&&(history.pushState=function(e,i,r){n.apply(this,[e,i,r]),t()},addEventListener("popstate",t));addEventListener("hashchange",t)}(this),this.retryTimeout=[null!==(f=i.min_send_timeout)&&void 0!==f?f:this.retryTimeout[0],null!==(m=i.max_send_timeout)&&void 0!==m?m:this.retryTimeout[1]],i.max_send_attempts&&(this.maxSendAttempts=i.max_send_attempts),this.initialized=!0}else c().error("Can't initialize Usemaven, key property is not set")},i.prototype.interceptAnalytics=function(t){var n=this,i=function(t){var i;try{var r=e({},t.payload);c().debug("Intercepted segment payload",r.obj);var o=t.integrations["Segment.io"];if(o&&o.analytics){var s=o.analytics;"function"==typeof s.user&&s.user()&&"function"==typeof s.user().id&&(r.obj.userId=s.user().id())}(null===(i=null==r?void 0:r.obj)||void 0===i?void 0:i.timestamp)&&(r.obj.sentAt=r.obj.timestamp);var a=t.payload.type();"track"===a&&(a=t.payload.event()),n._send3p("ajs",r,a)}catch(e){c().warn("Failed to send an event",e)}t.next(t.payload)};"function"==typeof t.addSourceMiddleware?(c().debug("Analytics.js is initialized, calling addSourceMiddleware"),t.addSourceMiddleware(i)):(c().debug("Analytics.js is not initialized, pushing addSourceMiddleware to callstack"),t.push(["addSourceMiddleware",i])),t.__en_intercepted=!0},i.prototype.restoreId=function(){if(this.userIdPersistence){var t=this.userIdPersistence.restore();t&&(this.userProperties=e(e({},t),this.userProperties))}},i.prototype.set=function(t,n){var i,r=null==n?void 0:n.eventType,o=void 0===(null==n?void 0:n.persist)||(null==n?void 0:n.persist);if(void 0!==r){var s=null!==(i=this.permanentProperties.propsPerEvent[r])&&void 0!==i?i:{};this.permanentProperties.propsPerEvent[r]=e(e({},s),t)}else this.permanentProperties.globalProps=e(e({},this.permanentProperties.globalProps),t);this.propsPersistance&&o&&this.propsPersistance.save(this.permanentProperties)},i.prototype.unset=function(e,t){o();var n=null==t?void 0:t.eventType,i=void 0===(null==t?void 0:t.persist)||(null==t?void 0:t.persist);n?this.permanentProperties.propsPerEvent[n]&&delete this.permanentProperties.propsPerEvent[n][e]:delete this.permanentProperties.globalProps[e],this.propsPersistance&&i&&this.propsPersistance.save(this.permanentProperties)},i.prototype.manageCrossDomainLinking=function(e){if(!r()||!e.cross_domain_linking||0===e.domains.length||"strict"===e.cookiePolicy)return!1;var t=this.idCookieName,n=e.domains||[];document.addEventListener("click",(function(e){var i=function(e){for(;e&&e.tagName;){if("a"==e.tagName.toLowerCase())return e;e=e.parentNode}return null}(e.target);if(i){var r=(null==i?void 0:i.hasAttribute("href"))?null==i?void 0:i.getAttribute("href"):"";if(r&&r.startsWith("http")){var o=new URL(r),s=g(t);if(o.hostname===window.location.hostname)return;n.includes(o.hostname)&&s&&(o.searchParams.append("_um",s),i.setAttribute("href",o.toString()))}}}),!1)},i.prototype.manageAutoCapture=function(e){if(c().debug("Auto Capture Status: ",this.config.autocapture),this.__autocapture_enabled=this.config.autocapture&&r(),this.__autocapture_enabled){ie.enabledForProject(this.apiKey,100,100)?ie.isBrowserSupported()?(c().debug("Autocapture enabled..."),ie.init(this,e)):(this.config.autocapture=!1,this.__autocapture_enabled=!1,c().debug("Disabling Automatic Event Collection because this browser is not supported")):(this.config.autocapture=!1,this.__autocapture_enabled=!1,c().debug("Not in active bucket: disabling Automatic Event Collection."))}},i.prototype.manageFormTracking=function(e){if(r()&&this.formTracking&&"none"!==this.formTracking){c().debug("Form tracking enabled...");var t=!0===this.formTracking?"all":this.formTracking;re.getInstance(this,t).track()}},i.prototype.capture=function(e,t){var n,i;if(void 0===t&&(t={}),this.initialized)if($(e)||"string"!=typeof e)console.error("No event name provided to usermaven.capture");else{var r={event:e+(t.$event_type?"_"+t.$event_type:""),properties:this._calculate_event_properties(e,t)};(null===(i=null===(n=(r=J(r,this.get_config("properties_string_max_length"))).properties)||void 0===n?void 0:n.autocapture_attributes)||void 0===i?void 0:i.tag_name)&&this.track("$autocapture",r.properties),"$scroll"===e&&this.track(e,r.properties),"$form"===e&&this.track(e,r.properties)}else console.error("Trying to capture event before initialization")},i.prototype._calculate_event_properties=function(e,t){var n,i,r=t||{};if("$snapshot"===e||"$scroll"===e||"$form"===e)return r;T(this.propertyBlacklist)?L(this.propertyBlacklist,(function(e){delete r[e]})):console.error("Invalid value for property_blacklist config: "+this.propertyBlacklist);var o={},s=r.$elements||[];return s.length&&(o=s[0]),r.autocapture_attributes=o,r.autocapture_attributes.el_text=null!==(n=r.autocapture_attributes.$el_text)&&void 0!==n?n:"",r.autocapture_attributes.event_type=null!==(i=r.$event_type)&&void 0!==i?i:"",["$ce_version","$event_type","$initial_referrer","$initial_referring_domain","$referrer","$referring_domain","$elements"].forEach((function(e){delete r[e]})),delete r.autocapture_attributes.$el_text,delete r.autocapture_attributes.nth_child,delete r.autocapture_attributes.nth_of_type,r},i}();var _e="lib.js",be=["use_beacon_api","cookie_domain","tracking_host","cookie_name","key","ga_hook","segment_hook","randomize_url","capture_3rd_party_cookies","id_method","log_level","compat_mode","privacy_policy","cookie_policy","ip_policy","custom_headers","force_use_fetch","min_send_timeout","max_send_timeout","max_send_attempts","disable_event_persistence","project_id","autocapture","properties_string_max_length","property_blacklist","exclude","auto_pageview","namespace","cross_domain_linking","domains","form_tracking"];var ke="data-suppress-interception-warning";function we(e){return"\n ATTENTION! "+e+"-hook set to true along with defer/async attribute! If "+e+" code is inserted right after Usermaven tag,\n first tracking call might not be intercepted! Consider one of the following:\n - Inject usermaven tracking code without defer/async attribute\n - If you're sure that events won't be sent to "+e+" before Usermaven is fully initialized, set "+ke+'="true"\n script attribute\n '}function Pe(e){var t=document.currentScript;if(t){var n,i={tracking_host:(n=t.getAttribute("src"),n.replace("/s/"+_e,"").replace("/"+_e,"")),key:null},r=t.getAttribute("data-namespace")||"usermaven";be.forEach((function(e){var n="data-"+e.replace(new RegExp("_","g"),"-");if(void 0!==t.getAttribute(n)&&null!==t.getAttribute(n)){var r=t.getAttribute(n);"true"===r?r=!0:"false"===r&&(r=!1),i[e]=r}}));var o=r+"Client";e[o]=function(e){var t=new ye;return t.init(e),t}(i),!i.segment_hook||null===t.getAttribute("defer")&&null===t.getAttribute("async")||null!==t.getAttribute(ke)||c().warn(we("segment")),!i.ga_hook||null===t.getAttribute("defer")&&null===t.getAttribute("async")||null!==t.getAttribute(ke)||c().warn(we("ga")),!function(t,n,i){e[t]=function(){var i=e[t+"Q"]=e[t+"Q"]||[];i.push(arguments),Se(i,e[n])}}(r,o),i.project_id&&e[r]("set",{project_id:i.project_id}),"true"!==t.getAttribute("data-init-only")&&"yes"!==t.getAttribute("data-init-only")&&e[r]("track","pageview");var s="beforeunload";return(navigator.userAgent.match(/iPad/i)||navigator.userAgent.match(/iPhone/i))&&(s="pagehide"),e.addEventListener(s,(function(){e[r]("track","$pageleave")})),e[o]}c().warn("Usermaven script is not properly initialized. The definition must contain data-usermaven-api-key as a parameter")}function Se(e,t){c().debug("Processing queue",e);for(var n=0;n<e.length;n+=1){var r=i([],e[n],!0)||[],o=r[0],s=r.slice(1),a=t[o];"function"==typeof a&&a.apply(t,s)}e.length=0}!function(e){if(window){var t=window,n=e,i=Pe(t);i?(c().debug("Usermaven in-browser tracker has been initialized",n),t[n]=function(){var e=t[n+"Q"]=t[n+"Q"]||[];e.push(arguments),Se(e,i)},t[n+"Q"]&&(c().debug("Initial queue size of "+t[n+"Q"].length+" will be processed"),Se(t[n+"Q"],i))):c().error("Usermaven tracker has not been initialized (reason unknown)")}else c().warn("Usermaven tracker called outside browser context. It will be ignored")}(document.currentScript.getAttribute("data-namespace")||"usermaven")}();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usermaven/sdk-js",
3
- "version": "1.3.3",
3
+ "version": "1.4.0",
4
4
  "description": "Usermaven JavaScript SDK.",
5
5
  "main": "dist/npm/usermaven.cjs.js",
6
6
  "module": "dist/npm/usermaven.es.js",