@amplitude/plugin-autocapture-browser 1.8.0 → 1.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"amplitude-min.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../../analytics-core/lib/esm/types/element-interactions.js","../../../analytics-remote-config/node_modules/@amplitude/analytics-types/lib/esm/server-zone.js","../../../analytics-remote-config/node_modules/@amplitude/analytics-types/lib/esm/status.js","../../../analytics-core/lib/esm/types/frustration-interactions.js","../../../analytics-remote-config/node_modules/@amplitude/analytics-core/lib/esm/transports/base.js","../../../analytics-remote-config/lib/esm/remote-config.js","../../../analytics-remote-config/lib/esm/index.js","../../../src/constants.ts","../../../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../../node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../../node_modules/rxjs/dist/esm5/internal/config.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../../../../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/identity.js","../../../../node_modules/rxjs/dist/esm5/internal/Observable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/pipe.js","../../../../node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/refCount.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/performanceTimestampProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/dom/animationFrames.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../../../../node_modules/rxjs/dist/esm5/internal/Subject.js","../../../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../../../../node_modules/rxjs/dist/esm5/internal/AsyncSubject.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../../../../node_modules/rxjs/dist/esm5/internal/util/Immediate.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/immediateProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapAction.js","../../../../node_modules/rxjs/dist/esm5/internal/Scheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/asap.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueAction.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/queue.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameAction.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrame.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/VirtualTimeScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/empty.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/util/args.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../../../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../../../../node_modules/rxjs/dist/esm5/internal/Notification.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../../../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/from.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isDate.js","../../../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/SequenceError.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/timeout.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/map.js","../../../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/concat.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/timer.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/never.js","../../../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/race.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/take.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/share.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/throttle.js","../../../src/hierarchy.ts","../../../src/helpers.ts","../../../src/pageActions/actions.ts","../../../src/libs/messenger.ts","../../../src/autocapture/track-click.ts","../../../../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/buffer.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/pairwise.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/delay.js","../../../src/autocapture/track-action-click.ts","../../../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../../../src/observables.ts","../../../src/autocapture-plugin.ts","../../../src/pageActions/triggers.ts","../../../src/pageActions/matchEventToFilter.ts","../../../src/autocapture/track-change.ts","../../../src/frustration-plugin.ts","../../../src/autocapture/track-rage-click.ts","../../../src/autocapture/track-dead-click.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/**\n * Default CSS selectors to define which elements on the page to track.\n * Extend this list to include additional elements to track. For example:\n * ```\n * autocapturePlugin({\n * cssSelectorAllowlist: [...DEFAULT_CSS_SELECTOR_ALLOWLIST, \".my-class\"],\n * })\n * ```\n */\nexport var DEFAULT_CSS_SELECTOR_ALLOWLIST = [\n 'a',\n 'button',\n 'input',\n 'select',\n 'textarea',\n 'label',\n 'video',\n 'audio',\n '[contenteditable=\"true\" i]',\n '[data-amp-default-track]',\n '.amp-default-track',\n];\n/**\n * Default prefix to allow the plugin to capture data attributes as an event property.\n */\nexport var DEFAULT_DATA_ATTRIBUTE_PREFIX = 'data-amp-track-';\n/**\n * Default list of elements on the page should be tracked when the page changes.\n */\nexport var DEFAULT_ACTION_CLICK_ALLOWLIST = ['div', 'span', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n//# sourceMappingURL=element-interactions.js.map","export var ServerZone;\n(function (ServerZone) {\n ServerZone[\"US\"] = \"US\";\n ServerZone[\"EU\"] = \"EU\";\n ServerZone[\"STAGING\"] = \"STAGING\";\n})(ServerZone || (ServerZone = {}));\n//# sourceMappingURL=server-zone.js.map","/** The status of an event. */\nexport var Status;\n(function (Status) {\n /** The status could not be determined. */\n Status[\"Unknown\"] = \"unknown\";\n /** The event was skipped due to configuration or callbacks. */\n Status[\"Skipped\"] = \"skipped\";\n /** The event was sent successfully. */\n Status[\"Success\"] = \"success\";\n /** A user or device in the payload is currently rate limited and should try again later. */\n Status[\"RateLimit\"] = \"rate_limit\";\n /** The sent payload was too large to be processed. */\n Status[\"PayloadTooLarge\"] = \"payload_too_large\";\n /** The event could not be processed. */\n Status[\"Invalid\"] = \"invalid\";\n /** A server-side error ocurred during submission. */\n Status[\"Failed\"] = \"failed\";\n /** a server or client side error occuring when a request takes too long and is cancelled */\n Status[\"Timeout\"] = \"Timeout\";\n /** NodeJS runtime environment error.. E.g. disconnected from network */\n Status[\"SystemError\"] = \"SystemError\";\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","import { __read, __spreadArray } from \"tslib\";\nvar CLICKABLE_ELEMENT_SELECTORS = [\n 'a',\n 'button',\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[role=\"menuitem\"]',\n '[role=\"menuitemcheckbox\"]',\n '[role=\"menuitemradio\"]',\n '[role=\"option\"]',\n '[role=\"tab\"]',\n '[role=\"treeitem\"]',\n '[contenteditable=\"true\" i]',\n];\n/**\n * Default CSS selectors for dead clicks tracking\n */\nexport var DEFAULT_DEAD_CLICK_ALLOWLIST = __spreadArray([\n 'input[type=\"button\"]',\n 'input[type=\"submit\"]',\n 'input[type=\"reset\"]',\n 'input[type=\"image\"]',\n 'input[type=\"file\"]'\n], __read(CLICKABLE_ELEMENT_SELECTORS), false);\n/**\n * Default CSS selectors for rage clicks tracking\n */\nexport var DEFAULT_RAGE_CLICK_ALLOWLIST = ['*'];\n/**\n * Default time window for dead clicks (3 seconds)\n */\nexport var DEFAULT_DEAD_CLICK_WINDOW_MS = 3000;\n/**\n * Default time window for rage clicks (1 second)\n */\nexport var DEFAULT_RAGE_CLICK_WINDOW_MS = 1000;\n/**\n * Default threshold for rage clicks (4 clicks)\n */\nexport var DEFAULT_RAGE_CLICK_THRESHOLD = 4;\n//# sourceMappingURL=frustration-interactions.js.map","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport { Status } from '@amplitude/analytics-types';\nvar BaseTransport = /** @class */ (function () {\n function BaseTransport() {\n }\n BaseTransport.prototype.send = function (_serverUrl, _payload) {\n return Promise.resolve(null);\n };\n BaseTransport.prototype.buildResponse = function (responseJSON) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;\n if (typeof responseJSON !== 'object') {\n return null;\n }\n var statusCode = responseJSON.code || 0;\n var status = this.buildStatus(statusCode);\n switch (status) {\n case Status.Success:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n eventsIngested: (_a = responseJSON.events_ingested) !== null && _a !== void 0 ? _a : 0,\n payloadSizeBytes: (_b = responseJSON.payload_size_bytes) !== null && _b !== void 0 ? _b : 0,\n serverUploadTime: (_c = responseJSON.server_upload_time) !== null && _c !== void 0 ? _c : 0,\n },\n };\n case Status.Invalid:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_d = responseJSON.error) !== null && _d !== void 0 ? _d : '',\n missingField: (_e = responseJSON.missing_field) !== null && _e !== void 0 ? _e : '',\n eventsWithInvalidFields: (_f = responseJSON.events_with_invalid_fields) !== null && _f !== void 0 ? _f : {},\n eventsWithMissingFields: (_g = responseJSON.events_with_missing_fields) !== null && _g !== void 0 ? _g : {},\n eventsWithInvalidIdLengths: (_h = responseJSON.events_with_invalid_id_lengths) !== null && _h !== void 0 ? _h : {},\n epsThreshold: (_j = responseJSON.eps_threshold) !== null && _j !== void 0 ? _j : 0,\n exceededDailyQuotaDevices: (_k = responseJSON.exceeded_daily_quota_devices) !== null && _k !== void 0 ? _k : {},\n silencedDevices: (_l = responseJSON.silenced_devices) !== null && _l !== void 0 ? _l : [],\n silencedEvents: (_m = responseJSON.silenced_events) !== null && _m !== void 0 ? _m : [],\n throttledDevices: (_o = responseJSON.throttled_devices) !== null && _o !== void 0 ? _o : {},\n throttledEvents: (_p = responseJSON.throttled_events) !== null && _p !== void 0 ? _p : [],\n },\n };\n case Status.PayloadTooLarge:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_q = responseJSON.error) !== null && _q !== void 0 ? _q : '',\n },\n };\n case Status.RateLimit:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_r = responseJSON.error) !== null && _r !== void 0 ? _r : '',\n epsThreshold: (_s = responseJSON.eps_threshold) !== null && _s !== void 0 ? _s : 0,\n throttledDevices: (_t = responseJSON.throttled_devices) !== null && _t !== void 0 ? _t : {},\n throttledUsers: (_u = responseJSON.throttled_users) !== null && _u !== void 0 ? _u : {},\n exceededDailyQuotaDevices: (_v = responseJSON.exceeded_daily_quota_devices) !== null && _v !== void 0 ? _v : {},\n exceededDailyQuotaUsers: (_w = responseJSON.exceeded_daily_quota_users) !== null && _w !== void 0 ? _w : {},\n throttledEvents: (_x = responseJSON.throttled_events) !== null && _x !== void 0 ? _x : [],\n },\n };\n case Status.Timeout:\n default:\n return {\n status: status,\n statusCode: statusCode,\n };\n }\n };\n BaseTransport.prototype.buildStatus = function (code) {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n if (code === 429) {\n return Status.RateLimit;\n }\n if (code === 413) {\n return Status.PayloadTooLarge;\n }\n if (code === 408) {\n return Status.Timeout;\n }\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n if (code >= 500) {\n return Status.Failed;\n }\n return Status.Unknown;\n };\n return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","import { __assign, __awaiter, __generator, __values } from \"tslib\";\nimport { BaseTransport } from '@amplitude/analytics-core';\nimport { ServerZone, Status } from '@amplitude/analytics-types';\nvar UNEXPECTED_NETWORK_ERROR_MESSAGE = 'Network error occurred, remote config fetch failed';\nvar SUCCESS_REMOTE_CONFIG = 'Remote config successfully fetched';\nvar MAX_RETRIES_EXCEEDED_MESSAGE = 'Remote config fetch rejected due to exceeded retry count';\nvar TIMEOUT_MESSAGE = 'Remote config fetch rejected due to timeout after 5 seconds';\nvar UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport var REMOTE_CONFIG_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';\nexport var REMOTE_CONFIG_SERVER_URL_STAGING = 'https://sr-client-cfg.stag2.amplitude.com/config';\nexport var REMOTE_CONFIG_SERVER_URL_EU = 'https://sr-client-cfg.eu.amplitude.com/config';\nvar RemoteConfigFetch = /** @class */ (function () {\n function RemoteConfigFetch(_a) {\n var localConfig = _a.localConfig, configKeys = _a.configKeys;\n var _this = this;\n this.retryTimeout = 1000;\n this.attempts = 0;\n this.sessionTargetingMatch = false;\n this.metrics = {};\n this.getRemoteNamespaceConfig = function (configNamespace, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var fetchStartTime, configAPIResponse, remoteConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n fetchStartTime = Date.now();\n return [4 /*yield*/, this.fetchWithTimeout(sessionId)];\n case 1:\n configAPIResponse = _a.sent();\n if (configAPIResponse) {\n remoteConfig = configAPIResponse.configs && configAPIResponse.configs[configNamespace];\n if (remoteConfig) {\n this.metrics.fetchTimeAPISuccess = Date.now() - fetchStartTime;\n return [2 /*return*/, remoteConfig];\n }\n }\n this.metrics.fetchTimeAPIFail = Date.now() - fetchStartTime;\n return [2 /*return*/, undefined];\n }\n });\n }); };\n this.getRemoteConfig = function (configNamespace, key, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var namespaceConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getRemoteNamespaceConfig(configNamespace, sessionId)];\n case 1:\n namespaceConfig = _a.sent();\n return [2 /*return*/, namespaceConfig === null || namespaceConfig === void 0 ? void 0 : namespaceConfig[key]];\n }\n });\n }); };\n this.fetchWithTimeout = function (sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var controller, timeoutId, remoteConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n controller = new AbortController();\n timeoutId = setTimeout(function () { return controller.abort(); }, 5000);\n return [4 /*yield*/, this.fetchRemoteConfig(controller.signal, sessionId)];\n case 1:\n remoteConfig = _a.sent();\n clearTimeout(timeoutId);\n return [2 /*return*/, remoteConfig];\n }\n });\n }); };\n this.fetchRemoteConfig = function (signal, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var urlParams, _a, _b, configKey, options, serverUrl, res, parsedStatus, e_1, knownError;\n var e_2, _c;\n var _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (sessionId === this.lastFetchedSessionId && this.attempts >= this.localConfig.flushMaxRetries) {\n return [2 /*return*/, this.completeRequest({ err: MAX_RETRIES_EXCEEDED_MESSAGE })];\n }\n else if (signal.aborted) {\n return [2 /*return*/, this.completeRequest({ err: TIMEOUT_MESSAGE })];\n }\n else if (sessionId !== this.lastFetchedSessionId) {\n this.lastFetchedSessionId = sessionId;\n this.attempts = 0;\n }\n _e.label = 1;\n case 1:\n _e.trys.push([1, 3, , 4]);\n urlParams = new URLSearchParams({\n api_key: this.localConfig.apiKey,\n });\n try {\n for (_a = __values(this.configKeys), _b = _a.next(); !_b.done; _b = _a.next()) {\n configKey = _b.value;\n urlParams.append('config_keys', configKey);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (sessionId) {\n urlParams.set('session_id', String(sessionId));\n }\n options = {\n headers: {\n Accept: '*/*',\n },\n method: 'GET',\n };\n serverUrl = \"\".concat(this.getServerUrl(), \"?\").concat(urlParams.toString());\n this.attempts += 1;\n return [4 /*yield*/, fetch(serverUrl, __assign(__assign({}, options), { signal: signal }))];\n case 2:\n res = _e.sent();\n if (res === null) {\n return [2 /*return*/, this.completeRequest({ err: UNEXPECTED_ERROR_MESSAGE })];\n }\n parsedStatus = new BaseTransport().buildStatus(res.status);\n switch (parsedStatus) {\n case Status.Success:\n this.attempts = 0;\n return [2 /*return*/, this.parseAndStoreConfig(res)];\n case Status.Failed:\n return [2 /*return*/, this.retryFetch(signal, sessionId)];\n default:\n return [2 /*return*/, this.completeRequest({ err: UNEXPECTED_NETWORK_ERROR_MESSAGE })];\n }\n return [3 /*break*/, 4];\n case 3:\n e_1 = _e.sent();\n knownError = e_1;\n if (signal.aborted) {\n return [2 /*return*/, this.completeRequest({ err: TIMEOUT_MESSAGE })];\n }\n return [2 /*return*/, this.completeRequest({ err: (_d = knownError.message) !== null && _d !== void 0 ? _d : UNEXPECTED_ERROR_MESSAGE })];\n case 4: return [2 /*return*/];\n }\n });\n }); };\n this.retryFetch = function (signal, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, _this.attempts * _this.retryTimeout); })];\n case 1:\n _a.sent();\n return [2 /*return*/, this.fetchRemoteConfig(signal, sessionId)];\n }\n });\n }); };\n this.parseAndStoreConfig = function (res) { return __awaiter(_this, void 0, void 0, function () {\n var remoteConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, res.json()];\n case 1:\n remoteConfig = (_a.sent());\n this.completeRequest({ success: SUCCESS_REMOTE_CONFIG });\n return [2 /*return*/, remoteConfig];\n }\n });\n }); };\n this.localConfig = localConfig;\n this.configKeys = configKeys;\n }\n RemoteConfigFetch.prototype.getServerUrl = function () {\n if (this.localConfig.configServerUrl) {\n return this.localConfig.configServerUrl;\n }\n if (this.localConfig.serverZone === ServerZone.STAGING) {\n return REMOTE_CONFIG_SERVER_URL_STAGING;\n }\n if (this.localConfig.serverZone === ServerZone.EU) {\n return REMOTE_CONFIG_SERVER_URL_EU;\n }\n return REMOTE_CONFIG_SERVER_URL;\n };\n RemoteConfigFetch.prototype.completeRequest = function (_a) {\n var err = _a.err, success = _a.success;\n if (err) {\n throw new Error(err);\n }\n else if (success) {\n this.localConfig.loggerProvider.log(success);\n }\n };\n return RemoteConfigFetch;\n}());\nexport { RemoteConfigFetch };\nexport var createRemoteConfigFetch = function (_a) {\n var localConfig = _a.localConfig, configKeys = _a.configKeys;\n return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_b) {\n return [2 /*return*/, new RemoteConfigFetch({ localConfig: localConfig, configKeys: configKeys })];\n });\n });\n};\n//# sourceMappingURL=remote-config.js.map","import * as remoteConfigFetch from './remote-config';\nexport var createRemoteConfigFetch = remoteConfigFetch.createRemoteConfigFetch;\n//# sourceMappingURL=index.js.map","export const PLUGIN_NAME = '@amplitude/plugin-autocapture-browser';\nexport const FRUSTRATION_PLUGIN_NAME = '@amplitude/plugin-frustration-browser';\n\nexport const AMPLITUDE_ELEMENT_CLICKED_EVENT = '[Amplitude] Element Clicked';\nexport const AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT = '[Amplitude] Dead Click';\nexport const AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT = '[Amplitude] Rage Click';\nexport const AMPLITUDE_ELEMENT_CHANGED_EVENT = '[Amplitude] Element Changed';\n\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_ID = '[Amplitude] Element ID';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_CLASS = '[Amplitude] Element Class';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_TAG = '[Amplitude] Element Tag';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_TEXT = '[Amplitude] Element Text';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_HIERARCHY = '[Amplitude] Element Hierarchy';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_HREF = '[Amplitude] Element Href';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT = '[Amplitude] Element Position Left';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP = '[Amplitude] Element Position Top';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL = '[Amplitude] Element Aria Label';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES = '[Amplitude] Element Attributes';\n\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL = '[Amplitude] Element Parent Label';\nexport const AMPLITUDE_EVENT_PROP_PAGE_URL = '[Amplitude] Page URL';\nexport const AMPLITUDE_EVENT_PROP_PAGE_TITLE = '[Amplitude] Page Title';\nexport const AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT = '[Amplitude] Viewport Height';\nexport const AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH = '[Amplitude] Viewport Width';\n\n// Visual Tagging related constants\nexport const AMPLITUDE_ORIGIN = 'https://app.amplitude.com';\nexport const AMPLITUDE_ORIGIN_EU = 'https://app.eu.amplitude.com';\nexport const AMPLITUDE_ORIGIN_STAGING = 'https://apps.stag2.amplitude.com';\nexport const AMPLITUDE_ORIGINS_MAP = {\n US: AMPLITUDE_ORIGIN,\n EU: AMPLITUDE_ORIGIN_EU,\n STAGING: AMPLITUDE_ORIGIN_STAGING,\n};\n\nexport const AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL =\n 'https://cdn.amplitude.com/libs/visual-tagging-selector-1.0.0-alpha.js.gz';\n// This is the class name used by the visual tagging selector to highlight the selected element.\n// Should not use this class in the selector.\nexport const AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS = 'amp-visual-tagging-selector-highlight';\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { __extends } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { hasLift } from '../util/lift';\nvar ConnectableObservable = (function (_super) {\n __extends(ConnectableObservable, _super);\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._subject = null;\n _this._refCount = 0;\n _this._connection = null;\n if (hasLift(source)) {\n _this.lift = source.lift;\n }\n return _this;\n }\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n };\n ConnectableObservable.prototype._teardown = function () {\n this._refCount = 0;\n var _connection = this._connection;\n this._subject = this._connection = null;\n _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();\n };\n ConnectableObservable.prototype.connect = function () {\n var _this = this;\n var connection = this._connection;\n if (!connection) {\n connection = this._connection = new Subscription();\n var subject_1 = this.getSubject();\n connection.add(this.source.subscribe(createOperatorSubscriber(subject_1, undefined, function () {\n _this._teardown();\n subject_1.complete();\n }, function (err) {\n _this._teardown();\n subject_1.error(err);\n }, function () { return _this._teardown(); })));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return higherOrderRefCount()(this);\n };\n return ConnectableObservable;\n}(Observable));\nexport { ConnectableObservable };\n//# sourceMappingURL=ConnectableObservable.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function refCount() {\n return operate(function (source, subscriber) {\n var connection = null;\n source._refCount++;\n var refCounter = createOperatorSubscriber(subscriber, undefined, undefined, undefined, function () {\n if (!source || source._refCount <= 0 || 0 < --source._refCount) {\n connection = null;\n return;\n }\n var sharedConnection = source._connection;\n var conn = connection;\n connection = null;\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n subscriber.unsubscribe();\n });\n source.subscribe(refCounter);\n if (!refCounter.closed) {\n connection = source.connect();\n }\n });\n}\n//# sourceMappingURL=refCount.js.map","export var performanceTimestampProvider = {\n now: function () {\n return (performanceTimestampProvider.delegate || performance).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=performanceTimestampProvider.js.map","import { Observable } from '../../Observable';\nimport { performanceTimestampProvider } from '../../scheduler/performanceTimestampProvider';\nimport { animationFrameProvider } from '../../scheduler/animationFrameProvider';\nexport function animationFrames(timestampProvider) {\n return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;\n}\nfunction animationFramesFactory(timestampProvider) {\n return new Observable(function (subscriber) {\n var provider = timestampProvider || performanceTimestampProvider;\n var start = provider.now();\n var id = 0;\n var run = function () {\n if (!subscriber.closed) {\n id = animationFrameProvider.requestAnimationFrame(function (timestamp) {\n id = 0;\n var now = provider.now();\n subscriber.next({\n timestamp: timestampProvider ? now : timestamp,\n elapsed: now - start,\n });\n run();\n });\n }\n };\n run();\n return function () {\n if (id) {\n animationFrameProvider.cancelAnimationFrame(id);\n }\n };\n });\n}\nvar DEFAULT_ANIMATION_FRAMES = animationFramesFactory();\n//# sourceMappingURL=animationFrames.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Subscription } from '../Subscription';\nexport var animationFrameProvider = {\n schedule: function (callback) {\n var request = requestAnimationFrame;\n var cancel = cancelAnimationFrame;\n var delegate = animationFrameProvider.delegate;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n var handle = request(function (timestamp) {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(function () { return cancel === null || cancel === void 0 ? void 0 : cancel(handle); });\n },\n requestAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n cancelAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n delegate: undefined,\n};\n//# sourceMappingURL=animationFrameProvider.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar AsyncSubject = (function (_super) {\n __extends(AsyncSubject, _super);\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._value = null;\n _this._hasValue = false;\n _this._isComplete = false;\n return _this;\n }\n AsyncSubject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, _hasValue = _a._hasValue, _value = _a._value, thrownError = _a.thrownError, isStopped = _a.isStopped, _isComplete = _a._isComplete;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped || _isComplete) {\n _hasValue && subscriber.next(_value);\n subscriber.complete();\n }\n };\n AsyncSubject.prototype.next = function (value) {\n if (!this.isStopped) {\n this._value = value;\n this._hasValue = true;\n }\n };\n AsyncSubject.prototype.complete = function () {\n var _a = this, _hasValue = _a._hasValue, _value = _a._value, _isComplete = _a._isComplete;\n if (!_isComplete) {\n this._isComplete = true;\n _hasValue && _super.prototype.next.call(this, _value);\n _super.prototype.complete.call(this);\n }\n };\n return AsyncSubject;\n}(Subject));\nexport { AsyncSubject };\n//# sourceMappingURL=AsyncSubject.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","var nextHandle = 1;\nvar resolved;\nvar activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport var Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(function () { return findAndClearHandle(handle) && cb(); });\n return handle;\n },\n clearImmediate: function (handle) {\n findAndClearHandle(handle);\n },\n};\nexport var TestTools = {\n pending: function () {\n return Object.keys(activeHandles).length;\n }\n};\n//# sourceMappingURL=Immediate.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n setInterval: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Immediate } from '../util/Immediate';\nvar setImmediate = Immediate.setImmediate, clearImmediate = Immediate.clearImmediate;\nexport var immediateProvider = {\n setImmediate: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, __spreadArray([], __read(args)));\n },\n clearImmediate: function (handle) {\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=immediateProvider.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { immediateProvider } from './immediateProvider';\nvar AsapAction = (function (_super) {\n __extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n immediateProvider.clearImmediate(id);\n if (scheduler._scheduled === id) {\n scheduler._scheduled = undefined;\n }\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction));\nexport { AsapAction };\n//# sourceMappingURL=AsapAction.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AsapScheduler = (function (_super) {\n __extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId = this._scheduled;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler));\nexport { AsapScheduler };\n//# sourceMappingURL=AsapScheduler.js.map","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport var asapScheduler = new AsapScheduler(AsapAction);\nexport var asap = asapScheduler;\n//# sourceMappingURL=asap.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar QueueAction = (function (_super) {\n __extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return delay > 0 || this.closed ? _super.prototype.execute.call(this, state, delay) : this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.flush(this);\n return 0;\n };\n return QueueAction;\n}(AsyncAction));\nexport { QueueAction };\n//# sourceMappingURL=QueueAction.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar QueueScheduler = (function (_super) {\n __extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler));\nexport { QueueScheduler };\n//# sourceMappingURL=QueueScheduler.js.map","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport var queueScheduler = new QueueScheduler(QueueAction);\nexport var queue = queueScheduler;\n//# sourceMappingURL=queue.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { animationFrameProvider } from './animationFrameProvider';\nvar AnimationFrameAction = (function (_super) {\n __extends(AnimationFrameAction, _super);\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(function () { return scheduler.flush(undefined); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && id === scheduler._scheduled && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction));\nexport { AnimationFrameAction };\n//# sourceMappingURL=AnimationFrameAction.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AnimationFrameScheduler = (function (_super) {\n __extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId;\n if (action) {\n flushId = action.id;\n }\n else {\n flushId = this._scheduled;\n this._scheduled = undefined;\n }\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler));\nexport { AnimationFrameScheduler };\n//# sourceMappingURL=AnimationFrameScheduler.js.map","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport var animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nexport var animationFrame = animationFrameScheduler;\n//# sourceMappingURL=animationFrame.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nvar VirtualTimeScheduler = (function (_super) {\n __extends(VirtualTimeScheduler, _super);\n function VirtualTimeScheduler(schedulerActionCtor, maxFrames) {\n if (schedulerActionCtor === void 0) { schedulerActionCtor = VirtualAction; }\n if (maxFrames === void 0) { maxFrames = Infinity; }\n var _this = _super.call(this, schedulerActionCtor, function () { return _this.frame; }) || this;\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n var error;\n var action;\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n }\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler));\nexport { VirtualTimeScheduler };\nvar VirtualAction = (function (_super) {\n __extends(VirtualAction, _super);\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) { index = (scheduler.index += 1); }\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (Number.isFinite(delay)) {\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n }\n else {\n return Subscription.EMPTY;\n }\n };\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return 1;\n };\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n return undefined;\n };\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n }\n else if (a.index > b.index) {\n return 1;\n }\n else {\n return -1;\n }\n }\n else if (a.delay > b.delay) {\n return 1;\n }\n else {\n return -1;\n }\n };\n return VirtualAction;\n}(AsyncAction));\nexport { VirtualAction };\n//# sourceMappingURL=VirtualTimeScheduler.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { EMPTY } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { isFunction } from './util/isFunction';\nexport var NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nvar Notification = (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n return observeNotification(this, observer);\n };\n Notification.prototype.do = function (nextHandler, errorHandler, completeHandler) {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n return kind === 'N' ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === 'E' ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n var _a;\n return isFunction((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next)\n ? this.observe(nextOrObserver)\n : this.do(nextOrObserver, error, complete);\n };\n Notification.prototype.toObservable = function () {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n var result = kind === 'N'\n ?\n of(value)\n :\n kind === 'E'\n ?\n throwError(function () { return error; })\n :\n kind === 'C'\n ?\n EMPTY\n :\n 0;\n if (!result) {\n throw new TypeError(\"Unexpected notification kind \" + kind);\n }\n return result;\n };\n Notification.createNext = function (value) {\n return new Notification('N', value);\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n return Notification;\n}());\nexport { Notification };\nexport function observeNotification(notification, observer) {\n var _a, _b, _c;\n var _d = notification, kind = _d.kind, value = _d.value, error = _d.error;\n if (typeof kind !== 'string') {\n throw new TypeError('Invalid notification, missing \"kind\"');\n }\n kind === 'N' ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === 'E' ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);\n}\n//# sourceMappingURL=Notification.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n executeSchedule(subscriber, scheduler, function () {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) {\n return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n };\n});\n//# sourceMappingURL=EmptyError.js.map","import { createErrorClass } from './createErrorClass';\nexport var ArgumentOutOfRangeError = createErrorClass(function (_super) {\n return function ArgumentOutOfRangeErrorImpl() {\n _super(this);\n this.name = 'ArgumentOutOfRangeError';\n this.message = 'argument out of range';\n };\n});\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map","import { createErrorClass } from './createErrorClass';\nexport var NotFoundError = createErrorClass(function (_super) {\n return function NotFoundErrorImpl(message) {\n _super(this);\n this.name = 'NotFoundError';\n this.message = message;\n };\n});\n//# sourceMappingURL=NotFoundError.js.map","import { createErrorClass } from './createErrorClass';\nexport var SequenceError = createErrorClass(function (_super) {\n return function SequenceErrorImpl(message) {\n _super(this);\n this.name = 'SequenceError';\n this.message = message;\n };\n});\n//# sourceMappingURL=SequenceError.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport var TimeoutError = createErrorClass(function (_super) {\n return function TimeoutErrorImpl(info) {\n if (info === void 0) { info = null; }\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n };\n});\nexport function timeout(config, schedulerArg) {\n var _a = (isValidDate(config) ? { first: config } : typeof config === 'number' ? { each: config } : config), first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler : _c, _d = _a.meta, meta = _d === void 0 ? null : _d;\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return operate(function (source, subscriber) {\n var originalSourceSubscription;\n var timerSubscription;\n var lastValue = null;\n var seen = 0;\n var startTimer = function (delay) {\n timerSubscription = executeSchedule(subscriber, scheduler, function () {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom(_with({\n meta: meta,\n lastValue: lastValue,\n seen: seen,\n })).subscribe(subscriber);\n }\n catch (err) {\n subscriber.error(err);\n }\n }, delay);\n };\n originalSourceSubscription = source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n seen++;\n subscriber.next((lastValue = value));\n each > 0 && startTimer(each);\n }, undefined, undefined, function () {\n if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n }\n lastValue = null;\n }));\n !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each);\n });\n}\nfunction timeoutErrorFactory(info) {\n throw new TimeoutError(info);\n}\n//# sourceMappingURL=timeout.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n }\n else {\n doInnerSub(bufferedValue);\n }\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { __read } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport var NEVER = new Observable(noop);\nexport function never() {\n return NEVER;\n}\n//# sourceMappingURL=never.js.map","var isArray = Array.isArray;\nexport function argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n//# sourceMappingURL=argsOrArgArray.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nexport function race() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n sources = argsOrArgArray(sources);\n return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources));\n}\nexport function raceInit(sources) {\n return function (subscriber) {\n var subscriptions = [];\n var _loop_1 = function (i) {\n subscriptions.push(innerFrom(sources[i]).subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (subscriptions) {\n for (var s = 0; s < subscriptions.length; s++) {\n s !== i && subscriptions[s].unsubscribe();\n }\n subscriptions = null;\n }\n subscriber.next(value);\n })));\n };\n for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n _loop_1(i);\n }\n };\n}\n//# sourceMappingURL=race.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n//# sourceMappingURL=take.js.map","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n return mergeMap(function (value, index) { return innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)); });\n}\n//# sourceMappingURL=delayWhen.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n//# sourceMappingURL=ignoreElements.js.map","import { map } from './map';\nexport function mapTo(value) {\n return map(function () { return value; });\n}\n//# sourceMappingURL=mapTo.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection;\n var resetConnection;\n var subject;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n var reset = function () {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n var onSubscriber = new SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration$ = timer(duration, scheduler);\n return throttle(function () { return duration$; }, config);\n}\n//# sourceMappingURL=throttleTime.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function throttle(durationSelector, config) {\n return operate(function (source, subscriber) {\n var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;\n var hasValue = false;\n var sendValue = null;\n var throttled = null;\n var isComplete = false;\n var endThrottling = function () {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n var cleanupThrottling = function () {\n throttled = null;\n isComplete && subscriber.complete();\n };\n var startThrottle = function (value) {\n return (throttled = innerFrom(durationSelector(value)).subscribe(createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n };\n var send = function () {\n if (hasValue) {\n hasValue = false;\n var value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, function () {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=throttle.js.map","import { isNonSensitiveElement, type JSONValue } from './helpers';\nimport type { Hierarchy, HierarchyNode } from './typings/autocapture';\n\nconst BLOCKED_ATTRIBUTES = [\n // Already captured elsewhere in the hierarchy object\n 'id',\n 'class',\n\n // non-useful and potentially large attribute\n 'style',\n\n // sensitive as prefilled form data may populate this attribute\n 'value',\n\n // DOM events\n 'onclick',\n 'onchange',\n 'oninput',\n 'onblur',\n 'onsubmit',\n 'onfocus',\n 'onkeydown',\n 'onkeyup',\n 'onkeypress',\n\n // React specific\n 'data-reactid',\n 'data-react-checksum',\n 'data-reactroot',\n];\nconst SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST = ['type'];\n\nconst SVG_TAGS = ['svg', 'path', 'g'];\nconst HIGHLY_SENSITIVE_INPUT_TYPES = ['password', 'hidden'];\nconst MAX_ATTRIBUTE_LENGTH = 128;\nconst MAX_HIERARCHY_LENGTH = 1024;\n\nexport function getElementProperties(element: Element | null): HierarchyNode | null {\n if (element === null) {\n return null;\n }\n\n const tagName = String(element.tagName).toLowerCase();\n const properties: HierarchyNode = {\n tag: tagName,\n };\n\n const siblings = Array.from(element.parentElement?.children ?? []);\n if (siblings.length) {\n properties.index = siblings.indexOf(element);\n properties.indexOfType = siblings.filter((el) => el.tagName === element.tagName).indexOf(element);\n }\n\n const prevSiblingTag = element.previousElementSibling?.tagName?.toLowerCase();\n if (prevSiblingTag) {\n properties.prevSib = String(prevSiblingTag);\n }\n\n const id = element.getAttribute('id');\n if (id) {\n properties.id = String(id);\n }\n\n const classes = Array.from(element.classList);\n if (classes.length) {\n properties.classes = classes;\n }\n\n const attributes: Record<string, string> = {};\n const attributesArray = Array.from(element.attributes);\n const filteredAttributes = attributesArray.filter((attr) => !BLOCKED_ATTRIBUTES.includes(attr.name));\n const isSensitiveElement = !isNonSensitiveElement(element);\n\n // if input is hidden or password or for SVGs, skip attribute collection entirely\n if (!HIGHLY_SENSITIVE_INPUT_TYPES.includes(String(element.getAttribute('type'))) && !SVG_TAGS.includes(tagName)) {\n for (const attr of filteredAttributes) {\n // If sensitive element, only allow certain attributes\n if (isSensitiveElement && !SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST.includes(attr.name)) {\n continue;\n }\n\n // Finally cast attribute value to string and limit attribute value length\n attributes[attr.name] = String(attr.value).substring(0, MAX_ATTRIBUTE_LENGTH);\n }\n }\n\n if (Object.keys(attributes).length) {\n properties.attrs = attributes;\n }\n\n return properties;\n}\n\nexport function getAncestors(targetEl: Element | null): Element[] {\n const ancestors: Element[] = [];\n\n if (!targetEl) {\n return ancestors;\n }\n\n // Add self to the list of ancestors\n ancestors.push(targetEl);\n let current = targetEl.parentElement;\n while (current && current.tagName !== 'HTML') {\n ancestors.push(current);\n current = current.parentElement;\n }\n return ancestors;\n}\n\n// Get the DOM hierarchy of the element, starting from the target element to the root element.\nexport const getHierarchy = (element: Element | null): Hierarchy => {\n let hierarchy: Hierarchy = [];\n if (!element) {\n return [];\n }\n\n // Get list of ancestors including itself and get properties at each level in the hierarchy\n const ancestors = getAncestors(element);\n hierarchy = ensureListUnderLimit(\n ancestors.map((el) => getElementProperties(el)),\n MAX_HIERARCHY_LENGTH,\n ) as Hierarchy;\n\n return hierarchy;\n};\n\nexport function ensureListUnderLimit(list: Hierarchy | JSONValue[], bytesLimit: number): Hierarchy | JSONValue[] {\n let numChars = 0;\n for (let i = 0; i < list.length; i++) {\n const node = list[i];\n if (node === null) {\n // simulate 'None' in python\n numChars += 4;\n } else {\n const value = ensureUnicodePythonCompatible(node);\n // Using Array.from(string).length instead of string.length\n // to correctly count Unicode characters (including emojis)\n numChars += value ? Array.from(value).length : 4;\n }\n if (numChars > bytesLimit) {\n return list.slice(0, i);\n }\n }\n return list;\n}\n\n/**\n * Converts a JSON-compatible value to a Python-compatible string representation.\n * This function handles various data types and ensures proper escaping and formatting.\n *\n * @param value - The value to be converted (can be any JSON-compatible type)\n * @param nested - Indicates if the value is nested within another structure (default: false)\n * @returns A string representation of the value compatible with Python, or null if conversion fails\n */\nexport function ensureUnicodePythonCompatible(value: HierarchyNode | JSONValue | null, nested = false): string | null {\n try {\n if (value == null) {\n // Handle null values\n if (nested) {\n return 'None'; // Represent null as 'None' in Python when nested\n }\n return null; // Return null for top-level null values\n } else if (typeof value === 'string') {\n if (nested) {\n // Escape special characters in nested strings\n value = value.replace(/\\\\/g, '\\\\\\\\').replace(/\\n/g, '\\\\n').replace(/\\t/g, '\\\\t').replace(/\\r/g, '\\\\r');\n\n // Handle quotes in the string\n if (value.includes('\"')) {\n return `'${value}'`; // Wrap in single quotes if it contains double quotes\n }\n if (value.includes(\"'\")) {\n return `\"${value.replace(/'/g, \"\\\\'\")}\"`; // Wrap in double quotes and escape single quotes\n }\n return `'${value}'`; // Default to wrapping in single quotes\n }\n return value; // Return non-nested strings as-is\n } else if (typeof value === 'boolean') {\n // Convert boolean to Python-style capitalized string\n return value ? 'True' : 'False';\n } else if (Array.isArray(value)) {\n // Handle arrays by recursively converting each element\n const elements = value.map((o) => ensureUnicodePythonCompatible(o, true));\n return `[${elements.join(', ')}]`;\n } else if (typeof value === 'object') {\n // Handle objects (dictionaries in Python)\n const entries = Object.entries(value)\n .filter(([key]) => key != null) // Filter out null keys\n .map(\n ([key, val]) =>\n `${String(ensureUnicodePythonCompatible(key, true))}: ${String(ensureUnicodePythonCompatible(val, true))}`,\n );\n let result = `{${entries.join(', ')}}`;\n\n // Handle single quotes in the resulting string\n if (result.includes(\"\\\\'\")) {\n result = result.replace(/'/g, \"'\").replace(/'/g, \"\\\\'\");\n }\n return result;\n }\n // For any other types, return their string representation;\n return value.toString();\n } catch (e) {\n // Return null if any error occurs during the conversion\n return null;\n }\n}\n","/* eslint-disable no-restricted-globals */\nimport * as constants from './constants';\nimport { ElementInteractionsOptions, ActionType } from '@amplitude/analytics-core';\nimport { getHierarchy } from './hierarchy';\n\nexport type JSONValue = string | number | boolean | null | { [x: string]: JSONValue } | Array<JSONValue>;\n\nconst SENSITIVE_TAGS = ['input', 'select', 'textarea'];\n\nexport type shouldTrackEvent = (actionType: ActionType, element: Element) => boolean;\n\nexport const isElementPointerCursor = (element: Element, actionType: ActionType): boolean => {\n /* istanbul ignore next */\n const computedStyle = window?.getComputedStyle?.(element);\n /* istanbul ignore next */\n return computedStyle?.getPropertyValue('cursor') === 'pointer' && actionType === 'click';\n};\n\nexport const createShouldTrackEvent = (\n autocaptureOptions: ElementInteractionsOptions,\n allowlist: string[], // this can be any type of css selector allow list\n isAlwaysCaptureCursorPointer = false,\n): shouldTrackEvent => {\n return (actionType: ActionType, element: Element) => {\n const { pageUrlAllowlist, shouldTrackEventResolver } = autocaptureOptions;\n\n /* istanbul ignore next */\n const tag = element?.tagName?.toLowerCase?.();\n // window, document, and Text nodes have no tag\n if (!tag) {\n return false;\n }\n\n if (shouldTrackEventResolver) {\n return shouldTrackEventResolver(actionType, element);\n }\n\n if (!isPageUrlAllowed(window.location.href, pageUrlAllowlist)) {\n return false;\n }\n\n /* istanbul ignore next */\n const elementType = String(element?.getAttribute('type')) || '';\n if (typeof elementType === 'string') {\n switch (elementType.toLowerCase()) {\n case 'hidden':\n return false;\n case 'password':\n return false;\n }\n }\n\n const isCursorPointer = isElementPointerCursor(element, actionType);\n\n if (isAlwaysCaptureCursorPointer && isCursorPointer) {\n return true;\n }\n\n /* istanbul ignore if */\n if (allowlist) {\n const hasMatchAnyAllowedSelector = allowlist.some((selector) => !!element?.matches?.(selector));\n if (!hasMatchAnyAllowedSelector) {\n return false;\n }\n }\n\n switch (tag) {\n case 'input':\n case 'select':\n case 'textarea':\n return actionType === 'change' || actionType === 'click';\n default: {\n /* istanbul ignore next */\n /* istanbul ignore next */\n if (isCursorPointer) {\n return true;\n }\n return actionType === 'click';\n }\n }\n };\n};\n\nexport const isNonSensitiveString = (text: string | null) => {\n if (text == null) {\n return false;\n }\n if (typeof text === 'string') {\n const ccRegex =\n /^(?:(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}))$/;\n if (ccRegex.test((text || '').replace(/[- ]/g, ''))) {\n return false;\n }\n const ssnRegex = /(^\\d{3}-?\\d{2}-?\\d{4}$)/;\n if (ssnRegex.test(text)) {\n return false;\n }\n }\n return true;\n};\n\nexport const isTextNode = (node: Node) => {\n return !!node && node.nodeType === 3;\n};\n\nexport const isNonSensitiveElement = (element: Element) => {\n /* istanbul ignore next */\n const tag = element?.tagName?.toLowerCase?.();\n const isContentEditable =\n element instanceof HTMLElement ? element.getAttribute('contenteditable')?.toLowerCase() === 'true' : false;\n\n return !SENSITIVE_TAGS.includes(tag) && !isContentEditable;\n};\n\n// Maybe this can be simplified with element.innerText, keep and manual concatenating for now, more research needed.\nexport const getText = (element: Element): string => {\n let text = '';\n if (isNonSensitiveElement(element) && element.childNodes && element.childNodes.length) {\n element.childNodes.forEach((child) => {\n let childText = '';\n if (isTextNode(child)) {\n if (child.textContent) {\n childText = child.textContent;\n }\n } else {\n childText = getText(child as Element);\n }\n text += childText\n .split(/(\\s+)/)\n .filter(isNonSensitiveString)\n .join('')\n .replace(/[\\r\\n]/g, ' ')\n .replace(/[ ]+/g, ' ')\n .substring(0, 255);\n });\n }\n return text;\n};\n\nexport const isPageUrlAllowed = (url: string, pageUrlAllowlist: (string | RegExp)[] | undefined) => {\n if (!pageUrlAllowlist || !pageUrlAllowlist.length) {\n return true;\n }\n return pageUrlAllowlist.some((allowedUrl) => {\n if (typeof allowedUrl === 'string') {\n return url === allowedUrl;\n }\n return url.match(allowedUrl);\n });\n};\n\nexport const getAttributesWithPrefix = (element: Element, prefix: string): { [key: string]: string } => {\n return element.getAttributeNames().reduce((attributes: { [key: string]: string }, attributeName) => {\n if (attributeName.startsWith(prefix)) {\n const attributeKey = attributeName.replace(prefix, '');\n const attributeValue = element.getAttribute(attributeName);\n if (attributeKey) {\n attributes[attributeKey] = attributeValue || '';\n }\n }\n return attributes;\n }, {});\n};\n\nexport const isEmpty = (value: unknown) => {\n return (\n value === undefined ||\n value === null ||\n (typeof value === 'object' && Object.keys(value).length === 0) ||\n (typeof value === 'string' && value.trim().length === 0)\n );\n};\n\nexport const removeEmptyProperties = (properties: { [key: string]: unknown }) => {\n return Object.keys(properties).reduce((filteredProperties: { [key: string]: unknown }, key) => {\n const value = properties[key];\n if (!isEmpty(value)) {\n filteredProperties[key] = value;\n }\n return filteredProperties;\n }, {});\n};\n\nexport const getNearestLabel = (element: Element): string => {\n const parent = element.parentElement;\n if (!parent) {\n return '';\n }\n let labelElement;\n try {\n labelElement = parent.querySelector(':scope>span,h1,h2,h3,h4,h5,h6');\n } catch (error) {\n /* istanbul ignore next */\n labelElement = null;\n }\n if (labelElement) {\n /* istanbul ignore next */\n const labelText = labelElement.textContent || '';\n return isNonSensitiveString(labelText) ? labelText : '';\n }\n return getNearestLabel(parent);\n};\n\nexport const querySelectUniqueElements = (root: Element | Document, selectors: string[]): Element[] => {\n if (root && 'querySelectorAll' in root && typeof root.querySelectorAll === 'function') {\n const elementSet = selectors.reduce((elements: Set<Element>, selector) => {\n if (selector) {\n const selectedElements = Array.from(root.querySelectorAll(selector));\n selectedElements.forEach((element) => {\n elements.add(element);\n });\n }\n return elements;\n }, new Set<Element>());\n return Array.from(elementSet);\n }\n return [];\n};\n\n// Similar as element.closest, but works with multiple selectors\nexport const getClosestElement = (element: Element | null, selectors: string[]): Element | null => {\n if (!element) {\n return null;\n }\n /* istanbul ignore next */\n if (selectors.some((selector) => element?.matches?.(selector))) {\n return element;\n }\n /* istanbul ignore next */\n return getClosestElement(element?.parentElement, selectors);\n};\n\n// Returns the element properties for the given element in Visual Labeling.\nexport const getEventTagProps = (element: Element) => {\n if (!element) {\n return {};\n }\n /* istanbul ignore next */\n const tag = element?.tagName?.toLowerCase?.();\n\n const properties: Record<string, JSONValue> = {\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG]: tag,\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT]: getText(element),\n [constants.AMPLITUDE_EVENT_PROP_PAGE_URL]: window.location.href.split('?')[0],\n };\n return removeEmptyProperties(properties);\n};\n\nexport const asyncLoadScript = (url: string) => {\n return new Promise((resolve, reject) => {\n try {\n const scriptElement = document.createElement('script');\n scriptElement.type = 'text/javascript';\n scriptElement.async = true;\n scriptElement.src = url;\n scriptElement.addEventListener(\n 'load',\n () => {\n resolve({ status: true });\n },\n { once: true },\n );\n scriptElement.addEventListener('error', () => {\n reject({\n status: false,\n message: `Failed to load the script ${url}`,\n });\n });\n /* istanbul ignore next */\n document.head?.appendChild(scriptElement);\n } catch (error) {\n /* istanbul ignore next */\n reject(error);\n }\n });\n};\n\nexport function generateUniqueId(): string {\n return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\nexport const filterOutNonTrackableEvents = (event: ElementBasedTimestampedEvent<ElementBasedEvent>): boolean => {\n // Filter out changeEvent events with no target\n // This could happen when change events are triggered programmatically\n if (event.event.target === null || !event.closestTrackedAncestor) {\n return false;\n }\n\n return true;\n};\n\n// Returns the Amplitude event properties for the given element.\nexport const getEventProperties = (actionType: ActionType, element: Element, dataAttributePrefix: string) => {\n /* istanbul ignore next */\n const tag = element?.tagName?.toLowerCase?.();\n /* istanbul ignore next */\n const rect =\n typeof element.getBoundingClientRect === 'function' ? element.getBoundingClientRect() : { left: null, top: null };\n const ariaLabel = element.getAttribute('aria-label');\n const attributes = getAttributesWithPrefix(element, dataAttributePrefix);\n const nearestLabel = getNearestLabel(element);\n /* istanbul ignore next */\n const properties: Record<string, any> = {\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_ID]: element.getAttribute('id') || '',\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_CLASS]: element.getAttribute('class'),\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_HIERARCHY]: getHierarchy(element),\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG]: tag,\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT]: getText(element),\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT]: rect.left == null ? null : Math.round(rect.left),\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP]: rect.top == null ? null : Math.round(rect.top),\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL]: ariaLabel,\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES]: attributes,\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL]: nearestLabel,\n [constants.AMPLITUDE_EVENT_PROP_PAGE_URL]: window.location.href.split('?')[0],\n [constants.AMPLITUDE_EVENT_PROP_PAGE_TITLE]: (typeof document !== 'undefined' && document.title) || '',\n [constants.AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT]: window.innerHeight,\n [constants.AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH]: window.innerWidth,\n };\n if (tag === 'a' && actionType === 'click' && element instanceof HTMLAnchorElement) {\n properties[constants.AMPLITUDE_EVENT_PROP_ELEMENT_HREF] = element.href;\n }\n return removeEmptyProperties(properties);\n};\n\nexport type AutoCaptureOptionsWithDefaults = Required<\n Pick<ElementInteractionsOptions, 'debounceTime' | 'cssSelectorAllowlist' | 'actionClickAllowlist'>\n> &\n ElementInteractionsOptions;\n\nexport const addAdditionalEventProperties = <T>(\n event: T,\n type: TimestampedEvent<T>['type'],\n selectorAllowlist: string[],\n dataAttributePrefix: string,\n\n // capture the event if the cursor is a \"pointer\" when this element is clicked on\n // reason: a \"pointer\" cursor indicates that an element should be interactable\n // regardless of the element's tag name\n isCapturingCursorPointer = false,\n): TimestampedEvent<T> | ElementBasedTimestampedEvent<T> => {\n const baseEvent: BaseTimestampedEvent<T> | ElementBasedTimestampedEvent<T> = {\n event,\n timestamp: Date.now(),\n type,\n };\n\n if (isElementBasedEvent(baseEvent) && baseEvent.event.target !== null) {\n if (isCapturingCursorPointer) {\n const isCursorPointer = isElementPointerCursor(baseEvent.event.target as Element, baseEvent.type);\n if (isCursorPointer) {\n baseEvent.closestTrackedAncestor = baseEvent.event.target as HTMLElement;\n baseEvent.targetElementProperties = getEventProperties(\n baseEvent.type,\n baseEvent.closestTrackedAncestor,\n dataAttributePrefix,\n );\n return baseEvent;\n }\n }\n // Retrieve additional event properties from the target element\n const closestTrackedAncestor = getClosestElement(baseEvent.event.target as HTMLElement, selectorAllowlist);\n if (closestTrackedAncestor) {\n baseEvent.closestTrackedAncestor = closestTrackedAncestor;\n baseEvent.targetElementProperties = getEventProperties(\n baseEvent.type,\n closestTrackedAncestor,\n dataAttributePrefix,\n );\n }\n return baseEvent;\n }\n\n return baseEvent;\n};\n\n// Base TimestampedEvent type\nexport type BaseTimestampedEvent<T> = {\n event: T;\n timestamp: number;\n type: 'rage' | 'click' | 'change' | 'error' | 'navigate' | 'mutation';\n};\n\n// Specific types for events with targetElementProperties\nexport type ElementBasedEvent = MouseEvent | Event;\nexport type ElementBasedTimestampedEvent<T> = BaseTimestampedEvent<T> & {\n event: MouseEvent | Event;\n type: 'click' | 'change';\n closestTrackedAncestor: Element;\n targetElementProperties: Record<string, any>;\n};\n\nexport type evaluateTriggersFn = (\n event: ElementBasedTimestampedEvent<ElementBasedEvent>,\n) => ElementBasedTimestampedEvent<ElementBasedEvent>;\n\n// Union type for all possible TimestampedEvents\nexport type TimestampedEvent<T> = BaseTimestampedEvent<T> | ElementBasedTimestampedEvent<T>;\n\n// Type predicate\nexport function isElementBasedEvent<T>(event: BaseTimestampedEvent<T>): event is ElementBasedTimestampedEvent<T> {\n return event.type === 'click' || event.type === 'change';\n}\n\nexport interface NavigateEvent extends Event {\n readonly navigationType: 'reload' | 'push' | 'replace' | 'traverse';\n readonly destination: {\n readonly url: string;\n readonly key: string | null;\n readonly id: string | null;\n readonly index: number;\n readonly sameDocument: boolean;\n\n getState(): any;\n };\n readonly canIntercept: boolean;\n readonly userInitiated: boolean;\n readonly hashChange: boolean;\n readonly signal: AbortSignal;\n readonly formData: FormData | null;\n readonly downloadRequest: string | null;\n readonly info: any;\n readonly hasUAVisualTransition: boolean;\n /** @see https://github.com/WICG/navigation-api/pull/264 */\n readonly sourceElement: Element | null;\n\n scroll(): void;\n}\n","import type { DataSource, PageAction } from '@amplitude/analytics-core/lib/esm/types/element-interactions';\nimport { ElementBasedTimestampedEvent, ElementBasedEvent } from 'src/helpers';\n\n// Get DataSource\n/**\n * Gets the DOM element specified by the data source configuration\n * @param dataSource - Configuration for finding the target element\n * @param contextElement - The element to start searching from\n * @returns The matching DOM element or undefined if not found\n */\nexport const getDataSource = (dataSource: DataSource, contextElement: HTMLElement) => {\n // Only process DOM_ELEMENT type data sources\n if (dataSource.sourceType === 'DOM_ELEMENT') {\n // If scope is specified, find the closest ancestor matching the scope rather than using documentElement (html) as the scope\n let scopingElement: HTMLElement | null = document.documentElement;\n if (dataSource.scope && contextElement) {\n scopingElement = contextElement.closest(dataSource.scope);\n }\n\n // If we have both a scope and selector, find the matching element\n if (scopingElement && dataSource.selector) {\n return scopingElement.querySelector(dataSource.selector);\n }\n\n // Return scopingElement if no selector was specified\n return scopingElement;\n }\n\n // Return undefined for non-DOM_ELEMENT data sources\n return undefined;\n};\n\n// extract DataSource\nexport const extractDataFromDataSource = (dataSource: DataSource, contextElement: HTMLElement) => {\n // Extract from DOM Element\n if (dataSource.sourceType === 'DOM_ELEMENT') {\n const sourceElement = getDataSource(dataSource, contextElement);\n if (!sourceElement) {\n return undefined;\n }\n\n if (dataSource.elementExtractType === 'TEXT') {\n return sourceElement.textContent;\n } else if (dataSource.elementExtractType === 'ATTRIBUTE' && dataSource.attribute) {\n return sourceElement.getAttribute(dataSource.attribute);\n }\n return undefined;\n }\n\n // TODO: Extract from other source types\n return undefined;\n};\n\n// Execute actions for a condition and attach event properties to the event if needed\nexport const executeActions = (\n actions: (string | PageAction)[],\n ev: ElementBasedTimestampedEvent<ElementBasedEvent>,\n) => {\n actions.forEach((action) => {\n // Skip if actions is string until action set is implemented\n if (typeof action === 'string') {\n return;\n }\n\n if (action.actionType === 'ATTACH_EVENT_PROPERTY') {\n const data = extractDataFromDataSource(action.dataSource, ev.closestTrackedAncestor as HTMLElement);\n\n // Attach data to event\n ev.targetElementProperties[action.destinationKey] = data;\n }\n });\n};\n","/* istanbul ignore file */\n/* eslint-disable no-restricted-globals */\nimport { extractDataFromDataSource } from '../pageActions/actions';\nimport {\n AMPLITUDE_ORIGIN,\n AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL,\n AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS,\n} from '../constants';\nimport { asyncLoadScript, generateUniqueId, getEventTagProps } from '../helpers';\nimport { ILogger, Messenger, ActionType } from '@amplitude/analytics-core';\n\nexport type Action =\n | 'ping'\n | 'pong'\n | 'page-loaded'\n | 'selector-loaded'\n | 'initialize-visual-tagging-selector'\n | 'close-visual-tagging-selector'\n | 'element-selected'\n | 'track-selector-mode-changed'\n | 'track-selector-moved';\n\ninterface InitializeVisualTaggingSelectorData {\n actionType: ActionType;\n}\n\ninterface ElementSelectedData {\n '[Amplitude] Element Hierarchy'?: string;\n '[Amplitude] Element Tag'?: string;\n '[Amplitude] Element Text'?: string;\n '[Amplitude] Page URL'?: string;\n elementScreenshot?: Blob;\n}\n\ninterface TrackSelectorModeChangedData {\n newMode: string;\n pageUrl?: string;\n}\n\ninterface TrackSelectorMovedData {\n newEditorLocation: string;\n pageUrl?: string;\n}\n\nexport type ActionData = {\n ping: null | undefined;\n pong: null | undefined;\n 'page-loaded': null | undefined;\n 'selector-loaded': null | undefined;\n 'initialize-visual-tagging-selector': InitializeVisualTaggingSelectorData | null | undefined;\n 'close-visual-tagging-selector': null | undefined;\n 'element-selected': ElementSelectedData;\n 'track-selector-mode-changed': TrackSelectorModeChangedData;\n 'track-selector-moved': TrackSelectorMovedData;\n};\n\nexport interface Message<A extends Action> {\n action: A;\n data?: ActionData[A];\n}\n\ntype MessageRequest = {\n id: string;\n action: string;\n args: Record<string, any>;\n};\n\ntype MessageResponse = {\n id: string;\n action: string;\n responseData: any;\n};\n\n// TODO: use MessageChannel instead of window.postMessage\nexport class WindowMessenger implements Messenger {\n endpoint = AMPLITUDE_ORIGIN;\n logger?: ILogger;\n requestCallbacks: {\n [id: string]: {\n resolve: (data: any) => void;\n reject: (data: any) => void;\n };\n } = {};\n\n constructor({ origin = AMPLITUDE_ORIGIN }: { origin?: string } = {}) {\n this.endpoint = origin;\n }\n\n private notify(message: Message<Action> | MessageRequest) {\n this.logger?.debug?.('Message sent: ', JSON.stringify(message));\n (window.opener as WindowProxy)?.postMessage?.(message, this.endpoint);\n }\n\n // Send an async request to the parent window\n public sendRequest(action: string, args: Record<string, any>, options = { timeout: 15_000 }): Promise<any> {\n // Create Request ID\n const id = generateUniqueId();\n const request = {\n id,\n action,\n args,\n };\n\n // Create a Promise that will be resolved when the response is received\n const promise = new Promise((resolve, reject) => {\n this.requestCallbacks[id] = { resolve, reject };\n\n // Send the request\n this.notify(request);\n\n // Handle request timeouts\n if (options?.timeout > 0) {\n setTimeout(() => {\n reject(new Error(`${action} timed out (id: ${id})`));\n delete this.requestCallbacks[id];\n }, options.timeout);\n }\n });\n\n return promise;\n }\n\n // Handle messages from the parent window\n private handleResponse(response: MessageResponse) {\n if (!this.requestCallbacks[response.id]) {\n this.logger?.warn(`No callback found for request id: ${response.id}`);\n return;\n }\n\n this.requestCallbacks[response.id].resolve(response.responseData);\n delete this.requestCallbacks[response.id];\n }\n\n setup({\n logger,\n endpoint,\n isElementSelectable,\n cssSelectorAllowlist,\n actionClickAllowlist,\n }: {\n logger?: ILogger;\n endpoint?: string;\n isElementSelectable?: (action: InitializeVisualTaggingSelectorData['actionType'], element: Element) => boolean;\n cssSelectorAllowlist?: string[];\n actionClickAllowlist?: string[];\n } = {}) {\n this.logger = logger;\n // If endpoint is customized, don't override it.\n if (endpoint && this.endpoint === AMPLITUDE_ORIGIN) {\n this.endpoint = endpoint;\n }\n let amplitudeVisualTaggingSelectorInstance: any = null;\n\n // Attach Event Listener to listen for messages from the parent window\n window.addEventListener('message', (event) => {\n this.logger?.debug?.('Message received: ', JSON.stringify(event));\n\n // Only accept messages from the specified origin\n if (this.endpoint !== event.origin) {\n return;\n }\n\n const eventData = event?.data as Message<Action> | MessageResponse;\n const action = eventData?.action;\n\n // Ignore messages without action\n if (!action) {\n return;\n }\n\n // If id exists, handle responses to previous requests\n if ('id' in eventData) {\n this.logger?.debug?.('Received Response to previous request: ', JSON.stringify(event));\n this.handleResponse(eventData);\n\n // If action exists, handle the action using existing handlers\n } else {\n if (action === 'ping') {\n this.notify({ action: 'pong' });\n } else if (action === 'initialize-visual-tagging-selector') {\n const actionData = eventData?.data as InitializeVisualTaggingSelectorData;\n asyncLoadScript(AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL)\n .then(() => {\n // eslint-disable-next-line\n amplitudeVisualTaggingSelectorInstance = (window as any)?.amplitudeVisualTaggingSelector?.({\n getEventTagProps,\n isElementSelectable: (element: Element) => {\n if (isElementSelectable) {\n return isElementSelectable(actionData?.actionType || 'click', element);\n }\n return true;\n },\n onTrack: this.onTrack,\n onSelect: this.onSelect,\n visualHighlightClass: AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS,\n messenger: this,\n cssSelectorAllowlist,\n actionClickAllowlist,\n extractDataFromDataSource,\n });\n this.notify({ action: 'selector-loaded' });\n })\n .catch(() => {\n this.logger?.warn('Failed to initialize visual tagging selector');\n });\n } else if (action === 'close-visual-tagging-selector') {\n // eslint-disable-next-line\n amplitudeVisualTaggingSelectorInstance?.close?.();\n }\n }\n });\n\n // Notify the parent window that the page has loaded\n this.notify({ action: 'page-loaded' });\n }\n\n private onSelect = (data: ElementSelectedData) => {\n this.notify({ action: 'element-selected', data });\n };\n\n private onTrack = (type: string, properties: { [key: string]: string | null }) => {\n if (type === 'selector-mode-changed') {\n this.notify({ action: 'track-selector-mode-changed', data: properties });\n } else if (type === 'selector-moved') {\n this.notify({ action: 'track-selector-moved', data: properties });\n }\n };\n}\n","import { AllWindowObservables, AutoCaptureOptionsWithDefaults } from 'src/autocapture-plugin';\nimport { type evaluateTriggersFn } from 'src/helpers';\nimport { buffer, filter, map, debounceTime, merge, pairwise, delay } from 'rxjs';\nimport { BrowserClient } from '@amplitude/analytics-core';\nimport { filterOutNonTrackableEvents, shouldTrackEvent } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';\n\nconst RAGE_CLICK_THRESHOLD = 5;\n\nexport function trackClicks({\n amplitude,\n allObservables,\n options,\n shouldTrackEvent,\n evaluateTriggers,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n options: AutoCaptureOptionsWithDefaults;\n shouldTrackEvent: shouldTrackEvent;\n evaluateTriggers: evaluateTriggersFn;\n}) {\n const { clickObservable } = allObservables;\n\n // Trigger if the target of the click event has changed and position is different\n // Keeping track of position is important to avoid false positives when the user clicks on the same\n // element where certain frameworks could replace the element instance between rerenders\n const comparisonTrigger = clickObservable.pipe(\n pairwise(),\n filter(([prev, current]) => {\n const targetChanged = prev.event.target !== current.event.target;\n /* istanbul ignore next */\n const samePos =\n Math.abs(current.event.screenX - prev.event.screenX) <= 20 &&\n Math.abs(current.event.screenY - prev.event.screenY) <= 20;\n return targetChanged && !samePos;\n }),\n );\n\n // Trigger if there is no click event within 1 second\n const timeoutTrigger = clickObservable.pipe(\n debounceTime(options.debounceTime),\n map(() => 'timeout' as const),\n );\n\n const triggers = merge(comparisonTrigger, timeoutTrigger);\n\n // Get buffers of clicks, if the buffer length is over 5, it is rage click\n const bufferedClicks = clickObservable.pipe(\n delay(0),\n filter(filterOutNonTrackableEvents),\n filter((click) => {\n // Only track clicks on elements that should be tracked,\n return shouldTrackEvent('click', click.closestTrackedAncestor);\n }),\n map((click) => evaluateTriggers(click)),\n buffer(triggers),\n );\n\n return bufferedClicks.subscribe((clicks) => {\n // TODO: update this when rage clicks are added\n const clickType =\n clicks.length >= RAGE_CLICK_THRESHOLD ? AMPLITUDE_ELEMENT_CLICKED_EVENT : AMPLITUDE_ELEMENT_CLICKED_EVENT;\n\n for (const click of clicks) {\n /* istanbul ignore next */\n amplitude?.track(clickType, click.targetElementProperties);\n }\n });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\n//# sourceMappingURL=debounceTime.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function buffer(closingNotifier) {\n return operate(function (source, subscriber) {\n var currentBuffer = [];\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return currentBuffer.push(value); }, function () {\n subscriber.next(currentBuffer);\n subscriber.complete();\n }));\n innerFrom(closingNotifier).subscribe(createOperatorSubscriber(subscriber, function () {\n var b = currentBuffer;\n currentBuffer = [];\n subscriber.next(b);\n }, noop));\n return function () {\n currentBuffer = null;\n };\n });\n}\n//# sourceMappingURL=buffer.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n//# sourceMappingURL=pairwise.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration = timer(due, scheduler);\n return delayWhen(function () { return duration; });\n}\n//# sourceMappingURL=delay.js.map","import { AllWindowObservables, AutoCaptureOptionsWithDefaults, ObservablesEnum } from 'src/autocapture-plugin';\nimport { filter, map, merge, switchMap, take, timeout, EMPTY } from 'rxjs';\nimport { BrowserClient, ActionType } from '@amplitude/analytics-core';\nimport {\n ElementBasedTimestampedEvent,\n filterOutNonTrackableEvents,\n getClosestElement,\n shouldTrackEvent,\n} from '../helpers';\nimport { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';\n\nexport function trackActionClick({\n amplitude,\n allObservables,\n options,\n getEventProperties,\n shouldTrackEvent,\n shouldTrackActionClick,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n options: AutoCaptureOptionsWithDefaults;\n getEventProperties: (actionType: ActionType, element: Element) => Record<string, any>;\n shouldTrackActionClick: shouldTrackEvent;\n shouldTrackEvent: shouldTrackEvent;\n}) {\n const { clickObservable, mutationObservable, navigateObservable } = allObservables;\n\n const filteredClickObservable = clickObservable.pipe(\n filter((click) => {\n // Filter out regularly tracked click events that are already handled in trackClicks\n return !shouldTrackEvent('click', click.closestTrackedAncestor);\n }),\n map((click) => {\n // overwrite the closestTrackedAncestor with the closest element that is on the actionClickAllowlist\n const closestActionClickEl = getClosestElement(click.event.target as Element, options.actionClickAllowlist);\n click.closestTrackedAncestor = closestActionClickEl as Element;\n\n // overwrite the targetElementProperties with the properties of the closestActionClickEl\n if (click.closestTrackedAncestor !== null) {\n click.targetElementProperties = getEventProperties(click.type, click.closestTrackedAncestor);\n }\n return click;\n }),\n filter(filterOutNonTrackableEvents),\n filter((clickEvent) => {\n // Only track change on elements that should be tracked\n return shouldTrackActionClick('click', clickEvent.closestTrackedAncestor);\n }),\n );\n\n const changeObservables: Array<\n AllWindowObservables[ObservablesEnum.MutationObservable] | AllWindowObservables[ObservablesEnum.NavigateObservable]\n > = [mutationObservable];\n /* istanbul ignore next */\n if (navigateObservable) {\n changeObservables.push(navigateObservable);\n }\n const mutationOrNavigate = merge(...changeObservables);\n\n const actionClicks = filteredClickObservable.pipe(\n // If a mutation occurs within 0.5 seconds of a click event (timeout({ first: 500 })), it emits the original first click event.\n // take 1 to only limit the action events in case there are multiple\n switchMap((click) =>\n mutationOrNavigate.pipe(\n take(1),\n timeout({ first: 500, with: () => EMPTY }), // in case of timeout, map to empty to prevent any click from being emitted\n map(() => click),\n ),\n ),\n );\n\n return actionClicks.subscribe((actionClick) => {\n /* istanbul ignore next */\n amplitude?.track(\n AMPLITUDE_ELEMENT_CLICKED_EVENT,\n getEventProperties('click', (actionClick as ElementBasedTimestampedEvent<MouseEvent>).closestTrackedAncestor),\n );\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n//# sourceMappingURL=switchMap.js.map","import { Observable, fromEvent } from 'rxjs';\n\n/**\n * Creates an observable that tracks DOM mutations on the document body.\n */\nexport const createMutationObservable = (): Observable<MutationRecord[]> => {\n return new Observable<MutationRecord[]>((observer) => {\n const mutationObserver = new MutationObserver((mutations) => {\n observer.next(mutations);\n });\n mutationObserver.observe(document.body, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true,\n });\n return () => mutationObserver.disconnect();\n });\n};\n\n/**\n * Creates an observable that tracks click events on the document.\n */\nexport const createClickObservable = (): Observable<MouseEvent> => {\n return fromEvent<MouseEvent>(document, 'click', { capture: true });\n};\n","/* eslint-disable no-restricted-globals */\nimport {\n type BrowserClient,\n type BrowserConfig,\n type EnrichmentPlugin,\n type ElementInteractionsOptions,\n DEFAULT_CSS_SELECTOR_ALLOWLIST,\n DEFAULT_ACTION_CLICK_ALLOWLIST,\n DEFAULT_DATA_ATTRIBUTE_PREFIX,\n} from '@amplitude/analytics-core';\nimport { createRemoteConfigFetch } from '@amplitude/analytics-remote-config';\nimport * as constants from './constants';\nimport { fromEvent, map, type Observable, type Subscription, share } from 'rxjs';\nimport {\n addAdditionalEventProperties,\n createShouldTrackEvent,\n getEventProperties,\n type ElementBasedTimestampedEvent,\n type TimestampedEvent,\n type NavigateEvent,\n} from './helpers';\nimport { WindowMessenger } from './libs/messenger';\nimport { trackClicks } from './autocapture/track-click';\nimport { trackChange } from './autocapture/track-change';\nimport { trackActionClick } from './autocapture/track-action-click';\nimport type { HasEventTargetAddRemove } from 'rxjs/internal/observable/fromEvent';\nimport { createMutationObservable, createClickObservable } from './observables';\n\nimport {\n createLabeledEventToTriggerMap,\n createTriggerEvaluator,\n groupLabeledEventIdsByEventType,\n} from './pageActions/triggers';\n\ndeclare global {\n interface Window {\n navigation: HasEventTargetAddRemove<Event>;\n }\n}\n\ntype BrowserEnrichmentPlugin = EnrichmentPlugin<BrowserClient, BrowserConfig>;\n\nexport type AutoCaptureOptionsWithDefaults = Required<\n Pick<ElementInteractionsOptions, 'debounceTime' | 'cssSelectorAllowlist' | 'actionClickAllowlist'>\n> &\n ElementInteractionsOptions;\n\nexport enum ObservablesEnum {\n ClickObservable = 'clickObservable',\n ChangeObservable = 'changeObservable',\n // ErrorObservable = 'errorObservable',\n NavigateObservable = 'navigateObservable',\n MutationObservable = 'mutationObservable',\n}\n\nexport interface AllWindowObservables {\n [ObservablesEnum.ClickObservable]: Observable<ElementBasedTimestampedEvent<MouseEvent>>;\n [ObservablesEnum.ChangeObservable]: Observable<ElementBasedTimestampedEvent<Event>>;\n // [ObservablesEnum.ErrorObservable]: Observable<TimestampedEvent<ErrorEvent>>;\n [ObservablesEnum.NavigateObservable]: Observable<TimestampedEvent<NavigateEvent>> | undefined;\n [ObservablesEnum.MutationObservable]: Observable<TimestampedEvent<MutationRecord[]>>;\n}\n\nexport const autocapturePlugin = (options: ElementInteractionsOptions = {}): BrowserEnrichmentPlugin => {\n const {\n dataAttributePrefix = DEFAULT_DATA_ATTRIBUTE_PREFIX,\n visualTaggingOptions = {\n enabled: true,\n messenger: new WindowMessenger(),\n },\n } = options;\n\n options.cssSelectorAllowlist = options.cssSelectorAllowlist ?? DEFAULT_CSS_SELECTOR_ALLOWLIST;\n options.actionClickAllowlist = options.actionClickAllowlist ?? DEFAULT_ACTION_CLICK_ALLOWLIST;\n options.debounceTime = options.debounceTime ?? 0; // TODO: update this when rage clicks are added to 1000ms\n\n const name = constants.PLUGIN_NAME;\n const type = 'enrichment';\n\n const subscriptions: Subscription[] = [];\n\n // Create observables on events on the window\n const createObservables = (): AllWindowObservables => {\n // Create Observables from direct user events\n const clickObservable = createClickObservable().pipe(\n map((click) =>\n addAdditionalEventProperties(\n click,\n 'click',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n ),\n ),\n share(),\n );\n const changeObservable = fromEvent<Event>(document, 'change', { capture: true }).pipe(\n map((change) =>\n addAdditionalEventProperties(\n change,\n 'change',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n ),\n ),\n share(),\n );\n\n // Create Observable from unhandled errors\n // const errorObservable = fromEvent<ErrorEvent>(window, 'error').pipe(\n // map((error) => addAdditionalEventProperties(error, 'error')),\n // );\n\n // Create observable for URL changes\n let navigateObservable: Observable<TimestampedEvent<NavigateEvent>> | undefined;\n /* istanbul ignore next */\n if (window.navigation) {\n navigateObservable = fromEvent<NavigateEvent>(window.navigation, 'navigate').pipe(\n map((navigate) =>\n addAdditionalEventProperties(\n navigate,\n 'navigate',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n ),\n ),\n share(),\n );\n }\n\n // Track DOM Mutations using shared observable\n const mutationObservable = createMutationObservable().pipe(\n map((mutation) =>\n addAdditionalEventProperties(\n mutation,\n 'mutation',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n ),\n ),\n share(),\n );\n\n return {\n [ObservablesEnum.ClickObservable]: clickObservable as Observable<ElementBasedTimestampedEvent<MouseEvent>>,\n [ObservablesEnum.ChangeObservable]: changeObservable as Observable<ElementBasedTimestampedEvent<Event>>,\n // [ObservablesEnum.ErrorObservable]: errorObservable,\n [ObservablesEnum.NavigateObservable]: navigateObservable,\n [ObservablesEnum.MutationObservable]: mutationObservable,\n };\n };\n\n // Group labeled events by event type (eg. click, change)\n let groupedLabeledEvents = groupLabeledEventIdsByEventType(Object.values(options.pageActions?.labeledEvents ?? {}));\n\n let labeledEventToTriggerMap = createLabeledEventToTriggerMap(options.pageActions?.triggers ?? []);\n\n // Evaluate triggers for the given event by running the actions associated with the matching triggers\n const evaluateTriggers = createTriggerEvaluator(groupedLabeledEvents, labeledEventToTriggerMap, options);\n\n // Function to recalculate internal variables when remote config is updated\n const recomputePageActionsData = (remotePageActions: ElementInteractionsOptions['pageActions']) => {\n if (remotePageActions) {\n // Merge remote config with local options\n options.pageActions = {\n ...options.pageActions,\n ...remotePageActions,\n };\n\n // Recalculate internal variables\n groupedLabeledEvents = groupLabeledEventIdsByEventType(Object.values(options.pageActions.labeledEvents ?? {}));\n labeledEventToTriggerMap = createLabeledEventToTriggerMap(options.pageActions.triggers ?? []);\n\n // Update evaluateTriggers function\n evaluateTriggers.update(groupedLabeledEvents, labeledEventToTriggerMap, options);\n }\n };\n\n const setup: BrowserEnrichmentPlugin['setup'] = async (config, amplitude) => {\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n // Fetch remote config for pageActions in a non-blocking manner\n if (config.fetchRemoteConfig) {\n createRemoteConfigFetch({\n localConfig: config,\n configKeys: ['analyticsSDK.pageActions'],\n })\n .then(async (remoteConfigFetch) => {\n try {\n const remotePageActions = await remoteConfigFetch.getRemoteConfig('analyticsSDK', 'pageActions');\n recomputePageActionsData(remotePageActions as ElementInteractionsOptions['pageActions']);\n } catch (error) {\n // Log error but don't fail the setup\n /* istanbul ignore next */\n config?.loggerProvider?.error(`Failed to fetch remote config: ${String(error)}`);\n }\n })\n .catch((error) => {\n // Log error but don't fail the setup\n /* istanbul ignore next */\n config?.loggerProvider?.error(`Failed to create remote config fetch: ${String(error)}`);\n });\n }\n\n // Create should track event functions the different allowlists\n const shouldTrackEvent = createShouldTrackEvent(\n options,\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n );\n const shouldTrackActionClick = createShouldTrackEvent(\n options,\n (options as AutoCaptureOptionsWithDefaults).actionClickAllowlist,\n );\n\n // Create observables for events on the window\n const allObservables = createObservables();\n\n // Create subscriptions\n const clickTrackingSubscription = trackClicks({\n allObservables,\n options: options as AutoCaptureOptionsWithDefaults,\n amplitude,\n shouldTrackEvent: shouldTrackEvent,\n evaluateTriggers: evaluateTriggers.evaluate.bind(evaluateTriggers),\n });\n subscriptions.push(clickTrackingSubscription);\n\n const changeSubscription = trackChange({\n allObservables,\n getEventProperties: (...args) => getEventProperties(...args, dataAttributePrefix),\n amplitude,\n shouldTrackEvent: shouldTrackEvent,\n evaluateTriggers: evaluateTriggers.evaluate.bind(evaluateTriggers),\n });\n subscriptions.push(changeSubscription);\n\n const actionClickSubscription = trackActionClick({\n allObservables,\n options: options as AutoCaptureOptionsWithDefaults,\n getEventProperties: (...args) => getEventProperties(...args, dataAttributePrefix),\n amplitude,\n shouldTrackEvent,\n shouldTrackActionClick: shouldTrackActionClick,\n });\n subscriptions.push(actionClickSubscription);\n\n /* istanbul ignore next */\n config?.loggerProvider?.log(`${name} has been successfully added.`);\n\n // Setup visual tagging selector\n if (window.opener && visualTaggingOptions.enabled) {\n const allowlist = (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist;\n const actionClickAllowlist = (options as AutoCaptureOptionsWithDefaults).actionClickAllowlist;\n\n /* istanbul ignore next */\n visualTaggingOptions.messenger?.setup({\n logger: config?.loggerProvider,\n ...(config?.serverZone && { endpoint: constants.AMPLITUDE_ORIGINS_MAP[config.serverZone] }),\n isElementSelectable: createShouldTrackEvent(options, [...allowlist, ...actionClickAllowlist]),\n cssSelectorAllowlist: allowlist,\n actionClickAllowlist: actionClickAllowlist,\n });\n }\n };\n\n const execute: BrowserEnrichmentPlugin['execute'] = async (event) => {\n return event;\n };\n\n const teardown = async () => {\n for (const subscription of subscriptions) {\n subscription.unsubscribe();\n }\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n","import type { Trigger } from '@amplitude/analytics-core/lib/esm/types/element-interactions';\n// Return which labeled events, if any, the element matches\nimport type {\n ElementInteractionsOptions,\n LabeledEvent,\n} from '@amplitude/analytics-core/lib/esm/types/element-interactions';\nimport type { ElementBasedTimestampedEvent, ElementBasedEvent } from 'src/helpers';\nimport { matchEventToFilter } from './matchEventToFilter';\nimport { executeActions } from './actions';\n\nconst eventTypeToBrowserEventMap = {\n '[Amplitude] Element Clicked': 'click',\n '[Amplitude] Element Changed': 'change',\n} as const;\n// groups labeled events by event type\n// skips any labeled events with malformed definitions or unexpected event_type\nexport const groupLabeledEventIdsByEventType = (labeledEvents: LabeledEvent[] | null | undefined) => {\n // Initialize all event types with empty sets\n const groupedLabeledEvents = Object.values(eventTypeToBrowserEventMap).reduce((acc, browserEvent) => {\n acc[browserEvent] = new Set<string>();\n return acc;\n }, {} as Record<string, Set<string>>);\n\n // If there are no labeled events, return the initialized groupedLabeledEvents\n if (!labeledEvents) {\n return groupedLabeledEvents;\n }\n\n // Group labeled events by event type\n for (const le of labeledEvents) {\n try {\n for (const def of le.definition) {\n const browserEvent = eventTypeToBrowserEventMap[def.event_type];\n if (browserEvent) {\n groupedLabeledEvents[browserEvent].add(le.id);\n }\n }\n } catch (e) {\n // Skip this labeled event if there is an error\n console.warn('Skipping Labeled Event due to malformed definition', le?.id, e);\n }\n }\n return groupedLabeledEvents;\n};\n\n// TODO: add tests\nexport const createLabeledEventToTriggerMap = (triggers: Trigger[]) => {\n const labeledEventToTriggerMap = new Map<string, Trigger[]>();\n for (const trigger of triggers) {\n for (const condition of trigger.conditions) {\n if (condition.type === 'LABELED_EVENT') {\n const eventId = condition.match.eventId;\n // Get existing triggers for this event ID or initialize empty array\n let existingTriggers = labeledEventToTriggerMap.get(eventId);\n if (!existingTriggers) {\n existingTriggers = [];\n labeledEventToTriggerMap.set(eventId, existingTriggers);\n }\n // Add current trigger to the list of triggers for this event ID\n existingTriggers.push(trigger);\n }\n }\n }\n return labeledEventToTriggerMap;\n};\n\n/**\n * Matches an event to labeled events based on the event's properties.\n * The logic matches exactly what is supported by the query backend.\n * TODO: later pre-filter the labeled events based on URL first\n *\n * @param event - The event to match against labeled events\n * @param labeledEvents - Array of labeled events to match against\n * @returns Array of matching labeled events\n */\nexport const matchEventToLabeledEvents = (\n event: ElementBasedTimestampedEvent<ElementBasedEvent>,\n labeledEvents: LabeledEvent[],\n) => {\n return labeledEvents.filter((le) => {\n return le.definition.some((def) => {\n return (\n eventTypeToBrowserEventMap[def.event_type] === event.type &&\n def.filters.every((filter) => matchEventToFilter(event, filter))\n );\n });\n });\n};\n\nexport const matchLabeledEventsToTriggers = (labeledEvents: LabeledEvent[], leToTriggerMap: Map<string, Trigger[]>) => {\n const matchingTriggers = new Set<Trigger>();\n for (const le of labeledEvents) {\n const triggers = leToTriggerMap.get(le.id);\n if (triggers) {\n for (const trigger of triggers) {\n matchingTriggers.add(trigger);\n }\n }\n }\n return Array.from(matchingTriggers);\n};\n\nexport class TriggerEvaluator {\n constructor(\n private groupedLabeledEvents: ReturnType<typeof groupLabeledEventIdsByEventType>,\n private labeledEventToTriggerMap: ReturnType<typeof createLabeledEventToTriggerMap>,\n private options: ElementInteractionsOptions,\n ) {}\n\n evaluate(event: ElementBasedTimestampedEvent<ElementBasedEvent>) {\n // If there is no pageActions, return the event as is\n const { pageActions } = this.options;\n if (!pageActions) {\n return event;\n }\n\n // Find matching labeled events\n const matchingLabeledEvents = matchEventToLabeledEvents(\n event,\n Array.from(this.groupedLabeledEvents[event.type]).map((id) => pageActions.labeledEvents[id]),\n );\n // Find matching conditions\n const matchingTriggers = matchLabeledEventsToTriggers(matchingLabeledEvents, this.labeledEventToTriggerMap);\n for (const trigger of matchingTriggers) {\n executeActions(trigger.actions, event);\n }\n\n return event;\n }\n\n update(\n groupedLabeledEvents: ReturnType<typeof groupLabeledEventIdsByEventType>,\n labeledEventToTriggerMap: ReturnType<typeof createLabeledEventToTriggerMap>,\n options: ElementInteractionsOptions,\n ) {\n this.groupedLabeledEvents = groupedLabeledEvents;\n this.labeledEventToTriggerMap = labeledEventToTriggerMap;\n this.options = options;\n }\n}\n\nexport const createTriggerEvaluator = (\n groupedLabeledEvents: ReturnType<typeof groupLabeledEventIdsByEventType>,\n labeledEventToTriggerMap: ReturnType<typeof createLabeledEventToTriggerMap>,\n options: ElementInteractionsOptions,\n) => {\n return new TriggerEvaluator(groupedLabeledEvents, labeledEventToTriggerMap, options);\n};\n","import type { Filter } from '@amplitude/analytics-core/lib/esm/types/element-interactions';\nimport { ElementBasedTimestampedEvent, ElementBasedEvent } from 'src/helpers';\n\n/**\n * Matches an event to a single filter\n * @param event - The event to match\n * @param filter - The filter to match against\n * @returns boolean indicating if the event matches the filter\n */\nexport const matchEventToFilter = (event: ElementBasedTimestampedEvent<ElementBasedEvent>, filter: Filter) => {\n try {\n if (filter.subprop_key === '[Amplitude] Element Text') {\n // TODO: add support for the other operators\n return (\n filter.subprop_op === 'is' &&\n filter.subprop_value.includes(event.targetElementProperties['[Amplitude] Element Text'] as string)\n );\n } else if (filter.subprop_key === '[Amplitude] Element Hierarchy') {\n // Check if the element ancestory matches the CSS selector, always check this last since it is the most expensive\n return (\n filter.subprop_op === 'autotrack css match' &&\n !!event.closestTrackedAncestor.closest(filter.subprop_value.toString())\n );\n }\n } catch (error) {\n console.error('Error matching event to filter', error);\n return false;\n }\n return false;\n};\n","import { AllWindowObservables } from 'src/autocapture-plugin';\nimport { type evaluateTriggersFn } from 'src/helpers';\nimport { filter, map } from 'rxjs';\nimport { BrowserClient, ActionType } from '@amplitude/analytics-core';\nimport { filterOutNonTrackableEvents, shouldTrackEvent } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CHANGED_EVENT } from '../constants';\n\nexport function trackChange({\n amplitude,\n allObservables,\n getEventProperties,\n shouldTrackEvent,\n evaluateTriggers,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n getEventProperties: (actionType: ActionType, element: Element) => Record<string, any>;\n shouldTrackEvent: shouldTrackEvent;\n evaluateTriggers: evaluateTriggersFn;\n}) {\n const { changeObservable } = allObservables;\n\n const filteredChangeObservable = changeObservable.pipe(\n filter(filterOutNonTrackableEvents),\n filter((changeEvent) => {\n // Only track change on elements that should be tracked,\n return shouldTrackEvent('change', changeEvent.closestTrackedAncestor);\n }),\n map((changeEvent) => evaluateTriggers(changeEvent)),\n );\n\n return filteredChangeObservable.subscribe((changeEvent) => {\n /* istanbul ignore next */\n amplitude?.track(AMPLITUDE_ELEMENT_CHANGED_EVENT, getEventProperties('change', changeEvent.closestTrackedAncestor));\n });\n}\n","/* eslint-disable no-restricted-globals */\nimport {\n BrowserClient,\n BrowserConfig,\n EnrichmentPlugin,\n FrustrationInteractionsOptions,\n DEFAULT_DATA_ATTRIBUTE_PREFIX,\n DEFAULT_RAGE_CLICK_ALLOWLIST,\n DEFAULT_DEAD_CLICK_ALLOWLIST,\n} from '@amplitude/analytics-core';\nimport * as constants from './constants';\nimport { fromEvent, map, Observable, Subscription, share } from 'rxjs';\nimport {\n addAdditionalEventProperties,\n createShouldTrackEvent,\n ElementBasedTimestampedEvent,\n getEventProperties,\n NavigateEvent,\n} from './helpers';\nimport { trackDeadClick } from './autocapture/track-dead-click';\nimport { trackRageClicks } from './autocapture/track-rage-click';\nimport { AllWindowObservables, ObservablesEnum } from './autocapture-plugin';\nimport { createClickObservable, createMutationObservable } from './observables';\n\ntype BrowserEnrichmentPlugin = EnrichmentPlugin<BrowserClient, BrowserConfig>;\n\nexport const frustrationPlugin = (options: FrustrationInteractionsOptions = {}): BrowserEnrichmentPlugin => {\n const name = constants.FRUSTRATION_PLUGIN_NAME;\n const type = 'enrichment';\n\n const subscriptions: Subscription[] = [];\n\n const rageCssSelectors = options.rageClicks?.cssSelectorAllowlist ?? DEFAULT_RAGE_CLICK_ALLOWLIST;\n const deadCssSelectors = options.deadClicks?.cssSelectorAllowlist ?? DEFAULT_DEAD_CLICK_ALLOWLIST;\n\n const dataAttributePrefix = options.dataAttributePrefix ?? DEFAULT_DATA_ATTRIBUTE_PREFIX;\n\n // combine the two selector lists to determine which clicked elements should be filtered\n const combinedCssSelectors = [...new Set([...rageCssSelectors, ...deadCssSelectors])];\n\n // Create observables on events on the window\n const createObservables = (): AllWindowObservables => {\n // Create Observables from direct user events\n const clickObservable = createClickObservable().pipe(\n map((click) => {\n return addAdditionalEventProperties(\n click,\n 'click',\n combinedCssSelectors,\n dataAttributePrefix,\n true, // capture when cursor is pointer\n );\n }),\n share(),\n );\n\n // Create observable for URL changes\n let navigateObservable;\n /* istanbul ignore next */\n if (window.navigation) {\n navigateObservable = fromEvent<NavigateEvent>(window.navigation, 'navigate').pipe(\n map((navigate) =>\n addAdditionalEventProperties(navigate, 'navigate', combinedCssSelectors, dataAttributePrefix),\n ),\n share(),\n );\n }\n\n // Track DOM Mutations\n const enrichedMutationObservable = createMutationObservable().pipe(\n map((mutation) => addAdditionalEventProperties(mutation, 'mutation', combinedCssSelectors, dataAttributePrefix)),\n share(),\n );\n\n return {\n [ObservablesEnum.ClickObservable]: clickObservable as Observable<ElementBasedTimestampedEvent<MouseEvent>>,\n [ObservablesEnum.ChangeObservable]: new Observable<ElementBasedTimestampedEvent<Event>>(), // Empty observable since we don't need change events\n [ObservablesEnum.NavigateObservable]: navigateObservable,\n [ObservablesEnum.MutationObservable]: enrichedMutationObservable,\n };\n };\n\n const setup: BrowserEnrichmentPlugin['setup'] = async (config, amplitude) => {\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n // Create should track event functions for the different allowlists\n const shouldTrackRageClick = createShouldTrackEvent(options, rageCssSelectors);\n const shouldTrackDeadClick = createShouldTrackEvent(options, deadCssSelectors);\n\n // Create observables for events on the window\n const allObservables = createObservables();\n\n // Create subscriptions\n const rageClickSubscription = trackRageClicks({\n allObservables,\n amplitude,\n shouldTrackRageClick,\n });\n subscriptions.push(rageClickSubscription);\n\n const deadClickSubscription = trackDeadClick({\n amplitude,\n allObservables,\n getEventProperties: (actionType, element) => getEventProperties(actionType, element, dataAttributePrefix),\n shouldTrackDeadClick,\n });\n subscriptions.push(deadClickSubscription);\n\n /* istanbul ignore next */\n config?.loggerProvider?.log(`${name} has been successfully added.`);\n };\n\n const execute: BrowserEnrichmentPlugin['execute'] = async (event) => {\n return event;\n };\n\n const teardown = async () => {\n for (const subscription of subscriptions) {\n subscription.unsubscribe();\n }\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n","import { AllWindowObservables } from 'src/autocapture-plugin';\nimport { filter, map } from 'rxjs';\nimport { BrowserClient } from '@amplitude/analytics-core';\nimport { filterOutNonTrackableEvents, shouldTrackEvent } from '../helpers';\nimport { AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT } from '../constants';\nimport { DEFAULT_RAGE_CLICK_THRESHOLD, DEFAULT_RAGE_CLICK_WINDOW_MS } from '@amplitude/analytics-core';\n\nconst RAGE_CLICK_THRESHOLD = DEFAULT_RAGE_CLICK_THRESHOLD;\nconst RAGE_CLICK_WINDOW_MS = DEFAULT_RAGE_CLICK_WINDOW_MS;\n\ntype Click = {\n X: number;\n Y: number;\n Time: number;\n};\n\ntype EventRageClick = {\n '[Amplitude] Begin Time': string; // ISO-8601\n '[Amplitude] End Time': string; // ISO-8601\n '[Amplitude] Duration': number;\n '[Amplitude] Clicks': Array<Click>;\n '[Amplitude] Click Count': number;\n};\n\ntype ClickEvent = {\n event: MouseEvent | Event;\n timestamp: number;\n targetElementProperties: Record<string, any>;\n closestTrackedAncestor: Element | null;\n};\n\nexport function trackRageClicks({\n amplitude,\n allObservables,\n shouldTrackRageClick,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n shouldTrackRageClick: shouldTrackEvent;\n}) {\n const { clickObservable } = allObservables;\n\n // Keep track of all clicks within the sliding window\n const clickWindow: ClickEvent[] = [];\n\n return clickObservable\n .pipe(\n filter(filterOutNonTrackableEvents),\n filter((click) => {\n return shouldTrackRageClick('click', click.closestTrackedAncestor);\n }),\n map((click) => {\n const now = click.timestamp;\n\n // if the current click isn't on the same element as the most recent click,\n // clear the sliding window and start over\n if (\n clickWindow.length > 0 &&\n clickWindow[clickWindow.length - 1].closestTrackedAncestor !== click.closestTrackedAncestor\n ) {\n clickWindow.splice(0, clickWindow.length);\n }\n\n // remove past clicks that are outside the sliding window\n let clickPtr = 0;\n for (; clickPtr < clickWindow.length; clickPtr++) {\n if (now - clickWindow[clickPtr].timestamp < RAGE_CLICK_WINDOW_MS) {\n break;\n }\n }\n clickWindow.splice(0, clickPtr);\n\n // add the current click to the window\n clickWindow.push(click);\n\n // if there's not enough clicks to be a rage click, return null\n if (clickWindow.length < RAGE_CLICK_THRESHOLD) {\n return null;\n }\n\n // if we've made it here, we have enough trailing clicks on the same element\n // for it to be a rage click\n const firstClick = clickWindow[0];\n const lastClick = clickWindow[clickWindow.length - 1];\n\n const rageClickEvent: EventRageClick = {\n '[Amplitude] Begin Time': new Date(firstClick.timestamp).toISOString(),\n '[Amplitude] End Time': new Date(lastClick.timestamp).toISOString(),\n '[Amplitude] Duration': lastClick.timestamp - firstClick.timestamp,\n '[Amplitude] Clicks': clickWindow.map((click) => ({\n X: (click.event as MouseEvent).clientX,\n Y: (click.event as MouseEvent).clientY,\n Time: click.timestamp,\n })),\n '[Amplitude] Click Count': clickWindow.length,\n ...firstClick.targetElementProperties,\n };\n\n // restart the sliding window\n clickWindow.splice(0, clickWindow.length);\n\n return { rageClickEvent, time: firstClick.timestamp };\n }),\n filter((result) => result !== null),\n )\n .subscribe((data: { rageClickEvent: EventRageClick; time: number } | null) => {\n /* istanbul ignore if */\n if (data === null) {\n return;\n }\n amplitude.track(AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT, data.rageClickEvent, { time: data.time });\n });\n}\n","import { AllWindowObservables, ObservablesEnum } from 'src/autocapture-plugin';\nimport { filter, map, merge, take, mergeMap, race, Observable, Subscriber, throttleTime } from 'rxjs';\nimport { BrowserClient, ActionType } from '@amplitude/analytics-core';\nimport { ElementBasedTimestampedEvent, filterOutNonTrackableEvents, shouldTrackEvent } from '../helpers';\nimport { AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT } from '../constants';\n\nlet DEAD_CLICK_TIMEOUT = 3000; // 3 seconds to wait for an activity to happen\n\n// allow override of dead click config for testing only\nexport function _overrideDeadClickConfig(deadClickTimeout: number) {\n DEAD_CLICK_TIMEOUT = deadClickTimeout;\n}\n\ntype EventDeadClick = {\n '[Amplitude] X': number;\n '[Amplitude] Y': number;\n};\n\nexport function trackDeadClick({\n amplitude,\n allObservables,\n getEventProperties,\n shouldTrackDeadClick,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n getEventProperties: (actionType: ActionType, element: Element) => Record<string, any>;\n shouldTrackDeadClick: shouldTrackEvent;\n}) {\n const { clickObservable, mutationObservable, navigateObservable } = allObservables;\n\n const filteredClickObservable = clickObservable.pipe(\n filter(filterOutNonTrackableEvents),\n filter((clickEvent) => {\n // Only track change on elements that should be tracked\n return shouldTrackDeadClick('click', clickEvent.closestTrackedAncestor);\n }),\n );\n\n const changeObservables: Array<\n AllWindowObservables[ObservablesEnum.MutationObservable] | AllWindowObservables[ObservablesEnum.NavigateObservable]\n > = [mutationObservable];\n if (navigateObservable) {\n changeObservables.push(navigateObservable);\n }\n const mutationOrNavigate = merge(...changeObservables);\n\n const actionClicks = filteredClickObservable.pipe(\n mergeMap((click) => {\n // Create a timer that emits after 500ms\n let timeoutId: ReturnType<typeof setTimeout>;\n const timer = new Observable<typeof click>((subscriber: Subscriber<typeof click>) => {\n timeoutId = setTimeout(() => subscriber.next(click), DEAD_CLICK_TIMEOUT);\n\n return () => {\n clearTimeout(timeoutId);\n };\n });\n\n // Race between the timer and any mutations/navigation\n // if the timer wins, the click is dead so we emit it\n return race(\n timer,\n mutationOrNavigate.pipe(\n take(1),\n map(() => null),\n ),\n ).pipe(filter((value): value is ElementBasedTimestampedEvent<MouseEvent> => value !== null));\n }),\n // Only allow one dead click event every 3 seconds\n throttleTime(DEAD_CLICK_TIMEOUT),\n );\n\n return actionClicks.subscribe((actionClick) => {\n const deadClickEvent: EventDeadClick = {\n '[Amplitude] X': (actionClick.event as MouseEvent).clientX,\n '[Amplitude] Y': (actionClick.event as MouseEvent).clientY,\n };\n amplitude.track(\n AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT,\n {\n ...getEventProperties('click', actionClick.closestTrackedAncestor),\n ...deadClickEvent,\n },\n { time: actionClick.timestamp },\n );\n });\n}\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","_","label","sent","trys","ops","g","Iterator","verb","Symbol","iterator","v","op","pop","push","__values","o","m","__read","r","ar","error","__spreadArray","to","from","pack","l","slice","concat","__await","__asyncGenerator","asyncIterator","q","AsyncIterator","a","resume","fulfill","settle","shift","__asyncValues","SuppressedError","ServerZone","Status","DEFAULT_CSS_SELECTOR_ALLOWLIST","DEFAULT_DATA_ATTRIBUTE_PREFIX","DEFAULT_ACTION_CLICK_ALLOWLIST","DEFAULT_DEAD_CLICK_ALLOWLIST","DEFAULT_RAGE_CLICK_ALLOWLIST","BaseTransport","send","_serverUrl","_payload","buildResponse","responseJSON","_a","_b","_c","_d","_e","_f","_g","_h","_j","_k","_l","_m","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","statusCode","code","status","buildStatus","Success","eventsIngested","events_ingested","payloadSizeBytes","payload_size_bytes","serverUploadTime","server_upload_time","Invalid","missingField","missing_field","eventsWithInvalidFields","events_with_invalid_fields","eventsWithMissingFields","events_with_missing_fields","eventsWithInvalidIdLengths","events_with_invalid_id_lengths","epsThreshold","eps_threshold","exceededDailyQuotaDevices","exceeded_daily_quota_devices","silencedDevices","silenced_devices","silencedEvents","silenced_events","throttledDevices","throttled_devices","throttledEvents","throttled_events","PayloadTooLarge","RateLimit","throttledUsers","throttled_users","exceededDailyQuotaUsers","exceeded_daily_quota_users","Timeout","Failed","Unknown","TIMEOUT_MESSAGE","UNEXPECTED_ERROR_MESSAGE","RemoteConfigFetch","localConfig","configKeys","_this","retryTimeout","attempts","sessionTargetingMatch","metrics","getRemoteNamespaceConfig","configNamespace","sessionId","fetchStartTime","configAPIResponse","remoteConfig","Date","now","fetchWithTimeout","configs","fetchTimeAPISuccess","fetchTimeAPIFail","undefined","getRemoteConfig","key","namespaceConfig","controller","timeoutId","AbortController","setTimeout","abort","fetchRemoteConfig","signal","clearTimeout","urlParams","configKey","options","serverUrl","res","e_1","knownError","e_2","lastFetchedSessionId","flushMaxRetries","completeRequest","err","aborted","URLSearchParams","api_key","apiKey","append","e_2_1","return","set","headers","Accept","method","getServerUrl","toString","fetch","parseAndStoreConfig","retryFetch","message","json","success","configServerUrl","serverZone","STAGING","EU","Error","loggerProvider","log","createRemoteConfigFetch","AMPLITUDE_ELEMENT_CLICKED_EVENT","AMPLITUDE_EVENT_PROP_ELEMENT_TAG","AMPLITUDE_EVENT_PROP_ELEMENT_TEXT","AMPLITUDE_EVENT_PROP_PAGE_URL","AMPLITUDE_ORIGIN","AMPLITUDE_ORIGINS_MAP","US","isFunction","createErrorClass","createImpl","ctorFunc","instance","stack","UnsubscriptionError","_super","errors","map","join","name","arrRemove","arr","item","index","indexOf","splice","Subscription","initialTeardown","closed","_parentage","_finalizers","empty","unsubscribe","isArray","_parentage_1","_parentage_1_1","remove","e_1_1","initialFinalizer","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","add","teardown","_hasParent","_addParent","parent","includes","_removeParent","EMPTY","EMPTY_SUBSCRIPTION","isSubscription","config","onUnhandledError","onStoppedNotification","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","timeoutProvider","handler","timeout","args","_i","reportUnhandledError","noop","errorContext","cb","Subscriber","destination","isStopped","EMPTY_OBSERVER","complete","SafeSubscriber","_next","_error","_complete","_bind","Function","bind","fn","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","observable","identity","x","Observable","subscribe","_subscribe","lift","operator","source","subscriber","isObserver","_trySubscribe","sink","forEach","promiseCtor","getPromiseCtor","Symbol_observable","pipe","fns","operations","input","reduce","prev","toPromise","hasLift","operate","init","liftedSource","createOperatorSubscriber","onNext","onComplete","onError","onFinalize","OperatorSubscriber","shouldUnsubscribe","closed_1","ConnectableObservable","subjectFactory","_subject","_refCount","_connection","getSubject","subject","_teardown","connect","connection","subject_1","refCount","refCounter","sharedConnection","conn","higherOrderRefCount","timestampProvider","performanceTimestampProvider","delegate","performance","animationFrameProvider","schedule","callback","request","requestAnimationFrame","cancel","cancelAnimationFrame","handle","timestamp","provider","start","id","run","elapsed","ObjectUnsubscribedError","Subject","currentObservers","observers","hasError","thrownError","AnonymousSubject","_throwIfClosed","defineProperty","get","enumerable","configurable","_checkFinalizedStatuses","_innerSubscribe","asObservable","BehaviorSubject","_value","getValue","subscription","dateTimestampProvider","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","Infinity","_buffer","_infiniteTimeWindow","Math","max","_trimBuffer","copy","adjustedBufferSize","last","AsyncSubject","_hasValue","_isComplete","resolved","Action","scheduler","work","state","delay","intervalProvider","setInterval","AsyncAction","pending","recycleAsyncId","requestAsyncId","_id","flush","_scheduler","execute","_execute","_delay","errorValue","errored","actions","nextHandle","activeHandles","findAndClearHandle","setImmediate","clearImmediate","immediateProvider","AsapAction","_scheduled","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","_active","action","AsapScheduler","flushId","asyncScheduler","async","QueueAction","QueueScheduler","AnimationFrameAction","AnimationFrameScheduler","VirtualTimeScheduler","maxFrames","VirtualAction","frame","frameTimeFactor","active","Number","isFinite","sort","sortActions","isScheduler","popScheduler","isArrayLike","isPromise","isInteropObservable","isAsyncIterable","obj","createInvalidObservableTypeError","NotificationKind","isIterable","Symbol_iterator","readableStreamLikeToAsyncGenerator","readableStream","reader","getReader","read","releaseLock","isReadableStreamLike","innerFrom","obs","array","promise","fromAsyncIterable","iterable","iterable_1","iterable_1_1","asyncIterable","asyncIterable_1","asyncIterable_1_1","process","catch","executeSchedule","parentSubscription","repeat","scheduleSubscription","observeOn","subscribeOn","scheduleAsyncIterable","scheduled","scheduleObservable","scheduleArray","schedulePromise","scheduleIterable","scheduleReadableStreamLike","isValidDate","isNaN","TimeoutError","info","timeoutErrorFactory","project","mapOneOrManyArgs","callOrApply","mergeMap","resultSelector","concurrent","ii","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","buffer","isComplete","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","_loop_1","bufferedValue","mergeInternals","mergeAll","concatAll","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","target","eventName","addEventListener","removeEventListener","isEventTarget","methodName","addListener","removeListener","isNodeStyleEventEmitter","toCommonHandlerRegistry","on","off","isJQueryStyleEventEmitter","subTarget","timer","dueTime","intervalOrScheduler","intervalDuration","due","merge","defaultValue","popNumber","sources","filter","predicate","race","subscriptions","raceInit","take","count","seen","delayWhen","delayDurationSelector","subscriptionDelay","mapTo","share","connector","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","reset","resetAndUnsubscribe","dest","handleReset","onSubscriber","throttleTime","duration","duration$","durationSelector","leading","trailing","hasValue","sendValue","throttled","endThrottling","cleanupThrottling","startThrottle","throttle","BLOCKED_ATTRIBUTES","SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST","SVG_TAGS","HIGHLY_SENSITIVE_INPUT_TYPES","getHierarchy","element","hierarchy","list","bytesLimit","numChars","node","ensureUnicodePythonCompatible","ensureListUnderLimit","targetEl","ancestors","current","parentElement","tagName","getAncestors","el","toLowerCase","properties","tag","siblings","children","indexOfType","prevSiblingTag","previousElementSibling","prevSib","getAttribute","classes","classList","attributes","filteredAttributes","attr","isSensitiveElement","isNonSensitiveElement","filteredAttributes_1","filteredAttributes_1_1","substring","keys","attrs","getElementProperties","nested","replace","elements","entries","val","SENSITIVE_TAGS","isElementPointerCursor","actionType","computedStyle","window","getComputedStyle","getPropertyValue","createShouldTrackEvent","autocaptureOptions","allowlist","isAlwaysCaptureCursorPointer","pageUrlAllowlist","shouldTrackEventResolver","isPageUrlAllowed","location","href","elementType","isCursorPointer","hasMatchAnyAllowedSelector","some","selector","matches","isNonSensitiveString","text","test","isContentEditable","HTMLElement","getText","childNodes","child","childText","nodeType","textContent","split","url","allowedUrl","match","removeEmptyProperties","filteredProperties","trim","isEmpty","getNearestLabel","labelElement","querySelector","labelText","getClosestElement","selectors","getEventTagProps","constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG","constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT","constants.AMPLITUDE_EVENT_PROP_PAGE_URL","filterOutNonTrackableEvents","event","closestTrackedAncestor","getEventProperties","dataAttributePrefix","rect","getBoundingClientRect","left","top","ariaLabel","prefix","getAttributeNames","attributeName","startsWith","attributeKey","attributeValue","getAttributesWithPrefix","nearestLabel","round","document","title","innerHeight","innerWidth","HTMLAnchorElement","addAdditionalEventProperties","type","selectorAllowlist","isCapturingCursorPointer","baseEvent","isElementBasedEvent","targetElementProperties","extractDataFromDataSource","dataSource","contextElement","sourceType","sourceElement","scopingElement","documentElement","scope","closest","getDataSource","elementExtractType","attribute","executeActions","ev","data","destinationKey","WindowMessenger","origin","endpoint","requestCallbacks","onSelect","notify","onTrack","logger","debug","JSON","stringify","opener","postMessage","sendRequest","random","substr","handleResponse","response","responseData","warn","setup","isElementSelectable","cssSelectorAllowlist","actionClickAllowlist","amplitudeVisualTaggingSelectorInstance","eventData","actionData_1","scriptElement","createElement","src","once","head","appendChild","amplitudeVisualTaggingSelector","visualHighlightClass","messenger","close","trackClicks","closingNotifier","amplitude","allObservables","shouldTrackEvent","evaluateTriggers","clickObservable","comparisonTrigger","hasPrev","targetChanged","samePos","abs","screenX","screenY","triggers","debounceTime","activeTask","lastValue","lastTime","emit","emitWhenIdle","targetTime","bufferedClicks","click","currentBuffer","clicks","clickType","clicks_1","clicks_1_1","track","trackActionClick","shouldTrackActionClick","mutationObservable","navigateObservable","filteredClickObservable","closestActionClickEl","clickEvent","changeObservables","mutationOrNavigate","actionClicks","schedulerArg","first","each","with","_with","meta","originalSourceSubscription","timerSubscription","startTimer","innerSubscriber","innerIndex","outerIndex","actionClick","ObservablesEnum","createMutationObservable","observer","mutationObserver","MutationObserver","mutations","observe","childList","characterData","subtree","disconnect","createClickObservable","capture","eventTypeToBrowserEventMap","groupLabeledEventIdsByEventType","labeledEvents","groupedLabeledEvents","values","acc","browserEvent","Set","labeledEvents_1","labeledEvents_1_1","le","definition","def","event_type","console","createLabeledEventToTriggerMap","labeledEventToTriggerMap","Map","triggers_1","triggers_1_1","trigger","conditions","condition","eventId","existingTriggers","matchEventToLabeledEvents","filters","every","subprop_key","subprop_op","subprop_value","matchEventToFilter","TriggerEvaluator","evaluate","pageActions","matchingTriggers","leToTriggerMap","labeledEvents_2","labeledEvents_2_1","triggers_2","e_6","triggers_2_1","matchLabeledEventsToTriggers","matchingTriggers_1","matchingTriggers_1_1","update","autocapturePlugin","visualTaggingOptions","enabled","createTriggerEvaluator","remoteConfigFetch","remotePageActions","recomputePageActionsData","error_1","changeObservable","change","navigation","navigate","mutation","ClickObservable","ChangeObservable","NavigateObservable","MutationObservable","createObservables","clickTrackingSubscription","changeSubscription","changeEvent","trackChange","actionClickSubscription","constants.AMPLITUDE_ORIGINS_MAP","subscriptions_1","subscriptions_1_1","rageCssSelectors","rageClicks","deadCssSelectors","deadClicks","combinedCssSelectors","shouldTrackRageClick","shouldTrackDeadClick","enrichedMutationObservable","rageClickSubscription","clickWindow","clickPtr","firstClick","lastClick","rageClickEvent","toISOString","X","clientX","Y","clientY","Time","time","trackRageClicks","deadClickSubscription","deadClickEvent","trackDeadClick"],"mappings":"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"}
1
+ {"version":3,"file":"amplitude-min.js","sources":["../../../../node_modules/tslib/tslib.es6.js","../../../analytics-core/lib/esm/types/element-interactions.js","../../../analytics-remote-config/node_modules/@amplitude/analytics-types/lib/esm/server-zone.js","../../../analytics-remote-config/node_modules/@amplitude/analytics-types/lib/esm/status.js","../../../analytics-core/lib/esm/types/frustration-interactions.js","../../../analytics-remote-config/node_modules/@amplitude/analytics-core/lib/esm/transports/base.js","../../../analytics-remote-config/lib/esm/remote-config.js","../../../analytics-remote-config/lib/esm/index.js","../../../src/constants.ts","../../../../node_modules/rxjs/dist/esm5/internal/util/isFunction.js","../../../../node_modules/rxjs/dist/esm5/internal/util/createErrorClass.js","../../../../node_modules/rxjs/dist/esm5/internal/util/UnsubscriptionError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/arrRemove.js","../../../../node_modules/rxjs/dist/esm5/internal/Subscription.js","../../../../node_modules/rxjs/dist/esm5/internal/config.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/timeoutProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/util/reportUnhandledError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/noop.js","../../../../node_modules/rxjs/dist/esm5/internal/util/errorContext.js","../../../../node_modules/rxjs/dist/esm5/internal/Subscriber.js","../../../../node_modules/rxjs/dist/esm5/internal/symbol/observable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/identity.js","../../../../node_modules/rxjs/dist/esm5/internal/Observable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/pipe.js","../../../../node_modules/rxjs/dist/esm5/internal/util/lift.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/OperatorSubscriber.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/ConnectableObservable.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/refCount.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/performanceTimestampProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/dom/animationFrames.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrameProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/util/ObjectUnsubscribedError.js","../../../../node_modules/rxjs/dist/esm5/internal/Subject.js","../../../../node_modules/rxjs/dist/esm5/internal/BehaviorSubject.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/dateTimestampProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/ReplaySubject.js","../../../../node_modules/rxjs/dist/esm5/internal/AsyncSubject.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/Action.js","../../../../node_modules/rxjs/dist/esm5/internal/util/Immediate.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/intervalProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncAction.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/immediateProvider.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapAction.js","../../../../node_modules/rxjs/dist/esm5/internal/Scheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsyncScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AsapScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/asap.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/async.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueAction.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/QueueScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/queue.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameAction.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/AnimationFrameScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/animationFrame.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduler/VirtualTimeScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/empty.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isScheduler.js","../../../../node_modules/rxjs/dist/esm5/internal/util/args.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isArrayLike.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isPromise.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isInteropObservable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isAsyncIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/throwUnobservableError.js","../../../../node_modules/rxjs/dist/esm5/internal/symbol/iterator.js","../../../../node_modules/rxjs/dist/esm5/internal/Notification.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isReadableStreamLike.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/innerFrom.js","../../../../node_modules/rxjs/dist/esm5/internal/util/executeSchedule.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/observeOn.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/subscribeOn.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleAsyncIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduled.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleObservable.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleArray.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/schedulePromise.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleIterable.js","../../../../node_modules/rxjs/dist/esm5/internal/scheduled/scheduleReadableStreamLike.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/from.js","../../../../node_modules/rxjs/dist/esm5/internal/util/isDate.js","../../../../node_modules/rxjs/dist/esm5/internal/util/EmptyError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/ArgumentOutOfRangeError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/NotFoundError.js","../../../../node_modules/rxjs/dist/esm5/internal/util/SequenceError.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/timeout.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/map.js","../../../../node_modules/rxjs/dist/esm5/internal/util/mapOneOrManyArgs.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeMap.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeInternals.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mergeAll.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/concat.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/concatAll.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/fromEvent.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/timer.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/merge.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/never.js","../../../../node_modules/rxjs/dist/esm5/internal/util/argsOrArgArray.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/filter.js","../../../../node_modules/rxjs/dist/esm5/internal/observable/race.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/take.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/delayWhen.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/ignoreElements.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/mapTo.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/share.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/throttleTime.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/throttle.js","../../../src/hierarchy.ts","../../../src/helpers.ts","../../../src/pageActions/actions.ts","../../../src/libs/messenger.ts","../../../src/autocapture/track-click.ts","../../../../node_modules/rxjs/dist/esm5/internal/operators/debounceTime.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/buffer.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/pairwise.js","../../../../node_modules/rxjs/dist/esm5/internal/operators/delay.js","../../../src/autocapture/track-action-click.ts","../../../../node_modules/rxjs/dist/esm5/internal/operators/switchMap.js","../../../src/observables.ts","../../../src/autocapture-plugin.ts","../../../src/pageActions/triggers.ts","../../../src/pageActions/matchEventToFilter.ts","../../../src/autocapture/track-change.ts","../../../src/frustration-plugin.ts","../../../src/autocapture/track-rage-click.ts","../../../src/autocapture/track-dead-click.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol, Iterator */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g = Object.create((typeof Iterator === \"function\" ? Iterator : Object).prototype);\r\n return g.next = verb(0), g[\"throw\"] = verb(1), g[\"return\"] = verb(2), typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = Object.create((typeof AsyncIterator === \"function\" ? AsyncIterator : Object).prototype), verb(\"next\"), verb(\"throw\"), verb(\"return\", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }\r\n function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nvar ownKeys = function(o) {\r\n ownKeys = Object.getOwnPropertyNames || function (o) {\r\n var ar = [];\r\n for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\r\n return ar;\r\n };\r\n return ownKeys(o);\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose, inner;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n if (async) inner = dispose;\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n if (inner) dispose = function() { try { inner.call(this); } catch (e) { return Promise.reject(e); } };\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n var r, s = 0;\r\n function next() {\r\n while (r = env.stack.pop()) {\r\n try {\r\n if (!r.async && s === 1) return s = 0, env.stack.push(r), Promise.resolve().then(next);\r\n if (r.dispose) {\r\n var result = r.dispose.call(r.value);\r\n if (r.async) return s |= 2, Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n else s |= 1;\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (s === 1) return env.hasError ? Promise.reject(env.error) : Promise.resolve();\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport function __rewriteRelativeImportExtension(path, preserveJsx) {\r\n if (typeof path === \"string\" && /^\\.\\.?\\//.test(path)) {\r\n return path.replace(/\\.(tsx)$|((?:\\.d)?)((?:\\.[^./]+?)?)\\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {\r\n return tsx ? preserveJsx ? \".jsx\" : \".js\" : d && (!ext || !cm) ? m : (d + ext + \".\" + cm.toLowerCase() + \"js\");\r\n });\r\n }\r\n return path;\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __esDecorate: __esDecorate,\r\n __runInitializers: __runInitializers,\r\n __propKey: __propKey,\r\n __setFunctionName: __setFunctionName,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n __rewriteRelativeImportExtension: __rewriteRelativeImportExtension,\r\n};\r\n","/**\n * Default CSS selectors to define which elements on the page to track.\n * Extend this list to include additional elements to track. For example:\n * ```\n * autocapturePlugin({\n * cssSelectorAllowlist: [...DEFAULT_CSS_SELECTOR_ALLOWLIST, \".my-class\"],\n * })\n * ```\n */\nexport var DEFAULT_CSS_SELECTOR_ALLOWLIST = [\n 'a',\n 'button',\n 'input',\n 'select',\n 'textarea',\n 'label',\n 'video',\n 'audio',\n '[contenteditable=\"true\" i]',\n '[data-amp-default-track]',\n '.amp-default-track',\n];\n/**\n * Default prefix to allow the plugin to capture data attributes as an event property.\n */\nexport var DEFAULT_DATA_ATTRIBUTE_PREFIX = 'data-amp-track-';\n/**\n * Default list of elements on the page should be tracked when the page changes.\n */\nexport var DEFAULT_ACTION_CLICK_ALLOWLIST = ['div', 'span', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6'];\n//# sourceMappingURL=element-interactions.js.map","export var ServerZone;\n(function (ServerZone) {\n ServerZone[\"US\"] = \"US\";\n ServerZone[\"EU\"] = \"EU\";\n ServerZone[\"STAGING\"] = \"STAGING\";\n})(ServerZone || (ServerZone = {}));\n//# sourceMappingURL=server-zone.js.map","/** The status of an event. */\nexport var Status;\n(function (Status) {\n /** The status could not be determined. */\n Status[\"Unknown\"] = \"unknown\";\n /** The event was skipped due to configuration or callbacks. */\n Status[\"Skipped\"] = \"skipped\";\n /** The event was sent successfully. */\n Status[\"Success\"] = \"success\";\n /** A user or device in the payload is currently rate limited and should try again later. */\n Status[\"RateLimit\"] = \"rate_limit\";\n /** The sent payload was too large to be processed. */\n Status[\"PayloadTooLarge\"] = \"payload_too_large\";\n /** The event could not be processed. */\n Status[\"Invalid\"] = \"invalid\";\n /** A server-side error ocurred during submission. */\n Status[\"Failed\"] = \"failed\";\n /** a server or client side error occuring when a request takes too long and is cancelled */\n Status[\"Timeout\"] = \"Timeout\";\n /** NodeJS runtime environment error.. E.g. disconnected from network */\n Status[\"SystemError\"] = \"SystemError\";\n})(Status || (Status = {}));\n//# sourceMappingURL=status.js.map","import { __read, __spreadArray } from \"tslib\";\nvar CLICKABLE_ELEMENT_SELECTORS = [\n 'a',\n 'button',\n '[role=\"button\"]',\n '[role=\"link\"]',\n '[role=\"menuitem\"]',\n '[role=\"menuitemcheckbox\"]',\n '[role=\"menuitemradio\"]',\n '[role=\"option\"]',\n '[role=\"tab\"]',\n '[role=\"treeitem\"]',\n '[contenteditable=\"true\" i]',\n];\n/**\n * Default CSS selectors for dead clicks tracking\n */\nexport var DEFAULT_DEAD_CLICK_ALLOWLIST = __spreadArray([\n 'input[type=\"button\"]',\n 'input[type=\"submit\"]',\n 'input[type=\"reset\"]',\n 'input[type=\"image\"]',\n 'input[type=\"file\"]'\n], __read(CLICKABLE_ELEMENT_SELECTORS), false);\n/**\n * Default CSS selectors for rage clicks tracking\n */\nexport var DEFAULT_RAGE_CLICK_ALLOWLIST = ['*'];\n/**\n * Default time window for dead clicks (3 seconds)\n */\nexport var DEFAULT_DEAD_CLICK_WINDOW_MS = 3000;\n/**\n * Default time window for rage clicks (1 second)\n */\nexport var DEFAULT_RAGE_CLICK_WINDOW_MS = 1000;\n/**\n * Default threshold for rage clicks (4 clicks)\n */\nexport var DEFAULT_RAGE_CLICK_THRESHOLD = 4;\n//# sourceMappingURL=frustration-interactions.js.map","/* eslint-disable @typescript-eslint/no-unsafe-argument */\n/* eslint-disable @typescript-eslint/no-unsafe-assignment */\n/* eslint-disable @typescript-eslint/no-unsafe-call */\nimport { Status } from '@amplitude/analytics-types';\nvar BaseTransport = /** @class */ (function () {\n function BaseTransport() {\n }\n BaseTransport.prototype.send = function (_serverUrl, _payload) {\n return Promise.resolve(null);\n };\n BaseTransport.prototype.buildResponse = function (responseJSON) {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;\n if (typeof responseJSON !== 'object') {\n return null;\n }\n var statusCode = responseJSON.code || 0;\n var status = this.buildStatus(statusCode);\n switch (status) {\n case Status.Success:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n eventsIngested: (_a = responseJSON.events_ingested) !== null && _a !== void 0 ? _a : 0,\n payloadSizeBytes: (_b = responseJSON.payload_size_bytes) !== null && _b !== void 0 ? _b : 0,\n serverUploadTime: (_c = responseJSON.server_upload_time) !== null && _c !== void 0 ? _c : 0,\n },\n };\n case Status.Invalid:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_d = responseJSON.error) !== null && _d !== void 0 ? _d : '',\n missingField: (_e = responseJSON.missing_field) !== null && _e !== void 0 ? _e : '',\n eventsWithInvalidFields: (_f = responseJSON.events_with_invalid_fields) !== null && _f !== void 0 ? _f : {},\n eventsWithMissingFields: (_g = responseJSON.events_with_missing_fields) !== null && _g !== void 0 ? _g : {},\n eventsWithInvalidIdLengths: (_h = responseJSON.events_with_invalid_id_lengths) !== null && _h !== void 0 ? _h : {},\n epsThreshold: (_j = responseJSON.eps_threshold) !== null && _j !== void 0 ? _j : 0,\n exceededDailyQuotaDevices: (_k = responseJSON.exceeded_daily_quota_devices) !== null && _k !== void 0 ? _k : {},\n silencedDevices: (_l = responseJSON.silenced_devices) !== null && _l !== void 0 ? _l : [],\n silencedEvents: (_m = responseJSON.silenced_events) !== null && _m !== void 0 ? _m : [],\n throttledDevices: (_o = responseJSON.throttled_devices) !== null && _o !== void 0 ? _o : {},\n throttledEvents: (_p = responseJSON.throttled_events) !== null && _p !== void 0 ? _p : [],\n },\n };\n case Status.PayloadTooLarge:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_q = responseJSON.error) !== null && _q !== void 0 ? _q : '',\n },\n };\n case Status.RateLimit:\n return {\n status: status,\n statusCode: statusCode,\n body: {\n error: (_r = responseJSON.error) !== null && _r !== void 0 ? _r : '',\n epsThreshold: (_s = responseJSON.eps_threshold) !== null && _s !== void 0 ? _s : 0,\n throttledDevices: (_t = responseJSON.throttled_devices) !== null && _t !== void 0 ? _t : {},\n throttledUsers: (_u = responseJSON.throttled_users) !== null && _u !== void 0 ? _u : {},\n exceededDailyQuotaDevices: (_v = responseJSON.exceeded_daily_quota_devices) !== null && _v !== void 0 ? _v : {},\n exceededDailyQuotaUsers: (_w = responseJSON.exceeded_daily_quota_users) !== null && _w !== void 0 ? _w : {},\n throttledEvents: (_x = responseJSON.throttled_events) !== null && _x !== void 0 ? _x : [],\n },\n };\n case Status.Timeout:\n default:\n return {\n status: status,\n statusCode: statusCode,\n };\n }\n };\n BaseTransport.prototype.buildStatus = function (code) {\n if (code >= 200 && code < 300) {\n return Status.Success;\n }\n if (code === 429) {\n return Status.RateLimit;\n }\n if (code === 413) {\n return Status.PayloadTooLarge;\n }\n if (code === 408) {\n return Status.Timeout;\n }\n if (code >= 400 && code < 500) {\n return Status.Invalid;\n }\n if (code >= 500) {\n return Status.Failed;\n }\n return Status.Unknown;\n };\n return BaseTransport;\n}());\nexport { BaseTransport };\n//# sourceMappingURL=base.js.map","import { __assign, __awaiter, __generator, __values } from \"tslib\";\nimport { BaseTransport } from '@amplitude/analytics-core';\nimport { ServerZone, Status } from '@amplitude/analytics-types';\nvar UNEXPECTED_NETWORK_ERROR_MESSAGE = 'Network error occurred, remote config fetch failed';\nvar SUCCESS_REMOTE_CONFIG = 'Remote config successfully fetched';\nvar MAX_RETRIES_EXCEEDED_MESSAGE = 'Remote config fetch rejected due to exceeded retry count';\nvar TIMEOUT_MESSAGE = 'Remote config fetch rejected due to timeout after 5 seconds';\nvar UNEXPECTED_ERROR_MESSAGE = 'Unexpected error occurred';\nexport var REMOTE_CONFIG_SERVER_URL = 'https://sr-client-cfg.amplitude.com/config';\nexport var REMOTE_CONFIG_SERVER_URL_STAGING = 'https://sr-client-cfg.stag2.amplitude.com/config';\nexport var REMOTE_CONFIG_SERVER_URL_EU = 'https://sr-client-cfg.eu.amplitude.com/config';\nvar RemoteConfigFetch = /** @class */ (function () {\n function RemoteConfigFetch(_a) {\n var localConfig = _a.localConfig, configKeys = _a.configKeys;\n var _this = this;\n this.retryTimeout = 1000;\n this.attempts = 0;\n this.sessionTargetingMatch = false;\n this.metrics = {};\n this.getRemoteNamespaceConfig = function (configNamespace, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var fetchStartTime, configAPIResponse, remoteConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n fetchStartTime = Date.now();\n return [4 /*yield*/, this.fetchWithTimeout(sessionId)];\n case 1:\n configAPIResponse = _a.sent();\n if (configAPIResponse) {\n remoteConfig = configAPIResponse.configs && configAPIResponse.configs[configNamespace];\n if (remoteConfig) {\n this.metrics.fetchTimeAPISuccess = Date.now() - fetchStartTime;\n return [2 /*return*/, remoteConfig];\n }\n }\n this.metrics.fetchTimeAPIFail = Date.now() - fetchStartTime;\n return [2 /*return*/, undefined];\n }\n });\n }); };\n this.getRemoteConfig = function (configNamespace, key, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var namespaceConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.getRemoteNamespaceConfig(configNamespace, sessionId)];\n case 1:\n namespaceConfig = _a.sent();\n return [2 /*return*/, namespaceConfig === null || namespaceConfig === void 0 ? void 0 : namespaceConfig[key]];\n }\n });\n }); };\n this.fetchWithTimeout = function (sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var controller, timeoutId, remoteConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n controller = new AbortController();\n timeoutId = setTimeout(function () { return controller.abort(); }, 5000);\n return [4 /*yield*/, this.fetchRemoteConfig(controller.signal, sessionId)];\n case 1:\n remoteConfig = _a.sent();\n clearTimeout(timeoutId);\n return [2 /*return*/, remoteConfig];\n }\n });\n }); };\n this.fetchRemoteConfig = function (signal, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var urlParams, _a, _b, configKey, options, serverUrl, res, parsedStatus, e_1, knownError;\n var e_2, _c;\n var _d;\n return __generator(this, function (_e) {\n switch (_e.label) {\n case 0:\n if (sessionId === this.lastFetchedSessionId && this.attempts >= this.localConfig.flushMaxRetries) {\n return [2 /*return*/, this.completeRequest({ err: MAX_RETRIES_EXCEEDED_MESSAGE })];\n }\n else if (signal.aborted) {\n return [2 /*return*/, this.completeRequest({ err: TIMEOUT_MESSAGE })];\n }\n else if (sessionId !== this.lastFetchedSessionId) {\n this.lastFetchedSessionId = sessionId;\n this.attempts = 0;\n }\n _e.label = 1;\n case 1:\n _e.trys.push([1, 3, , 4]);\n urlParams = new URLSearchParams({\n api_key: this.localConfig.apiKey,\n });\n try {\n for (_a = __values(this.configKeys), _b = _a.next(); !_b.done; _b = _a.next()) {\n configKey = _b.value;\n urlParams.append('config_keys', configKey);\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_b && !_b.done && (_c = _a.return)) _c.call(_a);\n }\n finally { if (e_2) throw e_2.error; }\n }\n if (sessionId) {\n urlParams.set('session_id', String(sessionId));\n }\n options = {\n headers: {\n Accept: '*/*',\n },\n method: 'GET',\n };\n serverUrl = \"\".concat(this.getServerUrl(), \"?\").concat(urlParams.toString());\n this.attempts += 1;\n return [4 /*yield*/, fetch(serverUrl, __assign(__assign({}, options), { signal: signal }))];\n case 2:\n res = _e.sent();\n if (res === null) {\n return [2 /*return*/, this.completeRequest({ err: UNEXPECTED_ERROR_MESSAGE })];\n }\n parsedStatus = new BaseTransport().buildStatus(res.status);\n switch (parsedStatus) {\n case Status.Success:\n this.attempts = 0;\n return [2 /*return*/, this.parseAndStoreConfig(res)];\n case Status.Failed:\n return [2 /*return*/, this.retryFetch(signal, sessionId)];\n default:\n return [2 /*return*/, this.completeRequest({ err: UNEXPECTED_NETWORK_ERROR_MESSAGE })];\n }\n return [3 /*break*/, 4];\n case 3:\n e_1 = _e.sent();\n knownError = e_1;\n if (signal.aborted) {\n return [2 /*return*/, this.completeRequest({ err: TIMEOUT_MESSAGE })];\n }\n return [2 /*return*/, this.completeRequest({ err: (_d = knownError.message) !== null && _d !== void 0 ? _d : UNEXPECTED_ERROR_MESSAGE })];\n case 4: return [2 /*return*/];\n }\n });\n }); };\n this.retryFetch = function (signal, sessionId) { return __awaiter(_this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, new Promise(function (resolve) { return setTimeout(resolve, _this.attempts * _this.retryTimeout); })];\n case 1:\n _a.sent();\n return [2 /*return*/, this.fetchRemoteConfig(signal, sessionId)];\n }\n });\n }); };\n this.parseAndStoreConfig = function (res) { return __awaiter(_this, void 0, void 0, function () {\n var remoteConfig;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, res.json()];\n case 1:\n remoteConfig = (_a.sent());\n this.completeRequest({ success: SUCCESS_REMOTE_CONFIG });\n return [2 /*return*/, remoteConfig];\n }\n });\n }); };\n this.localConfig = localConfig;\n this.configKeys = configKeys;\n }\n RemoteConfigFetch.prototype.getServerUrl = function () {\n if (this.localConfig.configServerUrl) {\n return this.localConfig.configServerUrl;\n }\n if (this.localConfig.serverZone === ServerZone.STAGING) {\n return REMOTE_CONFIG_SERVER_URL_STAGING;\n }\n if (this.localConfig.serverZone === ServerZone.EU) {\n return REMOTE_CONFIG_SERVER_URL_EU;\n }\n return REMOTE_CONFIG_SERVER_URL;\n };\n RemoteConfigFetch.prototype.completeRequest = function (_a) {\n var err = _a.err, success = _a.success;\n if (err) {\n throw new Error(err);\n }\n else if (success) {\n this.localConfig.loggerProvider.log(success);\n }\n };\n return RemoteConfigFetch;\n}());\nexport { RemoteConfigFetch };\nexport var createRemoteConfigFetch = function (_a) {\n var localConfig = _a.localConfig, configKeys = _a.configKeys;\n return __awaiter(void 0, void 0, void 0, function () {\n return __generator(this, function (_b) {\n return [2 /*return*/, new RemoteConfigFetch({ localConfig: localConfig, configKeys: configKeys })];\n });\n });\n};\n//# sourceMappingURL=remote-config.js.map","import * as remoteConfigFetch from './remote-config';\nexport var createRemoteConfigFetch = remoteConfigFetch.createRemoteConfigFetch;\n//# sourceMappingURL=index.js.map","export const PLUGIN_NAME = '@amplitude/plugin-autocapture-browser';\nexport const FRUSTRATION_PLUGIN_NAME = '@amplitude/plugin-frustration-browser';\n\nexport const AMPLITUDE_ELEMENT_CLICKED_EVENT = '[Amplitude] Element Clicked';\nexport const AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT = '[Amplitude] Dead Click';\nexport const AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT = '[Amplitude] Rage Click';\nexport const AMPLITUDE_ELEMENT_CHANGED_EVENT = '[Amplitude] Element Changed';\n\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_ID = '[Amplitude] Element ID';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_CLASS = '[Amplitude] Element Class';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_TAG = '[Amplitude] Element Tag';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_TEXT = '[Amplitude] Element Text';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_HIERARCHY = '[Amplitude] Element Hierarchy';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_HREF = '[Amplitude] Element Href';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT = '[Amplitude] Element Position Left';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP = '[Amplitude] Element Position Top';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL = '[Amplitude] Element Aria Label';\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES = '[Amplitude] Element Attributes';\n\nexport const AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL = '[Amplitude] Element Parent Label';\nexport const AMPLITUDE_EVENT_PROP_PAGE_URL = '[Amplitude] Page URL';\nexport const AMPLITUDE_EVENT_PROP_PAGE_TITLE = '[Amplitude] Page Title';\nexport const AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT = '[Amplitude] Viewport Height';\nexport const AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH = '[Amplitude] Viewport Width';\n\n// Visual Tagging related constants\nexport const AMPLITUDE_ORIGIN = 'https://app.amplitude.com';\nexport const AMPLITUDE_ORIGIN_EU = 'https://app.eu.amplitude.com';\nexport const AMPLITUDE_ORIGIN_STAGING = 'https://apps.stag2.amplitude.com';\nexport const AMPLITUDE_ORIGINS_MAP = {\n US: AMPLITUDE_ORIGIN,\n EU: AMPLITUDE_ORIGIN_EU,\n STAGING: AMPLITUDE_ORIGIN_STAGING,\n};\n\nexport const AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL =\n 'https://cdn.amplitude.com/libs/visual-tagging-selector-1.0.0-alpha.js.gz';\n// This is the class name used by the visual tagging selector to highlight the selected element.\n// Should not use this class in the selector.\nexport const AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS = 'amp-visual-tagging-selector-highlight';\n","export function isFunction(value) {\n return typeof value === 'function';\n}\n//# sourceMappingURL=isFunction.js.map","export function createErrorClass(createImpl) {\n var _super = function (instance) {\n Error.call(instance);\n instance.stack = new Error().stack;\n };\n var ctorFunc = createImpl(_super);\n ctorFunc.prototype = Object.create(Error.prototype);\n ctorFunc.prototype.constructor = ctorFunc;\n return ctorFunc;\n}\n//# sourceMappingURL=createErrorClass.js.map","import { createErrorClass } from './createErrorClass';\nexport var UnsubscriptionError = createErrorClass(function (_super) {\n return function UnsubscriptionErrorImpl(errors) {\n _super(this);\n this.message = errors\n ? errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ')\n : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n };\n});\n//# sourceMappingURL=UnsubscriptionError.js.map","export function arrRemove(arr, item) {\n if (arr) {\n var index = arr.indexOf(item);\n 0 <= index && arr.splice(index, 1);\n }\n}\n//# sourceMappingURL=arrRemove.js.map","import { __read, __spreadArray, __values } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nimport { arrRemove } from './util/arrRemove';\nvar Subscription = (function () {\n function Subscription(initialTeardown) {\n this.initialTeardown = initialTeardown;\n this.closed = false;\n this._parentage = null;\n this._finalizers = null;\n }\n Subscription.prototype.unsubscribe = function () {\n var e_1, _a, e_2, _b;\n var errors;\n if (!this.closed) {\n this.closed = true;\n var _parentage = this._parentage;\n if (_parentage) {\n this._parentage = null;\n if (Array.isArray(_parentage)) {\n try {\n for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {\n var parent_1 = _parentage_1_1.value;\n parent_1.remove(this);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n else {\n _parentage.remove(this);\n }\n }\n var initialFinalizer = this.initialTeardown;\n if (isFunction(initialFinalizer)) {\n try {\n initialFinalizer();\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? e.errors : [e];\n }\n }\n var _finalizers = this._finalizers;\n if (_finalizers) {\n this._finalizers = null;\n try {\n for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {\n var finalizer = _finalizers_1_1.value;\n try {\n execFinalizer(finalizer);\n }\n catch (err) {\n errors = errors !== null && errors !== void 0 ? errors : [];\n if (err instanceof UnsubscriptionError) {\n errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));\n }\n else {\n errors.push(err);\n }\n }\n }\n }\n catch (e_2_1) { e_2 = { error: e_2_1 }; }\n finally {\n try {\n if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);\n }\n finally { if (e_2) throw e_2.error; }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n }\n };\n Subscription.prototype.add = function (teardown) {\n var _a;\n if (teardown && teardown !== this) {\n if (this.closed) {\n execFinalizer(teardown);\n }\n else {\n if (teardown instanceof Subscription) {\n if (teardown.closed || teardown._hasParent(this)) {\n return;\n }\n teardown._addParent(this);\n }\n (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);\n }\n }\n };\n Subscription.prototype._hasParent = function (parent) {\n var _parentage = this._parentage;\n return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));\n };\n Subscription.prototype._addParent = function (parent) {\n var _parentage = this._parentage;\n this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;\n };\n Subscription.prototype._removeParent = function (parent) {\n var _parentage = this._parentage;\n if (_parentage === parent) {\n this._parentage = null;\n }\n else if (Array.isArray(_parentage)) {\n arrRemove(_parentage, parent);\n }\n };\n Subscription.prototype.remove = function (teardown) {\n var _finalizers = this._finalizers;\n _finalizers && arrRemove(_finalizers, teardown);\n if (teardown instanceof Subscription) {\n teardown._removeParent(this);\n }\n };\n Subscription.EMPTY = (function () {\n var empty = new Subscription();\n empty.closed = true;\n return empty;\n })();\n return Subscription;\n}());\nexport { Subscription };\nexport var EMPTY_SUBSCRIPTION = Subscription.EMPTY;\nexport function isSubscription(value) {\n return (value instanceof Subscription ||\n (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));\n}\nfunction execFinalizer(finalizer) {\n if (isFunction(finalizer)) {\n finalizer();\n }\n else {\n finalizer.unsubscribe();\n }\n}\n//# sourceMappingURL=Subscription.js.map","export var config = {\n onUnhandledError: null,\n onStoppedNotification: null,\n Promise: undefined,\n useDeprecatedSynchronousErrorHandling: false,\n useDeprecatedNextContext: false,\n};\n//# sourceMappingURL=config.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var timeoutProvider = {\n setTimeout: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = timeoutProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setTimeout) {\n return delegate.setTimeout.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearTimeout: function (handle) {\n var delegate = timeoutProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=timeoutProvider.js.map","import { config } from '../config';\nimport { timeoutProvider } from '../scheduler/timeoutProvider';\nexport function reportUnhandledError(err) {\n timeoutProvider.setTimeout(function () {\n var onUnhandledError = config.onUnhandledError;\n if (onUnhandledError) {\n onUnhandledError(err);\n }\n else {\n throw err;\n }\n });\n}\n//# sourceMappingURL=reportUnhandledError.js.map","export function noop() { }\n//# sourceMappingURL=noop.js.map","import { config } from '../config';\nvar context = null;\nexport function errorContext(cb) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n var isRoot = !context;\n if (isRoot) {\n context = { errorThrown: false, error: null };\n }\n cb();\n if (isRoot) {\n var _a = context, errorThrown = _a.errorThrown, error = _a.error;\n context = null;\n if (errorThrown) {\n throw error;\n }\n }\n }\n else {\n cb();\n }\n}\nexport function captureError(err) {\n if (config.useDeprecatedSynchronousErrorHandling && context) {\n context.errorThrown = true;\n context.error = err;\n }\n}\n//# sourceMappingURL=errorContext.js.map","import { __extends } from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { isSubscription, Subscription } from './Subscription';\nimport { config } from './config';\nimport { reportUnhandledError } from './util/reportUnhandledError';\nimport { noop } from './util/noop';\nimport { nextNotification, errorNotification, COMPLETE_NOTIFICATION } from './NotificationFactories';\nimport { timeoutProvider } from './scheduler/timeoutProvider';\nimport { captureError } from './util/errorContext';\nvar Subscriber = (function (_super) {\n __extends(Subscriber, _super);\n function Subscriber(destination) {\n var _this = _super.call(this) || this;\n _this.isStopped = false;\n if (destination) {\n _this.destination = destination;\n if (isSubscription(destination)) {\n destination.add(_this);\n }\n }\n else {\n _this.destination = EMPTY_OBSERVER;\n }\n return _this;\n }\n Subscriber.create = function (next, error, complete) {\n return new SafeSubscriber(next, error, complete);\n };\n Subscriber.prototype.next = function (value) {\n if (this.isStopped) {\n handleStoppedNotification(nextNotification(value), this);\n }\n else {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (this.isStopped) {\n handleStoppedNotification(errorNotification(err), this);\n }\n else {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (this.isStopped) {\n handleStoppedNotification(COMPLETE_NOTIFICATION, this);\n }\n else {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n this.destination = null;\n }\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n try {\n this.destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n };\n Subscriber.prototype._complete = function () {\n try {\n this.destination.complete();\n }\n finally {\n this.unsubscribe();\n }\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar _bind = Function.prototype.bind;\nfunction bind(fn, thisArg) {\n return _bind.call(fn, thisArg);\n}\nvar ConsumerObserver = (function () {\n function ConsumerObserver(partialObserver) {\n this.partialObserver = partialObserver;\n }\n ConsumerObserver.prototype.next = function (value) {\n var partialObserver = this.partialObserver;\n if (partialObserver.next) {\n try {\n partialObserver.next(value);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n ConsumerObserver.prototype.error = function (err) {\n var partialObserver = this.partialObserver;\n if (partialObserver.error) {\n try {\n partialObserver.error(err);\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n else {\n handleUnhandledError(err);\n }\n };\n ConsumerObserver.prototype.complete = function () {\n var partialObserver = this.partialObserver;\n if (partialObserver.complete) {\n try {\n partialObserver.complete();\n }\n catch (error) {\n handleUnhandledError(error);\n }\n }\n };\n return ConsumerObserver;\n}());\nvar SafeSubscriber = (function (_super) {\n __extends(SafeSubscriber, _super);\n function SafeSubscriber(observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n var partialObserver;\n if (isFunction(observerOrNext) || !observerOrNext) {\n partialObserver = {\n next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),\n error: error !== null && error !== void 0 ? error : undefined,\n complete: complete !== null && complete !== void 0 ? complete : undefined,\n };\n }\n else {\n var context_1;\n if (_this && config.useDeprecatedNextContext) {\n context_1 = Object.create(observerOrNext);\n context_1.unsubscribe = function () { return _this.unsubscribe(); };\n partialObserver = {\n next: observerOrNext.next && bind(observerOrNext.next, context_1),\n error: observerOrNext.error && bind(observerOrNext.error, context_1),\n complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),\n };\n }\n else {\n partialObserver = observerOrNext;\n }\n }\n _this.destination = new ConsumerObserver(partialObserver);\n return _this;\n }\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\nfunction handleUnhandledError(error) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n captureError(error);\n }\n else {\n reportUnhandledError(error);\n }\n}\nfunction defaultErrorHandler(err) {\n throw err;\n}\nfunction handleStoppedNotification(notification, subscriber) {\n var onStoppedNotification = config.onStoppedNotification;\n onStoppedNotification && timeoutProvider.setTimeout(function () { return onStoppedNotification(notification, subscriber); });\n}\nexport var EMPTY_OBSERVER = {\n closed: true,\n next: noop,\n error: defaultErrorHandler,\n complete: noop,\n};\n//# sourceMappingURL=Subscriber.js.map","export var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();\n//# sourceMappingURL=observable.js.map","export function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map","import { SafeSubscriber, Subscriber } from './Subscriber';\nimport { isSubscription } from './Subscription';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nimport { isFunction } from './util/isFunction';\nimport { errorContext } from './util/errorContext';\nvar Observable = (function () {\n function Observable(subscribe) {\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var _this = this;\n var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);\n errorContext(function () {\n var _a = _this, operator = _a.operator, source = _a.source;\n subscriber.add(operator\n ?\n operator.call(subscriber, source)\n : source\n ?\n _this._subscribe(subscriber)\n :\n _this._trySubscribe(subscriber));\n });\n return subscriber;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n sink.error(err);\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscriber = new SafeSubscriber({\n next: function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n subscriber.unsubscribe();\n }\n },\n error: reject,\n complete: resolve,\n });\n _this.subscribe(subscriber);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var _a;\n return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n var _a;\n return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;\n}\nfunction isObserver(value) {\n return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);\n}\nfunction isSubscriber(value) {\n return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));\n}\n//# sourceMappingURL=Observable.js.map","import { identity } from './identity';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (fns.length === 0) {\n return identity;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map","import { isFunction } from './isFunction';\nexport function hasLift(source) {\n return isFunction(source === null || source === void 0 ? void 0 : source.lift);\n}\nexport function operate(init) {\n return function (source) {\n if (hasLift(source)) {\n return source.lift(function (liftedSource) {\n try {\n return init(liftedSource, this);\n }\n catch (err) {\n this.error(err);\n }\n });\n }\n throw new TypeError('Unable to lift unknown Observable type');\n };\n}\n//# sourceMappingURL=lift.js.map","import { __extends } from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {\n return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);\n}\nvar OperatorSubscriber = (function (_super) {\n __extends(OperatorSubscriber, _super);\n function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {\n var _this = _super.call(this, destination) || this;\n _this.onFinalize = onFinalize;\n _this.shouldUnsubscribe = shouldUnsubscribe;\n _this._next = onNext\n ? function (value) {\n try {\n onNext(value);\n }\n catch (err) {\n destination.error(err);\n }\n }\n : _super.prototype._next;\n _this._error = onError\n ? function (err) {\n try {\n onError(err);\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._error;\n _this._complete = onComplete\n ? function () {\n try {\n onComplete();\n }\n catch (err) {\n destination.error(err);\n }\n finally {\n this.unsubscribe();\n }\n }\n : _super.prototype._complete;\n return _this;\n }\n OperatorSubscriber.prototype.unsubscribe = function () {\n var _a;\n if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {\n var closed_1 = this.closed;\n _super.prototype.unsubscribe.call(this);\n !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));\n }\n };\n return OperatorSubscriber;\n}(Subscriber));\nexport { OperatorSubscriber };\n//# sourceMappingURL=OperatorSubscriber.js.map","import { __extends } from \"tslib\";\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nimport { hasLift } from '../util/lift';\nvar ConnectableObservable = (function (_super) {\n __extends(ConnectableObservable, _super);\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._subject = null;\n _this._refCount = 0;\n _this._connection = null;\n if (hasLift(source)) {\n _this.lift = source.lift;\n }\n return _this;\n }\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n };\n ConnectableObservable.prototype._teardown = function () {\n this._refCount = 0;\n var _connection = this._connection;\n this._subject = this._connection = null;\n _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();\n };\n ConnectableObservable.prototype.connect = function () {\n var _this = this;\n var connection = this._connection;\n if (!connection) {\n connection = this._connection = new Subscription();\n var subject_1 = this.getSubject();\n connection.add(this.source.subscribe(createOperatorSubscriber(subject_1, undefined, function () {\n _this._teardown();\n subject_1.complete();\n }, function (err) {\n _this._teardown();\n subject_1.error(err);\n }, function () { return _this._teardown(); })));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return higherOrderRefCount()(this);\n };\n return ConnectableObservable;\n}(Observable));\nexport { ConnectableObservable };\n//# sourceMappingURL=ConnectableObservable.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function refCount() {\n return operate(function (source, subscriber) {\n var connection = null;\n source._refCount++;\n var refCounter = createOperatorSubscriber(subscriber, undefined, undefined, undefined, function () {\n if (!source || source._refCount <= 0 || 0 < --source._refCount) {\n connection = null;\n return;\n }\n var sharedConnection = source._connection;\n var conn = connection;\n connection = null;\n if (sharedConnection && (!conn || sharedConnection === conn)) {\n sharedConnection.unsubscribe();\n }\n subscriber.unsubscribe();\n });\n source.subscribe(refCounter);\n if (!refCounter.closed) {\n connection = source.connect();\n }\n });\n}\n//# sourceMappingURL=refCount.js.map","export var performanceTimestampProvider = {\n now: function () {\n return (performanceTimestampProvider.delegate || performance).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=performanceTimestampProvider.js.map","import { Observable } from '../../Observable';\nimport { performanceTimestampProvider } from '../../scheduler/performanceTimestampProvider';\nimport { animationFrameProvider } from '../../scheduler/animationFrameProvider';\nexport function animationFrames(timestampProvider) {\n return timestampProvider ? animationFramesFactory(timestampProvider) : DEFAULT_ANIMATION_FRAMES;\n}\nfunction animationFramesFactory(timestampProvider) {\n return new Observable(function (subscriber) {\n var provider = timestampProvider || performanceTimestampProvider;\n var start = provider.now();\n var id = 0;\n var run = function () {\n if (!subscriber.closed) {\n id = animationFrameProvider.requestAnimationFrame(function (timestamp) {\n id = 0;\n var now = provider.now();\n subscriber.next({\n timestamp: timestampProvider ? now : timestamp,\n elapsed: now - start,\n });\n run();\n });\n }\n };\n run();\n return function () {\n if (id) {\n animationFrameProvider.cancelAnimationFrame(id);\n }\n };\n });\n}\nvar DEFAULT_ANIMATION_FRAMES = animationFramesFactory();\n//# sourceMappingURL=animationFrames.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Subscription } from '../Subscription';\nexport var animationFrameProvider = {\n schedule: function (callback) {\n var request = requestAnimationFrame;\n var cancel = cancelAnimationFrame;\n var delegate = animationFrameProvider.delegate;\n if (delegate) {\n request = delegate.requestAnimationFrame;\n cancel = delegate.cancelAnimationFrame;\n }\n var handle = request(function (timestamp) {\n cancel = undefined;\n callback(timestamp);\n });\n return new Subscription(function () { return cancel === null || cancel === void 0 ? void 0 : cancel(handle); });\n },\n requestAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.requestAnimationFrame) || requestAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n cancelAnimationFrame: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = animationFrameProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.cancelAnimationFrame) || cancelAnimationFrame).apply(void 0, __spreadArray([], __read(args)));\n },\n delegate: undefined,\n};\n//# sourceMappingURL=animationFrameProvider.js.map","import { createErrorClass } from './createErrorClass';\nexport var ObjectUnsubscribedError = createErrorClass(function (_super) {\n return function ObjectUnsubscribedErrorImpl() {\n _super(this);\n this.name = 'ObjectUnsubscribedError';\n this.message = 'object unsubscribed';\n };\n});\n//# sourceMappingURL=ObjectUnsubscribedError.js.map","import { __extends, __values } from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscription, EMPTY_SUBSCRIPTION } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { arrRemove } from './util/arrRemove';\nimport { errorContext } from './util/errorContext';\nvar Subject = (function (_super) {\n __extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.closed = false;\n _this.currentObservers = null;\n _this.observers = [];\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype._throwIfClosed = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n };\n Subject.prototype.next = function (value) {\n var _this = this;\n errorContext(function () {\n var e_1, _a;\n _this._throwIfClosed();\n if (!_this.isStopped) {\n if (!_this.currentObservers) {\n _this.currentObservers = Array.from(_this.observers);\n }\n try {\n for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {\n var observer = _c.value;\n observer.next(value);\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (_c && !_c.done && (_a = _b.return)) _a.call(_b);\n }\n finally { if (e_1) throw e_1.error; }\n }\n }\n });\n };\n Subject.prototype.error = function (err) {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.hasError = _this.isStopped = true;\n _this.thrownError = err;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().error(err);\n }\n }\n });\n };\n Subject.prototype.complete = function () {\n var _this = this;\n errorContext(function () {\n _this._throwIfClosed();\n if (!_this.isStopped) {\n _this.isStopped = true;\n var observers = _this.observers;\n while (observers.length) {\n observers.shift().complete();\n }\n }\n });\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = this.closed = true;\n this.observers = this.currentObservers = null;\n };\n Object.defineProperty(Subject.prototype, \"observed\", {\n get: function () {\n var _a;\n return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;\n },\n enumerable: false,\n configurable: true\n });\n Subject.prototype._trySubscribe = function (subscriber) {\n this._throwIfClosed();\n return _super.prototype._trySubscribe.call(this, subscriber);\n };\n Subject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._checkFinalizedStatuses(subscriber);\n return this._innerSubscribe(subscriber);\n };\n Subject.prototype._innerSubscribe = function (subscriber) {\n var _this = this;\n var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;\n if (hasError || isStopped) {\n return EMPTY_SUBSCRIPTION;\n }\n this.currentObservers = null;\n observers.push(subscriber);\n return new Subscription(function () {\n _this.currentObservers = null;\n arrRemove(observers, subscriber);\n });\n };\n Subject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped) {\n subscriber.complete();\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = (function (_super) {\n __extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);\n };\n AnonymousSubject.prototype.error = function (err) {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);\n };\n AnonymousSubject.prototype.complete = function () {\n var _a, _b;\n (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var _a, _b;\n return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar BehaviorSubject = (function (_super) {\n __extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: false,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n !subscription.closed && subscriber.next(this._value);\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;\n if (hasError) {\n throw thrownError;\n }\n this._throwIfClosed();\n return _value;\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, (this._value = value));\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map","export var dateTimestampProvider = {\n now: function () {\n return (dateTimestampProvider.delegate || Date).now();\n },\n delegate: undefined,\n};\n//# sourceMappingURL=dateTimestampProvider.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nimport { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar ReplaySubject = (function (_super) {\n __extends(ReplaySubject, _super);\n function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {\n if (_bufferSize === void 0) { _bufferSize = Infinity; }\n if (_windowTime === void 0) { _windowTime = Infinity; }\n if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }\n var _this = _super.call(this) || this;\n _this._bufferSize = _bufferSize;\n _this._windowTime = _windowTime;\n _this._timestampProvider = _timestampProvider;\n _this._buffer = [];\n _this._infiniteTimeWindow = true;\n _this._infiniteTimeWindow = _windowTime === Infinity;\n _this._bufferSize = Math.max(1, _bufferSize);\n _this._windowTime = Math.max(1, _windowTime);\n return _this;\n }\n ReplaySubject.prototype.next = function (value) {\n var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;\n if (!isStopped) {\n _buffer.push(value);\n !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);\n }\n this._trimBuffer();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n this._throwIfClosed();\n this._trimBuffer();\n var subscription = this._innerSubscribe(subscriber);\n var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;\n var copy = _buffer.slice();\n for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {\n subscriber.next(copy[i]);\n }\n this._checkFinalizedStatuses(subscriber);\n return subscription;\n };\n ReplaySubject.prototype._trimBuffer = function () {\n var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;\n var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;\n _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);\n if (!_infiniteTimeWindow) {\n var now = _timestampProvider.now();\n var last = 0;\n for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {\n last = i;\n }\n last && _buffer.splice(0, last + 1);\n }\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\n//# sourceMappingURL=ReplaySubject.js.map","import { __extends } from \"tslib\";\nimport { Subject } from './Subject';\nvar AsyncSubject = (function (_super) {\n __extends(AsyncSubject, _super);\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._value = null;\n _this._hasValue = false;\n _this._isComplete = false;\n return _this;\n }\n AsyncSubject.prototype._checkFinalizedStatuses = function (subscriber) {\n var _a = this, hasError = _a.hasError, _hasValue = _a._hasValue, _value = _a._value, thrownError = _a.thrownError, isStopped = _a.isStopped, _isComplete = _a._isComplete;\n if (hasError) {\n subscriber.error(thrownError);\n }\n else if (isStopped || _isComplete) {\n _hasValue && subscriber.next(_value);\n subscriber.complete();\n }\n };\n AsyncSubject.prototype.next = function (value) {\n if (!this.isStopped) {\n this._value = value;\n this._hasValue = true;\n }\n };\n AsyncSubject.prototype.complete = function () {\n var _a = this, _hasValue = _a._hasValue, _value = _a._value, _isComplete = _a._isComplete;\n if (!_isComplete) {\n this._isComplete = true;\n _hasValue && _super.prototype.next.call(this, _value);\n _super.prototype.complete.call(this);\n }\n };\n return AsyncSubject;\n}(Subject));\nexport { AsyncSubject };\n//# sourceMappingURL=AsyncSubject.js.map","import { __extends } from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = (function (_super) {\n __extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map","var nextHandle = 1;\nvar resolved;\nvar activeHandles = {};\nfunction findAndClearHandle(handle) {\n if (handle in activeHandles) {\n delete activeHandles[handle];\n return true;\n }\n return false;\n}\nexport var Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n activeHandles[handle] = true;\n if (!resolved) {\n resolved = Promise.resolve();\n }\n resolved.then(function () { return findAndClearHandle(handle) && cb(); });\n return handle;\n },\n clearImmediate: function (handle) {\n findAndClearHandle(handle);\n },\n};\nexport var TestTools = {\n pending: function () {\n return Object.keys(activeHandles).length;\n }\n};\n//# sourceMappingURL=Immediate.js.map","import { __read, __spreadArray } from \"tslib\";\nexport var intervalProvider = {\n setInterval: function (handler, timeout) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n var delegate = intervalProvider.delegate;\n if (delegate === null || delegate === void 0 ? void 0 : delegate.setInterval) {\n return delegate.setInterval.apply(delegate, __spreadArray([handler, timeout], __read(args)));\n }\n return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));\n },\n clearInterval: function (handle) {\n var delegate = intervalProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=intervalProvider.js.map","import { __extends } from \"tslib\";\nimport { Action } from './Action';\nimport { intervalProvider } from './intervalProvider';\nimport { arrRemove } from '../util/arrRemove';\nvar AsyncAction = (function (_super) {\n __extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {\n if (delay === void 0) { delay = 0; }\n return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay != null && this.delay === delay && this.pending === false) {\n return id;\n }\n if (id != null) {\n intervalProvider.clearInterval(id);\n }\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, _delay) {\n var errored = false;\n var errorValue;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = e ? e : new Error('Scheduled action threw falsy error');\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype.unsubscribe = function () {\n if (!this.closed) {\n var _a = this, id = _a.id, scheduler = _a.scheduler;\n var actions = scheduler.actions;\n this.work = this.state = this.scheduler = null;\n this.pending = false;\n arrRemove(actions, this);\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n _super.prototype.unsubscribe.call(this);\n }\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { Immediate } from '../util/Immediate';\nvar setImmediate = Immediate.setImmediate, clearImmediate = Immediate.clearImmediate;\nexport var immediateProvider = {\n setImmediate: function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.setImmediate) || setImmediate).apply(void 0, __spreadArray([], __read(args)));\n },\n clearImmediate: function (handle) {\n var delegate = immediateProvider.delegate;\n return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);\n },\n delegate: undefined,\n};\n//# sourceMappingURL=immediateProvider.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { immediateProvider } from './immediateProvider';\nvar AsapAction = (function (_super) {\n __extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n immediateProvider.clearImmediate(id);\n if (scheduler._scheduled === id) {\n scheduler._scheduled = undefined;\n }\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction));\nexport { AsapAction };\n//# sourceMappingURL=AsapAction.js.map","import { dateTimestampProvider } from './scheduler/dateTimestampProvider';\nvar Scheduler = (function () {\n function Scheduler(schedulerActionCtor, now) {\n if (now === void 0) { now = Scheduler.now; }\n this.schedulerActionCtor = schedulerActionCtor;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) { delay = 0; }\n return new this.schedulerActionCtor(this, work).schedule(state, delay);\n };\n Scheduler.now = dateTimestampProvider.now;\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map","import { __extends } from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = (function (_super) {\n __extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) { now = Scheduler.now; }\n var _this = _super.call(this, SchedulerAction, now) || this;\n _this.actions = [];\n _this._active = false;\n return _this;\n }\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this._active) {\n actions.push(action);\n return;\n }\n var error;\n this._active = true;\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions.shift()));\n this._active = false;\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AsapScheduler = (function (_super) {\n __extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId = this._scheduled;\n this._scheduled = undefined;\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler));\nexport { AsapScheduler };\n//# sourceMappingURL=AsapScheduler.js.map","import { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport var asapScheduler = new AsapScheduler(AsapAction);\nexport var asap = asapScheduler;\n//# sourceMappingURL=asap.js.map","import { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var asyncScheduler = new AsyncScheduler(AsyncAction);\nexport var async = asyncScheduler;\n//# sourceMappingURL=async.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar QueueAction = (function (_super) {\n __extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return delay > 0 || this.closed ? _super.prototype.execute.call(this, state, delay) : this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if ((delay != null && delay > 0) || (delay == null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.flush(this);\n return 0;\n };\n return QueueAction;\n}(AsyncAction));\nexport { QueueAction };\n//# sourceMappingURL=QueueAction.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar QueueScheduler = (function (_super) {\n __extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler));\nexport { QueueScheduler };\n//# sourceMappingURL=QueueScheduler.js.map","import { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport var queueScheduler = new QueueScheduler(QueueAction);\nexport var queue = queueScheduler;\n//# sourceMappingURL=queue.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { animationFrameProvider } from './animationFrameProvider';\nvar AnimationFrameAction = (function (_super) {\n __extends(AnimationFrameAction, _super);\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler._scheduled || (scheduler._scheduled = animationFrameProvider.requestAnimationFrame(function () { return scheduler.flush(undefined); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n var _a;\n if (delay === void 0) { delay = 0; }\n if (delay != null ? delay > 0 : this.delay > 0) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n var actions = scheduler.actions;\n if (id != null && id === scheduler._scheduled && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {\n animationFrameProvider.cancelAnimationFrame(id);\n scheduler._scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction));\nexport { AnimationFrameAction };\n//# sourceMappingURL=AnimationFrameAction.js.map","import { __extends } from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AnimationFrameScheduler = (function (_super) {\n __extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this._active = true;\n var flushId;\n if (action) {\n flushId = action.id;\n }\n else {\n flushId = this._scheduled;\n this._scheduled = undefined;\n }\n var actions = this.actions;\n var error;\n action = action || actions.shift();\n do {\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n } while ((action = actions[0]) && action.id === flushId && actions.shift());\n this._active = false;\n if (error) {\n while ((action = actions[0]) && action.id === flushId && actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler));\nexport { AnimationFrameScheduler };\n//# sourceMappingURL=AnimationFrameScheduler.js.map","import { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport var animationFrameScheduler = new AnimationFrameScheduler(AnimationFrameAction);\nexport var animationFrame = animationFrameScheduler;\n//# sourceMappingURL=animationFrame.js.map","import { __extends } from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { Subscription } from '../Subscription';\nimport { AsyncScheduler } from './AsyncScheduler';\nvar VirtualTimeScheduler = (function (_super) {\n __extends(VirtualTimeScheduler, _super);\n function VirtualTimeScheduler(schedulerActionCtor, maxFrames) {\n if (schedulerActionCtor === void 0) { schedulerActionCtor = VirtualAction; }\n if (maxFrames === void 0) { maxFrames = Infinity; }\n var _this = _super.call(this, schedulerActionCtor, function () { return _this.frame; }) || this;\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n var error;\n var action;\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n if ((error = action.execute(action.state, action.delay))) {\n break;\n }\n }\n if (error) {\n while ((action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler));\nexport { VirtualTimeScheduler };\nvar VirtualAction = (function (_super) {\n __extends(VirtualAction, _super);\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) { index = (scheduler.index += 1); }\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) { delay = 0; }\n if (Number.isFinite(delay)) {\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n }\n else {\n return Subscription.EMPTY;\n }\n };\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return 1;\n };\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) { delay = 0; }\n return undefined;\n };\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n }\n else if (a.index > b.index) {\n return 1;\n }\n else {\n return -1;\n }\n }\n else if (a.delay > b.delay) {\n return 1;\n }\n else {\n return -1;\n }\n };\n return VirtualAction;\n}(AsyncAction));\nexport { VirtualAction };\n//# sourceMappingURL=VirtualTimeScheduler.js.map","import { Observable } from '../Observable';\nexport var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map","import { isFunction } from './isFunction';\nexport function isScheduler(value) {\n return value && isFunction(value.schedule);\n}\n//# sourceMappingURL=isScheduler.js.map","import { isFunction } from './isFunction';\nimport { isScheduler } from './isScheduler';\nfunction last(arr) {\n return arr[arr.length - 1];\n}\nexport function popResultSelector(args) {\n return isFunction(last(args)) ? args.pop() : undefined;\n}\nexport function popScheduler(args) {\n return isScheduler(last(args)) ? args.pop() : undefined;\n}\nexport function popNumber(args, defaultValue) {\n return typeof last(args) === 'number' ? args.pop() : defaultValue;\n}\n//# sourceMappingURL=args.js.map","export var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map","import { isFunction } from \"./isFunction\";\nexport function isPromise(value) {\n return isFunction(value === null || value === void 0 ? void 0 : value.then);\n}\n//# sourceMappingURL=isPromise.js.map","import { observable as Symbol_observable } from '../symbol/observable';\nimport { isFunction } from './isFunction';\nexport function isInteropObservable(input) {\n return isFunction(input[Symbol_observable]);\n}\n//# sourceMappingURL=isInteropObservable.js.map","import { isFunction } from './isFunction';\nexport function isAsyncIterable(obj) {\n return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);\n}\n//# sourceMappingURL=isAsyncIterable.js.map","export function createInvalidObservableTypeError(input) {\n return new TypeError(\"You provided \" + (input !== null && typeof input === 'object' ? 'an invalid object' : \"'\" + input + \"'\") + \" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.\");\n}\n//# sourceMappingURL=throwUnobservableError.js.map","export function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = getSymbolIterator();\n//# sourceMappingURL=iterator.js.map","import { EMPTY } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nimport { isFunction } from './util/isFunction';\nexport var NotificationKind;\n(function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nvar Notification = (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n return observeNotification(this, observer);\n };\n Notification.prototype.do = function (nextHandler, errorHandler, completeHandler) {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n return kind === 'N' ? nextHandler === null || nextHandler === void 0 ? void 0 : nextHandler(value) : kind === 'E' ? errorHandler === null || errorHandler === void 0 ? void 0 : errorHandler(error) : completeHandler === null || completeHandler === void 0 ? void 0 : completeHandler();\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n var _a;\n return isFunction((_a = nextOrObserver) === null || _a === void 0 ? void 0 : _a.next)\n ? this.observe(nextOrObserver)\n : this.do(nextOrObserver, error, complete);\n };\n Notification.prototype.toObservable = function () {\n var _a = this, kind = _a.kind, value = _a.value, error = _a.error;\n var result = kind === 'N'\n ?\n of(value)\n :\n kind === 'E'\n ?\n throwError(function () { return error; })\n :\n kind === 'C'\n ?\n EMPTY\n :\n 0;\n if (!result) {\n throw new TypeError(\"Unexpected notification kind \" + kind);\n }\n return result;\n };\n Notification.createNext = function (value) {\n return new Notification('N', value);\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n return Notification;\n}());\nexport { Notification };\nexport function observeNotification(notification, observer) {\n var _a, _b, _c;\n var _d = notification, kind = _d.kind, value = _d.value, error = _d.error;\n if (typeof kind !== 'string') {\n throw new TypeError('Invalid notification, missing \"kind\"');\n }\n kind === 'N' ? (_a = observer.next) === null || _a === void 0 ? void 0 : _a.call(observer, value) : kind === 'E' ? (_b = observer.error) === null || _b === void 0 ? void 0 : _b.call(observer, error) : (_c = observer.complete) === null || _c === void 0 ? void 0 : _c.call(observer);\n}\n//# sourceMappingURL=Notification.js.map","import { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from './isFunction';\nexport function isIterable(input) {\n return isFunction(input === null || input === void 0 ? void 0 : input[Symbol_iterator]);\n}\n//# sourceMappingURL=isIterable.js.map","import { __asyncGenerator, __await, __generator } from \"tslib\";\nimport { isFunction } from './isFunction';\nexport function readableStreamLikeToAsyncGenerator(readableStream) {\n return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {\n var reader, _a, value, done;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n reader = readableStream.getReader();\n _b.label = 1;\n case 1:\n _b.trys.push([1, , 9, 10]);\n _b.label = 2;\n case 2:\n if (!true) return [3, 8];\n return [4, __await(reader.read())];\n case 3:\n _a = _b.sent(), value = _a.value, done = _a.done;\n if (!done) return [3, 5];\n return [4, __await(void 0)];\n case 4: return [2, _b.sent()];\n case 5: return [4, __await(value)];\n case 6: return [4, _b.sent()];\n case 7:\n _b.sent();\n return [3, 2];\n case 8: return [3, 10];\n case 9:\n reader.releaseLock();\n return [7];\n case 10: return [2];\n }\n });\n });\n}\nexport function isReadableStreamLike(obj) {\n return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);\n}\n//# sourceMappingURL=isReadableStreamLike.js.map","import { __asyncValues, __awaiter, __generator, __values } from \"tslib\";\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isPromise } from '../util/isPromise';\nimport { Observable } from '../Observable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isIterable } from '../util/isIterable';\nimport { isReadableStreamLike, readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nimport { isFunction } from '../util/isFunction';\nimport { reportUnhandledError } from '../util/reportUnhandledError';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function innerFrom(input) {\n if (input instanceof Observable) {\n return input;\n }\n if (input != null) {\n if (isInteropObservable(input)) {\n return fromInteropObservable(input);\n }\n if (isArrayLike(input)) {\n return fromArrayLike(input);\n }\n if (isPromise(input)) {\n return fromPromise(input);\n }\n if (isAsyncIterable(input)) {\n return fromAsyncIterable(input);\n }\n if (isIterable(input)) {\n return fromIterable(input);\n }\n if (isReadableStreamLike(input)) {\n return fromReadableStreamLike(input);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\nexport function fromInteropObservable(obj) {\n return new Observable(function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (isFunction(obs.subscribe)) {\n return obs.subscribe(subscriber);\n }\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n });\n}\nexport function fromArrayLike(array) {\n return new Observable(function (subscriber) {\n for (var i = 0; i < array.length && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n });\n}\nexport function fromPromise(promise) {\n return new Observable(function (subscriber) {\n promise\n .then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, reportUnhandledError);\n });\n}\nexport function fromIterable(iterable) {\n return new Observable(function (subscriber) {\n var e_1, _a;\n try {\n for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {\n var value = iterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return;\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n subscriber.complete();\n });\n}\nexport function fromAsyncIterable(asyncIterable) {\n return new Observable(function (subscriber) {\n process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });\n });\n}\nexport function fromReadableStreamLike(readableStream) {\n return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));\n}\nfunction process(asyncIterable, subscriber) {\n var asyncIterable_1, asyncIterable_1_1;\n var e_2, _a;\n return __awaiter(this, void 0, void 0, function () {\n var value, e_2_1;\n return __generator(this, function (_b) {\n switch (_b.label) {\n case 0:\n _b.trys.push([0, 5, 6, 11]);\n asyncIterable_1 = __asyncValues(asyncIterable);\n _b.label = 1;\n case 1: return [4, asyncIterable_1.next()];\n case 2:\n if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];\n value = asyncIterable_1_1.value;\n subscriber.next(value);\n if (subscriber.closed) {\n return [2];\n }\n _b.label = 3;\n case 3: return [3, 1];\n case 4: return [3, 11];\n case 5:\n e_2_1 = _b.sent();\n e_2 = { error: e_2_1 };\n return [3, 11];\n case 6:\n _b.trys.push([6, , 9, 10]);\n if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];\n return [4, _a.call(asyncIterable_1)];\n case 7:\n _b.sent();\n _b.label = 8;\n case 8: return [3, 10];\n case 9:\n if (e_2) throw e_2.error;\n return [7];\n case 10: return [7];\n case 11:\n subscriber.complete();\n return [2];\n }\n });\n });\n}\n//# sourceMappingURL=innerFrom.js.map","export function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {\n if (delay === void 0) { delay = 0; }\n if (repeat === void 0) { repeat = false; }\n var scheduleSubscription = scheduler.schedule(function () {\n work();\n if (repeat) {\n parentSubscription.add(this.schedule(null, delay));\n }\n else {\n this.unsubscribe();\n }\n }, delay);\n parentSubscription.add(scheduleSubscription);\n if (!repeat) {\n return scheduleSubscription;\n }\n}\n//# sourceMappingURL=executeSchedule.js.map","import { executeSchedule } from '../util/executeSchedule';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));\n });\n}\n//# sourceMappingURL=observeOn.js.map","import { operate } from '../util/lift';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) { delay = 0; }\n return operate(function (source, subscriber) {\n subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));\n });\n}\n//# sourceMappingURL=subscribeOn.js.map","import { Observable } from '../Observable';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleAsyncIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n executeSchedule(subscriber, scheduler, function () {\n var iterator = input[Symbol.asyncIterator]();\n executeSchedule(subscriber, scheduler, function () {\n iterator.next().then(function (result) {\n if (result.done) {\n subscriber.complete();\n }\n else {\n subscriber.next(result.value);\n }\n });\n }, 0, true);\n });\n });\n}\n//# sourceMappingURL=scheduleAsyncIterable.js.map","import { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nimport { isAsyncIterable } from '../util/isAsyncIterable';\nimport { createInvalidObservableTypeError } from '../util/throwUnobservableError';\nimport { isReadableStreamLike } from '../util/isReadableStreamLike';\nimport { scheduleReadableStreamLike } from './scheduleReadableStreamLike';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n if (isAsyncIterable(input)) {\n return scheduleAsyncIterable(input, scheduler);\n }\n if (isIterable(input)) {\n return scheduleIterable(input, scheduler);\n }\n if (isReadableStreamLike(input)) {\n return scheduleReadableStreamLike(input, scheduler);\n }\n }\n throw createInvalidObservableTypeError(input);\n}\n//# sourceMappingURL=scheduled.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function scheduleObservable(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=scheduleObservable.js.map","import { Observable } from '../Observable';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var i = 0;\n return scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n }\n else {\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n this.schedule();\n }\n }\n });\n });\n}\n//# sourceMappingURL=scheduleArray.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { observeOn } from '../operators/observeOn';\nimport { subscribeOn } from '../operators/subscribeOn';\nexport function schedulePromise(input, scheduler) {\n return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));\n}\n//# sourceMappingURL=schedulePromise.js.map","import { Observable } from '../Observable';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { isFunction } from '../util/isFunction';\nimport { executeSchedule } from '../util/executeSchedule';\nexport function scheduleIterable(input, scheduler) {\n return new Observable(function (subscriber) {\n var iterator;\n executeSchedule(subscriber, scheduler, function () {\n iterator = input[Symbol_iterator]();\n executeSchedule(subscriber, scheduler, function () {\n var _a;\n var value;\n var done;\n try {\n (_a = iterator.next(), value = _a.value, done = _a.done);\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n }\n }, 0, true);\n });\n return function () { return isFunction(iterator === null || iterator === void 0 ? void 0 : iterator.return) && iterator.return(); };\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map","import { scheduleAsyncIterable } from './scheduleAsyncIterable';\nimport { readableStreamLikeToAsyncGenerator } from '../util/isReadableStreamLike';\nexport function scheduleReadableStreamLike(input, scheduler) {\n return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);\n}\n//# sourceMappingURL=scheduleReadableStreamLike.js.map","import { scheduled } from '../scheduled/scheduled';\nimport { innerFrom } from './innerFrom';\nexport function from(input, scheduler) {\n return scheduler ? scheduled(input, scheduler) : innerFrom(input);\n}\n//# sourceMappingURL=from.js.map","export function isValidDate(value) {\n return value instanceof Date && !isNaN(value);\n}\n//# sourceMappingURL=isDate.js.map","import { createErrorClass } from './createErrorClass';\nexport var EmptyError = createErrorClass(function (_super) {\n return function EmptyErrorImpl() {\n _super(this);\n this.name = 'EmptyError';\n this.message = 'no elements in sequence';\n };\n});\n//# sourceMappingURL=EmptyError.js.map","import { createErrorClass } from './createErrorClass';\nexport var ArgumentOutOfRangeError = createErrorClass(function (_super) {\n return function ArgumentOutOfRangeErrorImpl() {\n _super(this);\n this.name = 'ArgumentOutOfRangeError';\n this.message = 'argument out of range';\n };\n});\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map","import { createErrorClass } from './createErrorClass';\nexport var NotFoundError = createErrorClass(function (_super) {\n return function NotFoundErrorImpl(message) {\n _super(this);\n this.name = 'NotFoundError';\n this.message = message;\n };\n});\n//# sourceMappingURL=NotFoundError.js.map","import { createErrorClass } from './createErrorClass';\nexport var SequenceError = createErrorClass(function (_super) {\n return function SequenceErrorImpl(message) {\n _super(this);\n this.name = 'SequenceError';\n this.message = message;\n };\n});\n//# sourceMappingURL=SequenceError.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { isValidDate } from '../util/isDate';\nimport { operate } from '../util/lift';\nimport { innerFrom } from '../observable/innerFrom';\nimport { createErrorClass } from '../util/createErrorClass';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { executeSchedule } from '../util/executeSchedule';\nexport var TimeoutError = createErrorClass(function (_super) {\n return function TimeoutErrorImpl(info) {\n if (info === void 0) { info = null; }\n _super(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n this.info = info;\n };\n});\nexport function timeout(config, schedulerArg) {\n var _a = (isValidDate(config) ? { first: config } : typeof config === 'number' ? { each: config } : config), first = _a.first, each = _a.each, _b = _a.with, _with = _b === void 0 ? timeoutErrorFactory : _b, _c = _a.scheduler, scheduler = _c === void 0 ? schedulerArg !== null && schedulerArg !== void 0 ? schedulerArg : asyncScheduler : _c, _d = _a.meta, meta = _d === void 0 ? null : _d;\n if (first == null && each == null) {\n throw new TypeError('No timeout provided.');\n }\n return operate(function (source, subscriber) {\n var originalSourceSubscription;\n var timerSubscription;\n var lastValue = null;\n var seen = 0;\n var startTimer = function (delay) {\n timerSubscription = executeSchedule(subscriber, scheduler, function () {\n try {\n originalSourceSubscription.unsubscribe();\n innerFrom(_with({\n meta: meta,\n lastValue: lastValue,\n seen: seen,\n })).subscribe(subscriber);\n }\n catch (err) {\n subscriber.error(err);\n }\n }, delay);\n };\n originalSourceSubscription = source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n seen++;\n subscriber.next((lastValue = value));\n each > 0 && startTimer(each);\n }, undefined, undefined, function () {\n if (!(timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.closed)) {\n timerSubscription === null || timerSubscription === void 0 ? void 0 : timerSubscription.unsubscribe();\n }\n lastValue = null;\n }));\n !seen && startTimer(first != null ? (typeof first === 'number' ? first : +first - scheduler.now()) : each);\n });\n}\nfunction timeoutErrorFactory(info) {\n throw new TimeoutError(info);\n}\n//# sourceMappingURL=timeout.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function map(project, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n subscriber.next(project.call(thisArg, value, index++));\n }));\n });\n}\n//# sourceMappingURL=map.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { map } from \"../operators/map\";\nvar isArray = Array.isArray;\nfunction callOrApply(fn, args) {\n return isArray(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);\n}\nexport function mapOneOrManyArgs(fn) {\n return map(function (args) { return callOrApply(fn, args); });\n}\n//# sourceMappingURL=mapOneOrManyArgs.js.map","import { map } from './map';\nimport { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { mergeInternals } from './mergeInternals';\nimport { isFunction } from '../util/isFunction';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n if (isFunction(resultSelector)) {\n return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });\n}\n//# sourceMappingURL=mergeMap.js.map","import { innerFrom } from '../observable/innerFrom';\nimport { executeSchedule } from '../util/executeSchedule';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {\n var buffer = [];\n var active = 0;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () {\n if (isComplete && !buffer.length && !active) {\n subscriber.complete();\n }\n };\n var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };\n var doInnerSub = function (value) {\n expand && subscriber.next(value);\n active++;\n var innerComplete = false;\n innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {\n onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);\n if (expand) {\n outerNext(innerValue);\n }\n else {\n subscriber.next(innerValue);\n }\n }, function () {\n innerComplete = true;\n }, undefined, function () {\n if (innerComplete) {\n try {\n active--;\n var _loop_1 = function () {\n var bufferedValue = buffer.shift();\n if (innerSubScheduler) {\n executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });\n }\n else {\n doInnerSub(bufferedValue);\n }\n };\n while (buffer.length && active < concurrent) {\n _loop_1();\n }\n checkComplete();\n }\n catch (err) {\n subscriber.error(err);\n }\n }\n }));\n };\n source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {\n isComplete = true;\n checkComplete();\n }));\n return function () {\n additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();\n };\n}\n//# sourceMappingURL=mergeInternals.js.map","import { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) { concurrent = Infinity; }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map","import { concatAll } from '../operators/concatAll';\nimport { popScheduler } from '../util/args';\nimport { from } from './from';\nexport function concat() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return concatAll()(from(args, popScheduler(args)));\n}\n//# sourceMappingURL=concat.js.map","import { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map","import { __read } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Observable } from '../Observable';\nimport { mergeMap } from '../operators/mergeMap';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isFunction } from '../util/isFunction';\nimport { mapOneOrManyArgs } from '../util/mapOneOrManyArgs';\nvar nodeEventEmitterMethods = ['addListener', 'removeListener'];\nvar eventTargetMethods = ['addEventListener', 'removeEventListener'];\nvar jqueryMethods = ['on', 'off'];\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(mapOneOrManyArgs(resultSelector));\n }\n var _a = __read(isEventTarget(target)\n ? eventTargetMethods.map(function (methodName) { return function (handler) { return target[methodName](eventName, handler, options); }; })\n :\n isNodeStyleEventEmitter(target)\n ? nodeEventEmitterMethods.map(toCommonHandlerRegistry(target, eventName))\n : isJQueryStyleEventEmitter(target)\n ? jqueryMethods.map(toCommonHandlerRegistry(target, eventName))\n : [], 2), add = _a[0], remove = _a[1];\n if (!add) {\n if (isArrayLike(target)) {\n return mergeMap(function (subTarget) { return fromEvent(subTarget, eventName, options); })(innerFrom(target));\n }\n }\n if (!add) {\n throw new TypeError('Invalid event target');\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return subscriber.next(1 < args.length ? args : args[0]);\n };\n add(handler);\n return function () { return remove(handler); };\n });\n}\nfunction toCommonHandlerRegistry(target, eventName) {\n return function (methodName) { return function (handler) { return target[methodName](eventName, handler); }; };\n}\nfunction isNodeStyleEventEmitter(target) {\n return isFunction(target.addListener) && isFunction(target.removeListener);\n}\nfunction isJQueryStyleEventEmitter(target) {\n return isFunction(target.on) && isFunction(target.off);\n}\nfunction isEventTarget(target) {\n return isFunction(target.addEventListener) && isFunction(target.removeEventListener);\n}\n//# sourceMappingURL=fromEvent.js.map","import { Observable } from '../Observable';\nimport { async as asyncScheduler } from '../scheduler/async';\nimport { isScheduler } from '../util/isScheduler';\nimport { isValidDate } from '../util/isDate';\nexport function timer(dueTime, intervalOrScheduler, scheduler) {\n if (dueTime === void 0) { dueTime = 0; }\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var intervalDuration = -1;\n if (intervalOrScheduler != null) {\n if (isScheduler(intervalOrScheduler)) {\n scheduler = intervalOrScheduler;\n }\n else {\n intervalDuration = intervalOrScheduler;\n }\n }\n return new Observable(function (subscriber) {\n var due = isValidDate(dueTime) ? +dueTime - scheduler.now() : dueTime;\n if (due < 0) {\n due = 0;\n }\n var n = 0;\n return scheduler.schedule(function () {\n if (!subscriber.closed) {\n subscriber.next(n++);\n if (0 <= intervalDuration) {\n this.schedule(undefined, intervalDuration);\n }\n else {\n subscriber.complete();\n }\n }\n }, due);\n });\n}\n//# sourceMappingURL=timer.js.map","import { mergeAll } from '../operators/mergeAll';\nimport { innerFrom } from './innerFrom';\nimport { EMPTY } from './empty';\nimport { popNumber, popScheduler } from '../util/args';\nimport { from } from './from';\nexport function merge() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = popScheduler(args);\n var concurrent = popNumber(args, Infinity);\n var sources = args;\n return !sources.length\n ?\n EMPTY\n : sources.length === 1\n ?\n innerFrom(sources[0])\n :\n mergeAll(concurrent)(from(sources, scheduler));\n}\n//# sourceMappingURL=merge.js.map","import { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport var NEVER = new Observable(noop);\nexport function never() {\n return NEVER;\n}\n//# sourceMappingURL=never.js.map","var isArray = Array.isArray;\nexport function argsOrArgArray(args) {\n return args.length === 1 && isArray(args[0]) ? args[0] : args;\n}\n//# sourceMappingURL=argsOrArgArray.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function filter(predicate, thisArg) {\n return operate(function (source, subscriber) {\n var index = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));\n });\n}\n//# sourceMappingURL=filter.js.map","import { Observable } from '../Observable';\nimport { innerFrom } from './innerFrom';\nimport { argsOrArgArray } from '../util/argsOrArgArray';\nimport { createOperatorSubscriber } from '../operators/OperatorSubscriber';\nexport function race() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n sources = argsOrArgArray(sources);\n return sources.length === 1 ? innerFrom(sources[0]) : new Observable(raceInit(sources));\n}\nexport function raceInit(sources) {\n return function (subscriber) {\n var subscriptions = [];\n var _loop_1 = function (i) {\n subscriptions.push(innerFrom(sources[i]).subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (subscriptions) {\n for (var s = 0; s < subscriptions.length; s++) {\n s !== i && subscriptions[s].unsubscribe();\n }\n subscriptions = null;\n }\n subscriber.next(value);\n })));\n };\n for (var i = 0; subscriptions && !subscriber.closed && i < sources.length; i++) {\n _loop_1(i);\n }\n };\n}\n//# sourceMappingURL=race.js.map","import { EMPTY } from '../observable/empty';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function take(count) {\n return count <= 0\n ?\n function () { return EMPTY; }\n : operate(function (source, subscriber) {\n var seen = 0;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n if (++seen <= count) {\n subscriber.next(value);\n if (count <= seen) {\n subscriber.complete();\n }\n }\n }));\n });\n}\n//# sourceMappingURL=take.js.map","import { concat } from '../observable/concat';\nimport { take } from './take';\nimport { ignoreElements } from './ignoreElements';\nimport { mapTo } from './mapTo';\nimport { mergeMap } from './mergeMap';\nimport { innerFrom } from '../observable/innerFrom';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return concat(subscriptionDelay.pipe(take(1), ignoreElements()), source.pipe(delayWhen(delayDurationSelector)));\n };\n }\n return mergeMap(function (value, index) { return innerFrom(delayDurationSelector(value, index)).pipe(take(1), mapTo(value)); });\n}\n//# sourceMappingURL=delayWhen.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { noop } from '../util/noop';\nexport function ignoreElements() {\n return operate(function (source, subscriber) {\n source.subscribe(createOperatorSubscriber(subscriber, noop));\n });\n}\n//# sourceMappingURL=ignoreElements.js.map","import { map } from './map';\nexport function mapTo(value) {\n return map(function () { return value; });\n}\n//# sourceMappingURL=mapTo.js.map","import { __read, __spreadArray } from \"tslib\";\nimport { innerFrom } from '../observable/innerFrom';\nimport { Subject } from '../Subject';\nimport { SafeSubscriber } from '../Subscriber';\nimport { operate } from '../util/lift';\nexport function share(options) {\n if (options === void 0) { options = {}; }\n var _a = options.connector, connector = _a === void 0 ? function () { return new Subject(); } : _a, _b = options.resetOnError, resetOnError = _b === void 0 ? true : _b, _c = options.resetOnComplete, resetOnComplete = _c === void 0 ? true : _c, _d = options.resetOnRefCountZero, resetOnRefCountZero = _d === void 0 ? true : _d;\n return function (wrapperSource) {\n var connection;\n var resetConnection;\n var subject;\n var refCount = 0;\n var hasCompleted = false;\n var hasErrored = false;\n var cancelReset = function () {\n resetConnection === null || resetConnection === void 0 ? void 0 : resetConnection.unsubscribe();\n resetConnection = undefined;\n };\n var reset = function () {\n cancelReset();\n connection = subject = undefined;\n hasCompleted = hasErrored = false;\n };\n var resetAndUnsubscribe = function () {\n var conn = connection;\n reset();\n conn === null || conn === void 0 ? void 0 : conn.unsubscribe();\n };\n return operate(function (source, subscriber) {\n refCount++;\n if (!hasErrored && !hasCompleted) {\n cancelReset();\n }\n var dest = (subject = subject !== null && subject !== void 0 ? subject : connector());\n subscriber.add(function () {\n refCount--;\n if (refCount === 0 && !hasErrored && !hasCompleted) {\n resetConnection = handleReset(resetAndUnsubscribe, resetOnRefCountZero);\n }\n });\n dest.subscribe(subscriber);\n if (!connection &&\n refCount > 0) {\n connection = new SafeSubscriber({\n next: function (value) { return dest.next(value); },\n error: function (err) {\n hasErrored = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnError, err);\n dest.error(err);\n },\n complete: function () {\n hasCompleted = true;\n cancelReset();\n resetConnection = handleReset(reset, resetOnComplete);\n dest.complete();\n },\n });\n innerFrom(source).subscribe(connection);\n }\n })(wrapperSource);\n };\n}\nfunction handleReset(reset, on) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n if (on === true) {\n reset();\n return;\n }\n if (on === false) {\n return;\n }\n var onSubscriber = new SafeSubscriber({\n next: function () {\n onSubscriber.unsubscribe();\n reset();\n },\n });\n return innerFrom(on.apply(void 0, __spreadArray([], __read(args)))).subscribe(onSubscriber);\n}\n//# sourceMappingURL=share.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { throttle } from './throttle';\nimport { timer } from '../observable/timer';\nexport function throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration$ = timer(duration, scheduler);\n return throttle(function () { return duration$; }, config);\n}\n//# sourceMappingURL=throttleTime.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function throttle(durationSelector, config) {\n return operate(function (source, subscriber) {\n var _a = config !== null && config !== void 0 ? config : {}, _b = _a.leading, leading = _b === void 0 ? true : _b, _c = _a.trailing, trailing = _c === void 0 ? false : _c;\n var hasValue = false;\n var sendValue = null;\n var throttled = null;\n var isComplete = false;\n var endThrottling = function () {\n throttled === null || throttled === void 0 ? void 0 : throttled.unsubscribe();\n throttled = null;\n if (trailing) {\n send();\n isComplete && subscriber.complete();\n }\n };\n var cleanupThrottling = function () {\n throttled = null;\n isComplete && subscriber.complete();\n };\n var startThrottle = function (value) {\n return (throttled = innerFrom(durationSelector(value)).subscribe(createOperatorSubscriber(subscriber, endThrottling, cleanupThrottling)));\n };\n var send = function () {\n if (hasValue) {\n hasValue = false;\n var value = sendValue;\n sendValue = null;\n subscriber.next(value);\n !isComplete && startThrottle(value);\n }\n };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n hasValue = true;\n sendValue = value;\n !(throttled && !throttled.closed) && (leading ? send() : startThrottle(value));\n }, function () {\n isComplete = true;\n !(trailing && hasValue && throttled && !throttled.closed) && subscriber.complete();\n }));\n });\n}\n//# sourceMappingURL=throttle.js.map","import { isNonSensitiveElement, type JSONValue } from './helpers';\nimport type { Hierarchy, HierarchyNode } from './typings/autocapture';\n\nconst BLOCKED_ATTRIBUTES = [\n // Already captured elsewhere in the hierarchy object\n 'id',\n 'class',\n\n // non-useful and potentially large attribute\n 'style',\n\n // sensitive as prefilled form data may populate this attribute\n 'value',\n\n // DOM events\n 'onclick',\n 'onchange',\n 'oninput',\n 'onblur',\n 'onsubmit',\n 'onfocus',\n 'onkeydown',\n 'onkeyup',\n 'onkeypress',\n\n // React specific\n 'data-reactid',\n 'data-react-checksum',\n 'data-reactroot',\n];\nconst SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST = ['type'];\n\nconst SVG_TAGS = ['svg', 'path', 'g'];\nconst HIGHLY_SENSITIVE_INPUT_TYPES = ['password', 'hidden'];\nconst MAX_ATTRIBUTE_LENGTH = 128;\nconst MAX_HIERARCHY_LENGTH = 1024;\n\nexport function getElementProperties(element: Element | null): HierarchyNode | null {\n if (element === null) {\n return null;\n }\n\n const tagName = String(element.tagName).toLowerCase();\n const properties: HierarchyNode = {\n tag: tagName,\n };\n\n const siblings = Array.from(element.parentElement?.children ?? []);\n if (siblings.length) {\n properties.index = siblings.indexOf(element);\n properties.indexOfType = siblings.filter((el) => el.tagName === element.tagName).indexOf(element);\n }\n\n const prevSiblingTag = element.previousElementSibling?.tagName?.toLowerCase();\n if (prevSiblingTag) {\n properties.prevSib = String(prevSiblingTag);\n }\n\n const id = element.getAttribute('id');\n if (id) {\n properties.id = String(id);\n }\n\n const classes = Array.from(element.classList);\n if (classes.length) {\n properties.classes = classes;\n }\n\n const attributes: Record<string, string> = {};\n const attributesArray = Array.from(element.attributes);\n const filteredAttributes = attributesArray.filter((attr) => !BLOCKED_ATTRIBUTES.includes(attr.name));\n const isSensitiveElement = !isNonSensitiveElement(element);\n\n // if input is hidden or password or for SVGs, skip attribute collection entirely\n if (!HIGHLY_SENSITIVE_INPUT_TYPES.includes(String(element.getAttribute('type'))) && !SVG_TAGS.includes(tagName)) {\n for (const attr of filteredAttributes) {\n // If sensitive element, only allow certain attributes\n if (isSensitiveElement && !SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST.includes(attr.name)) {\n continue;\n }\n\n // Finally cast attribute value to string and limit attribute value length\n attributes[attr.name] = String(attr.value).substring(0, MAX_ATTRIBUTE_LENGTH);\n }\n }\n\n if (Object.keys(attributes).length) {\n properties.attrs = attributes;\n }\n\n return properties;\n}\n\nexport function getAncestors(targetEl: Element | null): Element[] {\n const ancestors: Element[] = [];\n\n if (!targetEl) {\n return ancestors;\n }\n\n // Add self to the list of ancestors\n ancestors.push(targetEl);\n let current = targetEl.parentElement;\n while (current && current.tagName !== 'HTML') {\n ancestors.push(current);\n current = current.parentElement;\n }\n return ancestors;\n}\n\n// Get the DOM hierarchy of the element, starting from the target element to the root element.\nexport const getHierarchy = (element: Element | null): Hierarchy => {\n let hierarchy: Hierarchy = [];\n if (!element) {\n return [];\n }\n\n // Get list of ancestors including itself and get properties at each level in the hierarchy\n const ancestors = getAncestors(element);\n hierarchy = ensureListUnderLimit(\n ancestors.map((el) => getElementProperties(el)),\n MAX_HIERARCHY_LENGTH,\n ) as Hierarchy;\n\n return hierarchy;\n};\n\nexport function ensureListUnderLimit(list: Hierarchy | JSONValue[], bytesLimit: number): Hierarchy | JSONValue[] {\n let numChars = 0;\n for (let i = 0; i < list.length; i++) {\n const node = list[i];\n if (node === null) {\n // simulate 'None' in python\n numChars += 4;\n } else {\n const value = ensureUnicodePythonCompatible(node);\n // Using Array.from(string).length instead of string.length\n // to correctly count Unicode characters (including emojis)\n numChars += value ? Array.from(value).length : 4;\n }\n if (numChars > bytesLimit) {\n return list.slice(0, i);\n }\n }\n return list;\n}\n\n/**\n * Converts a JSON-compatible value to a Python-compatible string representation.\n * This function handles various data types and ensures proper escaping and formatting.\n *\n * @param value - The value to be converted (can be any JSON-compatible type)\n * @param nested - Indicates if the value is nested within another structure (default: false)\n * @returns A string representation of the value compatible with Python, or null if conversion fails\n */\nexport function ensureUnicodePythonCompatible(value: HierarchyNode | JSONValue | null, nested = false): string | null {\n try {\n if (value == null) {\n // Handle null values\n if (nested) {\n return 'None'; // Represent null as 'None' in Python when nested\n }\n return null; // Return null for top-level null values\n } else if (typeof value === 'string') {\n if (nested) {\n // Escape special characters in nested strings\n value = value.replace(/\\\\/g, '\\\\\\\\').replace(/\\n/g, '\\\\n').replace(/\\t/g, '\\\\t').replace(/\\r/g, '\\\\r');\n\n // Handle quotes in the string\n if (value.includes('\"')) {\n return `'${value}'`; // Wrap in single quotes if it contains double quotes\n }\n if (value.includes(\"'\")) {\n return `\"${value.replace(/'/g, \"\\\\'\")}\"`; // Wrap in double quotes and escape single quotes\n }\n return `'${value}'`; // Default to wrapping in single quotes\n }\n return value; // Return non-nested strings as-is\n } else if (typeof value === 'boolean') {\n // Convert boolean to Python-style capitalized string\n return value ? 'True' : 'False';\n } else if (Array.isArray(value)) {\n // Handle arrays by recursively converting each element\n const elements = value.map((o) => ensureUnicodePythonCompatible(o, true));\n return `[${elements.join(', ')}]`;\n } else if (typeof value === 'object') {\n // Handle objects (dictionaries in Python)\n const entries = Object.entries(value)\n .filter(([key]) => key != null) // Filter out null keys\n .map(\n ([key, val]) =>\n `${String(ensureUnicodePythonCompatible(key, true))}: ${String(ensureUnicodePythonCompatible(val, true))}`,\n );\n let result = `{${entries.join(', ')}}`;\n\n // Handle single quotes in the resulting string\n if (result.includes(\"\\\\'\")) {\n result = result.replace(/'/g, \"'\").replace(/'/g, \"\\\\'\");\n }\n return result;\n }\n // For any other types, return their string representation;\n return value.toString();\n } catch (e) {\n // Return null if any error occurs during the conversion\n return null;\n }\n}\n","/* eslint-disable no-restricted-globals */\nimport * as constants from './constants';\nimport { ElementInteractionsOptions, ActionType } from '@amplitude/analytics-core';\nimport { getHierarchy } from './hierarchy';\n\nexport type JSONValue = string | number | boolean | null | { [x: string]: JSONValue } | Array<JSONValue>;\n\nconst SENSITIVE_TAGS = ['input', 'select', 'textarea'];\n\nexport type shouldTrackEvent = (actionType: ActionType, element: Element) => boolean;\n\nexport const isElementPointerCursor = (element: Element, actionType: ActionType): boolean => {\n /* istanbul ignore next */\n const computedStyle = window?.getComputedStyle?.(element);\n /* istanbul ignore next */\n return computedStyle?.getPropertyValue('cursor') === 'pointer' && actionType === 'click';\n};\n\nexport const createShouldTrackEvent = (\n autocaptureOptions: ElementInteractionsOptions,\n allowlist: string[], // this can be any type of css selector allow list\n isAlwaysCaptureCursorPointer = false,\n): shouldTrackEvent => {\n return (actionType: ActionType, element: Element) => {\n const { pageUrlAllowlist, shouldTrackEventResolver } = autocaptureOptions;\n\n /* istanbul ignore next */\n const tag = element?.tagName?.toLowerCase?.();\n // window, document, and Text nodes have no tag\n if (!tag) {\n return false;\n }\n\n if (shouldTrackEventResolver) {\n return shouldTrackEventResolver(actionType, element);\n }\n\n if (!isPageUrlAllowed(window.location.href, pageUrlAllowlist)) {\n return false;\n }\n\n /* istanbul ignore next */\n const elementType = String(element?.getAttribute('type')) || '';\n if (typeof elementType === 'string') {\n switch (elementType.toLowerCase()) {\n case 'hidden':\n return false;\n case 'password':\n return false;\n }\n }\n\n const isCursorPointer = isElementPointerCursor(element, actionType);\n\n if (isAlwaysCaptureCursorPointer && isCursorPointer) {\n return true;\n }\n\n /* istanbul ignore if */\n if (allowlist) {\n const hasMatchAnyAllowedSelector = allowlist.some((selector) => !!element?.matches?.(selector));\n if (!hasMatchAnyAllowedSelector) {\n return false;\n }\n }\n\n switch (tag) {\n case 'input':\n case 'select':\n case 'textarea':\n return actionType === 'change' || actionType === 'click';\n default: {\n /* istanbul ignore next */\n /* istanbul ignore next */\n if (isCursorPointer) {\n return true;\n }\n return actionType === 'click';\n }\n }\n };\n};\n\nexport const isNonSensitiveString = (text: string | null) => {\n if (text == null) {\n return false;\n }\n if (typeof text === 'string') {\n const ccRegex =\n /^(?:(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}))$/;\n if (ccRegex.test((text || '').replace(/[- ]/g, ''))) {\n return false;\n }\n const ssnRegex = /(^\\d{3}-?\\d{2}-?\\d{4}$)/;\n if (ssnRegex.test(text)) {\n return false;\n }\n }\n return true;\n};\n\nexport const isTextNode = (node: Node) => {\n return !!node && node.nodeType === 3;\n};\n\nexport const isNonSensitiveElement = (element: Element) => {\n /* istanbul ignore next */\n const tag = element?.tagName?.toLowerCase?.();\n const isContentEditable =\n element instanceof HTMLElement ? element.getAttribute('contenteditable')?.toLowerCase() === 'true' : false;\n\n return !SENSITIVE_TAGS.includes(tag) && !isContentEditable;\n};\n\n// Maybe this can be simplified with element.innerText, keep and manual concatenating for now, more research needed.\nexport const getText = (element: Element): string => {\n let text = '';\n if (isNonSensitiveElement(element) && element.childNodes && element.childNodes.length) {\n element.childNodes.forEach((child) => {\n let childText = '';\n if (isTextNode(child)) {\n if (child.textContent) {\n childText = child.textContent;\n }\n } else {\n childText = getText(child as Element);\n }\n text += childText\n .split(/(\\s+)/)\n .filter(isNonSensitiveString)\n .join('')\n .replace(/[\\r\\n]/g, ' ')\n .replace(/[ ]+/g, ' ')\n .substring(0, 255);\n });\n }\n return text;\n};\n\nexport const isPageUrlAllowed = (url: string, pageUrlAllowlist: (string | RegExp)[] | undefined) => {\n if (!pageUrlAllowlist || !pageUrlAllowlist.length) {\n return true;\n }\n return pageUrlAllowlist.some((allowedUrl) => {\n if (typeof allowedUrl === 'string') {\n return url === allowedUrl;\n }\n return url.match(allowedUrl);\n });\n};\n\nexport const getAttributesWithPrefix = (element: Element, prefix: string): { [key: string]: string } => {\n return element.getAttributeNames().reduce((attributes: { [key: string]: string }, attributeName) => {\n if (attributeName.startsWith(prefix)) {\n const attributeKey = attributeName.replace(prefix, '');\n const attributeValue = element.getAttribute(attributeName);\n if (attributeKey) {\n attributes[attributeKey] = attributeValue || '';\n }\n }\n return attributes;\n }, {});\n};\n\nexport const isEmpty = (value: unknown) => {\n return (\n value === undefined ||\n value === null ||\n (typeof value === 'object' && Object.keys(value).length === 0) ||\n (typeof value === 'string' && value.trim().length === 0)\n );\n};\n\nexport const removeEmptyProperties = (properties: { [key: string]: unknown }) => {\n return Object.keys(properties).reduce((filteredProperties: { [key: string]: unknown }, key) => {\n const value = properties[key];\n if (!isEmpty(value)) {\n filteredProperties[key] = value;\n }\n return filteredProperties;\n }, {});\n};\n\nexport const getNearestLabel = (element: Element): string => {\n const parent = element.parentElement;\n if (!parent) {\n return '';\n }\n let labelElement;\n try {\n labelElement = parent.querySelector(':scope>span,h1,h2,h3,h4,h5,h6');\n } catch (error) {\n /* istanbul ignore next */\n labelElement = null;\n }\n if (labelElement) {\n /* istanbul ignore next */\n const labelText = labelElement.textContent || '';\n return isNonSensitiveString(labelText) ? labelText : '';\n }\n return getNearestLabel(parent);\n};\n\nexport const querySelectUniqueElements = (root: Element | Document, selectors: string[]): Element[] => {\n if (root && 'querySelectorAll' in root && typeof root.querySelectorAll === 'function') {\n const elementSet = selectors.reduce((elements: Set<Element>, selector) => {\n if (selector) {\n const selectedElements = Array.from(root.querySelectorAll(selector));\n selectedElements.forEach((element) => {\n elements.add(element);\n });\n }\n return elements;\n }, new Set<Element>());\n return Array.from(elementSet);\n }\n return [];\n};\n\n// Similar as element.closest, but works with multiple selectors\nexport const getClosestElement = (element: Element | null, selectors: string[]): Element | null => {\n if (!element) {\n return null;\n }\n /* istanbul ignore next */\n if (selectors.some((selector) => element?.matches?.(selector))) {\n return element;\n }\n /* istanbul ignore next */\n return getClosestElement(element?.parentElement, selectors);\n};\n\n// Returns the element properties for the given element in Visual Labeling.\nexport const getEventTagProps = (element: Element) => {\n if (!element) {\n return {};\n }\n /* istanbul ignore next */\n const tag = element?.tagName?.toLowerCase?.();\n\n const properties: Record<string, JSONValue> = {\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG]: tag,\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT]: getText(element),\n [constants.AMPLITUDE_EVENT_PROP_PAGE_URL]: window.location.href.split('?')[0],\n };\n return removeEmptyProperties(properties);\n};\n\nexport const asyncLoadScript = (url: string) => {\n return new Promise((resolve, reject) => {\n try {\n const scriptElement = document.createElement('script');\n scriptElement.type = 'text/javascript';\n scriptElement.async = true;\n scriptElement.src = url;\n scriptElement.addEventListener(\n 'load',\n () => {\n resolve({ status: true });\n },\n { once: true },\n );\n scriptElement.addEventListener('error', () => {\n reject({\n status: false,\n message: `Failed to load the script ${url}`,\n });\n });\n /* istanbul ignore next */\n document.head?.appendChild(scriptElement);\n } catch (error) {\n /* istanbul ignore next */\n reject(error);\n }\n });\n};\n\nexport function generateUniqueId(): string {\n return `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;\n}\n\nexport const filterOutNonTrackableEvents = (event: ElementBasedTimestampedEvent<ElementBasedEvent>): boolean => {\n // Filter out changeEvent events with no target\n // This could happen when change events are triggered programmatically\n if (event.event.target === null || !event.closestTrackedAncestor) {\n return false;\n }\n\n return true;\n};\n\n// Returns the Amplitude event properties for the given element.\nexport const getEventProperties = (actionType: ActionType, element: Element, dataAttributePrefix: string) => {\n /* istanbul ignore next */\n const tag = element?.tagName?.toLowerCase?.();\n /* istanbul ignore next */\n const rect =\n typeof element.getBoundingClientRect === 'function' ? element.getBoundingClientRect() : { left: null, top: null };\n const ariaLabel = element.getAttribute('aria-label');\n const attributes = getAttributesWithPrefix(element, dataAttributePrefix);\n const nearestLabel = getNearestLabel(element);\n /* istanbul ignore next */\n const properties: Record<string, any> = {\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_ID]: element.getAttribute('id') || '',\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_CLASS]: element.getAttribute('class'),\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_HIERARCHY]: getHierarchy(element),\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG]: tag,\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT]: getText(element),\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_LEFT]: rect.left == null ? null : Math.round(rect.left),\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_POSITION_TOP]: rect.top == null ? null : Math.round(rect.top),\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_ARIA_LABEL]: ariaLabel,\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_ATTRIBUTES]: attributes,\n [constants.AMPLITUDE_EVENT_PROP_ELEMENT_PARENT_LABEL]: nearestLabel,\n [constants.AMPLITUDE_EVENT_PROP_PAGE_URL]: window.location.href.split('?')[0],\n [constants.AMPLITUDE_EVENT_PROP_PAGE_TITLE]: (typeof document !== 'undefined' && document.title) || '',\n [constants.AMPLITUDE_EVENT_PROP_VIEWPORT_HEIGHT]: window.innerHeight,\n [constants.AMPLITUDE_EVENT_PROP_VIEWPORT_WIDTH]: window.innerWidth,\n };\n if (tag === 'a' && actionType === 'click' && element instanceof HTMLAnchorElement) {\n properties[constants.AMPLITUDE_EVENT_PROP_ELEMENT_HREF] = element.href;\n }\n return removeEmptyProperties(properties);\n};\n\nexport type AutoCaptureOptionsWithDefaults = Required<\n Pick<ElementInteractionsOptions, 'debounceTime' | 'cssSelectorAllowlist' | 'actionClickAllowlist'>\n> &\n ElementInteractionsOptions;\n\nexport const addAdditionalEventProperties = <T>(\n event: T,\n type: TimestampedEvent<T>['type'],\n selectorAllowlist: string[],\n dataAttributePrefix: string,\n\n // capture the event if the cursor is a \"pointer\" when this element is clicked on\n // reason: a \"pointer\" cursor indicates that an element should be interactable\n // regardless of the element's tag name\n isCapturingCursorPointer = false,\n): TimestampedEvent<T> | ElementBasedTimestampedEvent<T> => {\n const baseEvent: BaseTimestampedEvent<T> | ElementBasedTimestampedEvent<T> = {\n event,\n timestamp: Date.now(),\n type,\n };\n\n if (isElementBasedEvent(baseEvent) && baseEvent.event.target !== null) {\n if (isCapturingCursorPointer) {\n const isCursorPointer = isElementPointerCursor(baseEvent.event.target as Element, baseEvent.type);\n if (isCursorPointer) {\n baseEvent.closestTrackedAncestor = baseEvent.event.target as HTMLElement;\n baseEvent.targetElementProperties = getEventProperties(\n baseEvent.type,\n baseEvent.closestTrackedAncestor,\n dataAttributePrefix,\n );\n return baseEvent;\n }\n }\n // Retrieve additional event properties from the target element\n const closestTrackedAncestor = getClosestElement(baseEvent.event.target as HTMLElement, selectorAllowlist);\n if (closestTrackedAncestor) {\n baseEvent.closestTrackedAncestor = closestTrackedAncestor;\n baseEvent.targetElementProperties = getEventProperties(\n baseEvent.type,\n closestTrackedAncestor,\n dataAttributePrefix,\n );\n }\n return baseEvent;\n }\n\n return baseEvent;\n};\n\n// Base TimestampedEvent type\nexport type BaseTimestampedEvent<T> = {\n event: T;\n timestamp: number;\n type: 'rage' | 'click' | 'change' | 'error' | 'navigate' | 'mutation';\n};\n\n// Specific types for events with targetElementProperties\nexport type ElementBasedEvent = MouseEvent | Event;\nexport type ElementBasedTimestampedEvent<T> = BaseTimestampedEvent<T> & {\n event: MouseEvent | Event;\n type: 'click' | 'change';\n closestTrackedAncestor: Element;\n targetElementProperties: Record<string, any>;\n};\n\nexport type evaluateTriggersFn = (\n event: ElementBasedTimestampedEvent<ElementBasedEvent>,\n) => ElementBasedTimestampedEvent<ElementBasedEvent>;\n\n// Union type for all possible TimestampedEvents\nexport type TimestampedEvent<T> = BaseTimestampedEvent<T> | ElementBasedTimestampedEvent<T>;\n\n// Type predicate\nexport function isElementBasedEvent<T>(event: BaseTimestampedEvent<T>): event is ElementBasedTimestampedEvent<T> {\n return event.type === 'click' || event.type === 'change';\n}\n\nexport interface NavigateEvent extends Event {\n readonly navigationType: 'reload' | 'push' | 'replace' | 'traverse';\n readonly destination: {\n readonly url: string;\n readonly key: string | null;\n readonly id: string | null;\n readonly index: number;\n readonly sameDocument: boolean;\n\n getState(): any;\n };\n readonly canIntercept: boolean;\n readonly userInitiated: boolean;\n readonly hashChange: boolean;\n readonly signal: AbortSignal;\n readonly formData: FormData | null;\n readonly downloadRequest: string | null;\n readonly info: any;\n readonly hasUAVisualTransition: boolean;\n /** @see https://github.com/WICG/navigation-api/pull/264 */\n readonly sourceElement: Element | null;\n\n scroll(): void;\n}\n","import type { DataSource, PageAction } from '@amplitude/analytics-core/lib/esm/types/element-interactions';\nimport { ElementBasedTimestampedEvent, ElementBasedEvent } from 'src/helpers';\n\n// Get DataSource\n/**\n * Gets the DOM element specified by the data source configuration\n * @param dataSource - Configuration for finding the target element\n * @param contextElement - The element to start searching from\n * @returns The matching DOM element or undefined if not found\n */\nexport const getDataSource = (dataSource: DataSource, contextElement: HTMLElement) => {\n // Only process DOM_ELEMENT type data sources\n if (dataSource.sourceType === 'DOM_ELEMENT') {\n // If scope is specified, find the closest ancestor matching the scope rather than using documentElement (html) as the scope\n let scopingElement: HTMLElement | null = document.documentElement;\n if (dataSource.scope && contextElement) {\n scopingElement = contextElement.closest(dataSource.scope);\n }\n\n // If we have both a scope and selector, find the matching element\n if (scopingElement && dataSource.selector) {\n return scopingElement.querySelector(dataSource.selector);\n }\n\n // Return scopingElement if no selector was specified\n return scopingElement;\n }\n\n // Return undefined for non-DOM_ELEMENT data sources\n return undefined;\n};\n\n// extract DataSource\nexport const extractDataFromDataSource = (dataSource: DataSource, contextElement: HTMLElement) => {\n // Extract from DOM Element\n if (dataSource.sourceType === 'DOM_ELEMENT') {\n const sourceElement = getDataSource(dataSource, contextElement);\n if (!sourceElement) {\n return undefined;\n }\n\n if (dataSource.elementExtractType === 'TEXT') {\n return sourceElement.textContent;\n } else if (dataSource.elementExtractType === 'ATTRIBUTE' && dataSource.attribute) {\n return sourceElement.getAttribute(dataSource.attribute);\n }\n return undefined;\n }\n\n // TODO: Extract from other source types\n return undefined;\n};\n\n// Execute actions for a condition and attach event properties to the event if needed\nexport const executeActions = (\n actions: (string | PageAction)[],\n ev: ElementBasedTimestampedEvent<ElementBasedEvent>,\n) => {\n actions.forEach((action) => {\n // Skip if actions is string until action set is implemented\n if (typeof action === 'string') {\n return;\n }\n\n if (action.actionType === 'ATTACH_EVENT_PROPERTY') {\n const data = extractDataFromDataSource(action.dataSource, ev.closestTrackedAncestor as HTMLElement);\n\n // Attach data to event\n ev.targetElementProperties[action.destinationKey] = data;\n }\n });\n};\n","/* istanbul ignore file */\n/* eslint-disable no-restricted-globals */\nimport { extractDataFromDataSource } from '../pageActions/actions';\nimport {\n AMPLITUDE_ORIGIN,\n AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL,\n AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS,\n} from '../constants';\nimport { asyncLoadScript, generateUniqueId, getEventTagProps } from '../helpers';\nimport { ILogger, Messenger, ActionType } from '@amplitude/analytics-core';\n\nexport type Action =\n | 'ping'\n | 'pong'\n | 'page-loaded'\n | 'selector-loaded'\n | 'initialize-visual-tagging-selector'\n | 'close-visual-tagging-selector'\n | 'element-selected'\n | 'track-selector-mode-changed'\n | 'track-selector-moved';\n\ninterface InitializeVisualTaggingSelectorData {\n actionType: ActionType;\n}\n\ninterface ElementSelectedData {\n '[Amplitude] Element Hierarchy'?: string;\n '[Amplitude] Element Tag'?: string;\n '[Amplitude] Element Text'?: string;\n '[Amplitude] Page URL'?: string;\n elementScreenshot?: Blob;\n}\n\ninterface TrackSelectorModeChangedData {\n newMode: string;\n pageUrl?: string;\n}\n\ninterface TrackSelectorMovedData {\n newEditorLocation: string;\n pageUrl?: string;\n}\n\nexport type ActionData = {\n ping: null | undefined;\n pong: null | undefined;\n 'page-loaded': null | undefined;\n 'selector-loaded': null | undefined;\n 'initialize-visual-tagging-selector': InitializeVisualTaggingSelectorData | null | undefined;\n 'close-visual-tagging-selector': null | undefined;\n 'element-selected': ElementSelectedData;\n 'track-selector-mode-changed': TrackSelectorModeChangedData;\n 'track-selector-moved': TrackSelectorMovedData;\n};\n\nexport interface Message<A extends Action> {\n action: A;\n data?: ActionData[A];\n}\n\ntype MessageRequest = {\n id: string;\n action: string;\n args: Record<string, any>;\n};\n\ntype MessageResponse = {\n id: string;\n action: string;\n responseData: any;\n};\n\n// TODO: use MessageChannel instead of window.postMessage\nexport class WindowMessenger implements Messenger {\n endpoint = AMPLITUDE_ORIGIN;\n logger?: ILogger;\n requestCallbacks: {\n [id: string]: {\n resolve: (data: any) => void;\n reject: (data: any) => void;\n };\n } = {};\n\n constructor({ origin = AMPLITUDE_ORIGIN }: { origin?: string } = {}) {\n this.endpoint = origin;\n }\n\n private notify(message: Message<Action> | MessageRequest) {\n this.logger?.debug?.('Message sent: ', JSON.stringify(message));\n (window.opener as WindowProxy)?.postMessage?.(message, this.endpoint);\n }\n\n // Send an async request to the parent window\n public sendRequest(action: string, args: Record<string, any>, options = { timeout: 15_000 }): Promise<any> {\n // Create Request ID\n const id = generateUniqueId();\n const request = {\n id,\n action,\n args,\n };\n\n // Create a Promise that will be resolved when the response is received\n const promise = new Promise((resolve, reject) => {\n this.requestCallbacks[id] = { resolve, reject };\n\n // Send the request\n this.notify(request);\n\n // Handle request timeouts\n if (options?.timeout > 0) {\n setTimeout(() => {\n reject(new Error(`${action} timed out (id: ${id})`));\n delete this.requestCallbacks[id];\n }, options.timeout);\n }\n });\n\n return promise;\n }\n\n // Handle messages from the parent window\n private handleResponse(response: MessageResponse) {\n if (!this.requestCallbacks[response.id]) {\n this.logger?.warn(`No callback found for request id: ${response.id}`);\n return;\n }\n\n this.requestCallbacks[response.id].resolve(response.responseData);\n delete this.requestCallbacks[response.id];\n }\n\n setup({\n logger,\n endpoint,\n isElementSelectable,\n cssSelectorAllowlist,\n actionClickAllowlist,\n }: {\n logger?: ILogger;\n endpoint?: string;\n isElementSelectable?: (action: InitializeVisualTaggingSelectorData['actionType'], element: Element) => boolean;\n cssSelectorAllowlist?: string[];\n actionClickAllowlist?: string[];\n } = {}) {\n this.logger = logger;\n // If endpoint is customized, don't override it.\n if (endpoint && this.endpoint === AMPLITUDE_ORIGIN) {\n this.endpoint = endpoint;\n }\n let amplitudeVisualTaggingSelectorInstance: any = null;\n\n // Attach Event Listener to listen for messages from the parent window\n window.addEventListener('message', (event) => {\n this.logger?.debug?.('Message received: ', JSON.stringify(event));\n\n // Only accept messages from the specified origin\n if (this.endpoint !== event.origin) {\n return;\n }\n\n const eventData = event?.data as Message<Action> | MessageResponse;\n const action = eventData?.action;\n\n // Ignore messages without action\n if (!action) {\n return;\n }\n\n // If id exists, handle responses to previous requests\n if ('id' in eventData) {\n this.logger?.debug?.('Received Response to previous request: ', JSON.stringify(event));\n this.handleResponse(eventData);\n\n // If action exists, handle the action using existing handlers\n } else {\n if (action === 'ping') {\n this.notify({ action: 'pong' });\n } else if (action === 'initialize-visual-tagging-selector') {\n const actionData = eventData?.data as InitializeVisualTaggingSelectorData;\n asyncLoadScript(AMPLITUDE_VISUAL_TAGGING_SELECTOR_SCRIPT_URL)\n .then(() => {\n // eslint-disable-next-line\n amplitudeVisualTaggingSelectorInstance = (window as any)?.amplitudeVisualTaggingSelector?.({\n getEventTagProps,\n isElementSelectable: (element: Element) => {\n if (isElementSelectable) {\n return isElementSelectable(actionData?.actionType || 'click', element);\n }\n return true;\n },\n onTrack: this.onTrack,\n onSelect: this.onSelect,\n visualHighlightClass: AMPLITUDE_VISUAL_TAGGING_HIGHLIGHT_CLASS,\n messenger: this,\n cssSelectorAllowlist,\n actionClickAllowlist,\n extractDataFromDataSource,\n });\n this.notify({ action: 'selector-loaded' });\n })\n .catch(() => {\n this.logger?.warn('Failed to initialize visual tagging selector');\n });\n } else if (action === 'close-visual-tagging-selector') {\n // eslint-disable-next-line\n amplitudeVisualTaggingSelectorInstance?.close?.();\n }\n }\n });\n\n // Notify the parent window that the page has loaded\n this.notify({ action: 'page-loaded' });\n }\n\n private onSelect = (data: ElementSelectedData) => {\n this.notify({ action: 'element-selected', data });\n };\n\n private onTrack = (type: string, properties: { [key: string]: string | null }) => {\n if (type === 'selector-mode-changed') {\n this.notify({ action: 'track-selector-mode-changed', data: properties });\n } else if (type === 'selector-moved') {\n this.notify({ action: 'track-selector-moved', data: properties });\n }\n };\n}\n","import { AllWindowObservables, AutoCaptureOptionsWithDefaults } from 'src/autocapture-plugin';\nimport { type evaluateTriggersFn } from 'src/helpers';\nimport { buffer, filter, map, debounceTime, merge, pairwise, delay } from 'rxjs';\nimport { BrowserClient } from '@amplitude/analytics-core';\nimport { filterOutNonTrackableEvents, shouldTrackEvent } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';\n\nconst RAGE_CLICK_THRESHOLD = 5;\n\nexport function trackClicks({\n amplitude,\n allObservables,\n options,\n shouldTrackEvent,\n evaluateTriggers,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n options: AutoCaptureOptionsWithDefaults;\n shouldTrackEvent: shouldTrackEvent;\n evaluateTriggers: evaluateTriggersFn;\n}) {\n const { clickObservable } = allObservables;\n\n // Trigger if the target of the click event has changed and position is different\n // Keeping track of position is important to avoid false positives when the user clicks on the same\n // element where certain frameworks could replace the element instance between rerenders\n const comparisonTrigger = clickObservable.pipe(\n pairwise(),\n filter(([prev, current]) => {\n const targetChanged = prev.event.target !== current.event.target;\n /* istanbul ignore next */\n const samePos =\n Math.abs(current.event.screenX - prev.event.screenX) <= 20 &&\n Math.abs(current.event.screenY - prev.event.screenY) <= 20;\n return targetChanged && !samePos;\n }),\n );\n\n // Trigger if there is no click event within 1 second\n const timeoutTrigger = clickObservable.pipe(\n debounceTime(options.debounceTime),\n map(() => 'timeout' as const),\n );\n\n const triggers = merge(comparisonTrigger, timeoutTrigger);\n\n // Get buffers of clicks, if the buffer length is over 5, it is rage click\n const bufferedClicks = clickObservable.pipe(\n delay(0),\n filter(filterOutNonTrackableEvents),\n filter((click) => {\n // Only track clicks on elements that should be tracked,\n return shouldTrackEvent('click', click.closestTrackedAncestor);\n }),\n map((click) => evaluateTriggers(click)),\n buffer(triggers),\n );\n\n return bufferedClicks.subscribe((clicks) => {\n // TODO: update this when rage clicks are added\n const clickType =\n clicks.length >= RAGE_CLICK_THRESHOLD ? AMPLITUDE_ELEMENT_CLICKED_EVENT : AMPLITUDE_ELEMENT_CLICKED_EVENT;\n\n for (const click of clicks) {\n /* istanbul ignore next */\n amplitude?.track(clickType, click.targetElementProperties);\n }\n });\n}\n","import { asyncScheduler } from '../scheduler/async';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n return operate(function (source, subscriber) {\n var activeTask = null;\n var lastValue = null;\n var lastTime = null;\n var emit = function () {\n if (activeTask) {\n activeTask.unsubscribe();\n activeTask = null;\n var value = lastValue;\n lastValue = null;\n subscriber.next(value);\n }\n };\n function emitWhenIdle() {\n var targetTime = lastTime + dueTime;\n var now = scheduler.now();\n if (now < targetTime) {\n activeTask = this.schedule(undefined, targetTime - now);\n subscriber.add(activeTask);\n return;\n }\n emit();\n }\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n lastValue = value;\n lastTime = scheduler.now();\n if (!activeTask) {\n activeTask = scheduler.schedule(emitWhenIdle, dueTime);\n subscriber.add(activeTask);\n }\n }, function () {\n emit();\n subscriber.complete();\n }, undefined, function () {\n lastValue = activeTask = null;\n }));\n });\n}\n//# sourceMappingURL=debounceTime.js.map","import { operate } from '../util/lift';\nimport { noop } from '../util/noop';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nimport { innerFrom } from '../observable/innerFrom';\nexport function buffer(closingNotifier) {\n return operate(function (source, subscriber) {\n var currentBuffer = [];\n source.subscribe(createOperatorSubscriber(subscriber, function (value) { return currentBuffer.push(value); }, function () {\n subscriber.next(currentBuffer);\n subscriber.complete();\n }));\n innerFrom(closingNotifier).subscribe(createOperatorSubscriber(subscriber, function () {\n var b = currentBuffer;\n currentBuffer = [];\n subscriber.next(b);\n }, noop));\n return function () {\n currentBuffer = null;\n };\n });\n}\n//# sourceMappingURL=buffer.js.map","import { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function pairwise() {\n return operate(function (source, subscriber) {\n var prev;\n var hasPrev = false;\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n var p = prev;\n prev = value;\n hasPrev && subscriber.next([p, value]);\n hasPrev = true;\n }));\n });\n}\n//# sourceMappingURL=pairwise.js.map","import { asyncScheduler } from '../scheduler/async';\nimport { delayWhen } from './delayWhen';\nimport { timer } from '../observable/timer';\nexport function delay(due, scheduler) {\n if (scheduler === void 0) { scheduler = asyncScheduler; }\n var duration = timer(due, scheduler);\n return delayWhen(function () { return duration; });\n}\n//# sourceMappingURL=delay.js.map","import { AllWindowObservables, AutoCaptureOptionsWithDefaults, ObservablesEnum } from 'src/autocapture-plugin';\nimport { filter, map, merge, switchMap, take, timeout, EMPTY } from 'rxjs';\nimport { BrowserClient, ActionType } from '@amplitude/analytics-core';\nimport {\n ElementBasedTimestampedEvent,\n filterOutNonTrackableEvents,\n getClosestElement,\n shouldTrackEvent,\n} from '../helpers';\nimport { AMPLITUDE_ELEMENT_CLICKED_EVENT } from '../constants';\n\nexport function trackActionClick({\n amplitude,\n allObservables,\n options,\n getEventProperties,\n shouldTrackEvent,\n shouldTrackActionClick,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n options: AutoCaptureOptionsWithDefaults;\n getEventProperties: (actionType: ActionType, element: Element) => Record<string, any>;\n shouldTrackActionClick: shouldTrackEvent;\n shouldTrackEvent: shouldTrackEvent;\n}) {\n const { clickObservable, mutationObservable, navigateObservable } = allObservables;\n\n const filteredClickObservable = clickObservable.pipe(\n filter((click) => {\n // Filter out regularly tracked click events that are already handled in trackClicks\n return !shouldTrackEvent('click', click.closestTrackedAncestor);\n }),\n map((click) => {\n // overwrite the closestTrackedAncestor with the closest element that is on the actionClickAllowlist\n const closestActionClickEl = getClosestElement(click.event.target as Element, options.actionClickAllowlist);\n click.closestTrackedAncestor = closestActionClickEl as Element;\n\n // overwrite the targetElementProperties with the properties of the closestActionClickEl\n if (click.closestTrackedAncestor !== null) {\n click.targetElementProperties = getEventProperties(click.type, click.closestTrackedAncestor);\n }\n return click;\n }),\n filter(filterOutNonTrackableEvents),\n filter((clickEvent) => {\n // Only track change on elements that should be tracked\n return shouldTrackActionClick('click', clickEvent.closestTrackedAncestor);\n }),\n );\n\n const changeObservables: Array<\n AllWindowObservables[ObservablesEnum.MutationObservable] | AllWindowObservables[ObservablesEnum.NavigateObservable]\n > = [mutationObservable];\n /* istanbul ignore next */\n if (navigateObservable) {\n changeObservables.push(navigateObservable);\n }\n const mutationOrNavigate = merge(...changeObservables);\n\n const actionClicks = filteredClickObservable.pipe(\n // If a mutation occurs within 0.5 seconds of a click event (timeout({ first: 500 })), it emits the original first click event.\n // take 1 to only limit the action events in case there are multiple\n switchMap((click) =>\n mutationOrNavigate.pipe(\n take(1),\n timeout({ first: 500, with: () => EMPTY }), // in case of timeout, map to empty to prevent any click from being emitted\n map(() => click),\n ),\n ),\n );\n\n return actionClicks.subscribe((actionClick) => {\n /* istanbul ignore next */\n amplitude?.track(\n AMPLITUDE_ELEMENT_CLICKED_EVENT,\n getEventProperties('click', (actionClick as ElementBasedTimestampedEvent<MouseEvent>).closestTrackedAncestor),\n );\n });\n}\n","import { innerFrom } from '../observable/innerFrom';\nimport { operate } from '../util/lift';\nimport { createOperatorSubscriber } from './OperatorSubscriber';\nexport function switchMap(project, resultSelector) {\n return operate(function (source, subscriber) {\n var innerSubscriber = null;\n var index = 0;\n var isComplete = false;\n var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };\n source.subscribe(createOperatorSubscriber(subscriber, function (value) {\n innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();\n var innerIndex = 0;\n var outerIndex = index++;\n innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {\n innerSubscriber = null;\n checkComplete();\n })));\n }, function () {\n isComplete = true;\n checkComplete();\n }));\n });\n}\n//# sourceMappingURL=switchMap.js.map","import { Observable, fromEvent } from 'rxjs';\n\n/**\n * Creates an observable that tracks DOM mutations on the document body.\n */\nexport const createMutationObservable = (): Observable<MutationRecord[]> => {\n return new Observable<MutationRecord[]>((observer) => {\n const mutationObserver = new MutationObserver((mutations) => {\n observer.next(mutations);\n });\n mutationObserver.observe(document.body, {\n childList: true,\n attributes: true,\n characterData: true,\n subtree: true,\n });\n return () => mutationObserver.disconnect();\n });\n};\n\n/**\n * Creates an observable that tracks click events on the document.\n * @param clickType - The type of click event to track (click or pointerdown)\n */\nexport const createClickObservable = (\n clickType: 'click' | 'pointerdown' = 'click',\n): Observable<MouseEvent | PointerEvent> => {\n return fromEvent<MouseEvent>(document, clickType, { capture: true });\n};\n","/* eslint-disable no-restricted-globals */\nimport {\n type BrowserClient,\n type BrowserConfig,\n type EnrichmentPlugin,\n type ElementInteractionsOptions,\n DEFAULT_CSS_SELECTOR_ALLOWLIST,\n DEFAULT_ACTION_CLICK_ALLOWLIST,\n DEFAULT_DATA_ATTRIBUTE_PREFIX,\n} from '@amplitude/analytics-core';\nimport { createRemoteConfigFetch } from '@amplitude/analytics-remote-config';\nimport * as constants from './constants';\nimport { fromEvent, map, type Observable, type Subscription, share } from 'rxjs';\nimport {\n addAdditionalEventProperties,\n createShouldTrackEvent,\n getEventProperties,\n type ElementBasedTimestampedEvent,\n type TimestampedEvent,\n type NavigateEvent,\n} from './helpers';\nimport { WindowMessenger } from './libs/messenger';\nimport { trackClicks } from './autocapture/track-click';\nimport { trackChange } from './autocapture/track-change';\nimport { trackActionClick } from './autocapture/track-action-click';\nimport type { HasEventTargetAddRemove } from 'rxjs/internal/observable/fromEvent';\nimport { createMutationObservable, createClickObservable } from './observables';\n\nimport {\n createLabeledEventToTriggerMap,\n createTriggerEvaluator,\n groupLabeledEventIdsByEventType,\n} from './pageActions/triggers';\n\ndeclare global {\n interface Window {\n navigation: HasEventTargetAddRemove<Event>;\n }\n}\n\ntype BrowserEnrichmentPlugin = EnrichmentPlugin<BrowserClient, BrowserConfig>;\n\nexport type AutoCaptureOptionsWithDefaults = Required<\n Pick<ElementInteractionsOptions, 'debounceTime' | 'cssSelectorAllowlist' | 'actionClickAllowlist'>\n> &\n ElementInteractionsOptions;\n\nexport enum ObservablesEnum {\n ClickObservable = 'clickObservable',\n ChangeObservable = 'changeObservable',\n // ErrorObservable = 'errorObservable',\n NavigateObservable = 'navigateObservable',\n MutationObservable = 'mutationObservable',\n}\n\nexport interface AllWindowObservables {\n [ObservablesEnum.ClickObservable]: Observable<ElementBasedTimestampedEvent<MouseEvent>>;\n [ObservablesEnum.ChangeObservable]: Observable<ElementBasedTimestampedEvent<Event>>;\n // [ObservablesEnum.ErrorObservable]: Observable<TimestampedEvent<ErrorEvent>>;\n [ObservablesEnum.NavigateObservable]: Observable<TimestampedEvent<NavigateEvent>> | undefined;\n [ObservablesEnum.MutationObservable]: Observable<TimestampedEvent<MutationRecord[]>>;\n}\n\nexport const autocapturePlugin = (options: ElementInteractionsOptions = {}): BrowserEnrichmentPlugin => {\n const {\n dataAttributePrefix = DEFAULT_DATA_ATTRIBUTE_PREFIX,\n visualTaggingOptions = {\n enabled: true,\n messenger: new WindowMessenger(),\n },\n } = options;\n\n options.cssSelectorAllowlist = options.cssSelectorAllowlist ?? DEFAULT_CSS_SELECTOR_ALLOWLIST;\n options.actionClickAllowlist = options.actionClickAllowlist ?? DEFAULT_ACTION_CLICK_ALLOWLIST;\n options.debounceTime = options.debounceTime ?? 0; // TODO: update this when rage clicks are added to 1000ms\n\n const name = constants.PLUGIN_NAME;\n const type = 'enrichment';\n\n const subscriptions: Subscription[] = [];\n\n // Create observables on events on the window\n const createObservables = (): AllWindowObservables => {\n // Create Observables from direct user events\n const clickObservable = createClickObservable().pipe(\n map((click) =>\n addAdditionalEventProperties(\n click,\n 'click',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n ),\n ),\n share(),\n );\n const changeObservable = fromEvent<Event>(document, 'change', { capture: true }).pipe(\n map((change) =>\n addAdditionalEventProperties(\n change,\n 'change',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n ),\n ),\n share(),\n );\n\n // Create Observable from unhandled errors\n // const errorObservable = fromEvent<ErrorEvent>(window, 'error').pipe(\n // map((error) => addAdditionalEventProperties(error, 'error')),\n // );\n\n // Create observable for URL changes\n let navigateObservable: Observable<TimestampedEvent<NavigateEvent>> | undefined;\n /* istanbul ignore next */\n if (window.navigation) {\n navigateObservable = fromEvent<NavigateEvent>(window.navigation, 'navigate').pipe(\n map((navigate) =>\n addAdditionalEventProperties(\n navigate,\n 'navigate',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n ),\n ),\n share(),\n );\n }\n\n // Track DOM Mutations using shared observable\n const mutationObservable = createMutationObservable().pipe(\n map((mutation) =>\n addAdditionalEventProperties(\n mutation,\n 'mutation',\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n dataAttributePrefix,\n ),\n ),\n share(),\n );\n\n return {\n [ObservablesEnum.ClickObservable]: clickObservable as Observable<ElementBasedTimestampedEvent<MouseEvent>>,\n [ObservablesEnum.ChangeObservable]: changeObservable as Observable<ElementBasedTimestampedEvent<Event>>,\n // [ObservablesEnum.ErrorObservable]: errorObservable,\n [ObservablesEnum.NavigateObservable]: navigateObservable,\n [ObservablesEnum.MutationObservable]: mutationObservable,\n };\n };\n\n // Group labeled events by event type (eg. click, change)\n let groupedLabeledEvents = groupLabeledEventIdsByEventType(Object.values(options.pageActions?.labeledEvents ?? {}));\n\n let labeledEventToTriggerMap = createLabeledEventToTriggerMap(options.pageActions?.triggers ?? []);\n\n // Evaluate triggers for the given event by running the actions associated with the matching triggers\n const evaluateTriggers = createTriggerEvaluator(groupedLabeledEvents, labeledEventToTriggerMap, options);\n\n // Function to recalculate internal variables when remote config is updated\n const recomputePageActionsData = (remotePageActions: ElementInteractionsOptions['pageActions']) => {\n if (remotePageActions) {\n // Merge remote config with local options\n options.pageActions = {\n ...options.pageActions,\n ...remotePageActions,\n };\n\n // Recalculate internal variables\n groupedLabeledEvents = groupLabeledEventIdsByEventType(Object.values(options.pageActions.labeledEvents ?? {}));\n labeledEventToTriggerMap = createLabeledEventToTriggerMap(options.pageActions.triggers ?? []);\n\n // Update evaluateTriggers function\n evaluateTriggers.update(groupedLabeledEvents, labeledEventToTriggerMap, options);\n }\n };\n\n const setup: BrowserEnrichmentPlugin['setup'] = async (config, amplitude) => {\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n // Fetch remote config for pageActions in a non-blocking manner\n if (config.fetchRemoteConfig) {\n createRemoteConfigFetch({\n localConfig: config,\n configKeys: ['analyticsSDK.pageActions'],\n })\n .then(async (remoteConfigFetch) => {\n try {\n const remotePageActions = await remoteConfigFetch.getRemoteConfig('analyticsSDK', 'pageActions');\n recomputePageActionsData(remotePageActions as ElementInteractionsOptions['pageActions']);\n } catch (error) {\n // Log error but don't fail the setup\n /* istanbul ignore next */\n config?.loggerProvider?.error(`Failed to fetch remote config: ${String(error)}`);\n }\n })\n .catch((error) => {\n // Log error but don't fail the setup\n /* istanbul ignore next */\n config?.loggerProvider?.error(`Failed to create remote config fetch: ${String(error)}`);\n });\n }\n\n // Create should track event functions the different allowlists\n const shouldTrackEvent = createShouldTrackEvent(\n options,\n (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist,\n );\n const shouldTrackActionClick = createShouldTrackEvent(\n options,\n (options as AutoCaptureOptionsWithDefaults).actionClickAllowlist,\n );\n\n // Create observables for events on the window\n const allObservables = createObservables();\n\n // Create subscriptions\n const clickTrackingSubscription = trackClicks({\n allObservables,\n options: options as AutoCaptureOptionsWithDefaults,\n amplitude,\n shouldTrackEvent: shouldTrackEvent,\n evaluateTriggers: evaluateTriggers.evaluate.bind(evaluateTriggers),\n });\n subscriptions.push(clickTrackingSubscription);\n\n const changeSubscription = trackChange({\n allObservables,\n getEventProperties: (...args) => getEventProperties(...args, dataAttributePrefix),\n amplitude,\n shouldTrackEvent: shouldTrackEvent,\n evaluateTriggers: evaluateTriggers.evaluate.bind(evaluateTriggers),\n });\n subscriptions.push(changeSubscription);\n\n const actionClickSubscription = trackActionClick({\n allObservables,\n options: options as AutoCaptureOptionsWithDefaults,\n getEventProperties: (...args) => getEventProperties(...args, dataAttributePrefix),\n amplitude,\n shouldTrackEvent,\n shouldTrackActionClick: shouldTrackActionClick,\n });\n subscriptions.push(actionClickSubscription);\n\n /* istanbul ignore next */\n config?.loggerProvider?.log(`${name} has been successfully added.`);\n\n // Setup visual tagging selector\n if (window.opener && visualTaggingOptions.enabled) {\n const allowlist = (options as AutoCaptureOptionsWithDefaults).cssSelectorAllowlist;\n const actionClickAllowlist = (options as AutoCaptureOptionsWithDefaults).actionClickAllowlist;\n\n /* istanbul ignore next */\n visualTaggingOptions.messenger?.setup({\n logger: config?.loggerProvider,\n ...(config?.serverZone && { endpoint: constants.AMPLITUDE_ORIGINS_MAP[config.serverZone] }),\n isElementSelectable: createShouldTrackEvent(options, [...allowlist, ...actionClickAllowlist]),\n cssSelectorAllowlist: allowlist,\n actionClickAllowlist: actionClickAllowlist,\n });\n }\n };\n\n const execute: BrowserEnrichmentPlugin['execute'] = async (event) => {\n return event;\n };\n\n const teardown = async () => {\n for (const subscription of subscriptions) {\n subscription.unsubscribe();\n }\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n","import type { Trigger } from '@amplitude/analytics-core/lib/esm/types/element-interactions';\n// Return which labeled events, if any, the element matches\nimport type {\n ElementInteractionsOptions,\n LabeledEvent,\n} from '@amplitude/analytics-core/lib/esm/types/element-interactions';\nimport type { ElementBasedTimestampedEvent, ElementBasedEvent } from 'src/helpers';\nimport { matchEventToFilter } from './matchEventToFilter';\nimport { executeActions } from './actions';\n\nconst eventTypeToBrowserEventMap = {\n '[Amplitude] Element Clicked': 'click',\n '[Amplitude] Element Changed': 'change',\n} as const;\n// groups labeled events by event type\n// skips any labeled events with malformed definitions or unexpected event_type\nexport const groupLabeledEventIdsByEventType = (labeledEvents: LabeledEvent[] | null | undefined) => {\n // Initialize all event types with empty sets\n const groupedLabeledEvents = Object.values(eventTypeToBrowserEventMap).reduce((acc, browserEvent) => {\n acc[browserEvent] = new Set<string>();\n return acc;\n }, {} as Record<string, Set<string>>);\n\n // If there are no labeled events, return the initialized groupedLabeledEvents\n if (!labeledEvents) {\n return groupedLabeledEvents;\n }\n\n // Group labeled events by event type\n for (const le of labeledEvents) {\n try {\n for (const def of le.definition) {\n const browserEvent = eventTypeToBrowserEventMap[def.event_type];\n if (browserEvent) {\n groupedLabeledEvents[browserEvent].add(le.id);\n }\n }\n } catch (e) {\n // Skip this labeled event if there is an error\n console.warn('Skipping Labeled Event due to malformed definition', le?.id, e);\n }\n }\n return groupedLabeledEvents;\n};\n\n// TODO: add tests\nexport const createLabeledEventToTriggerMap = (triggers: Trigger[]) => {\n const labeledEventToTriggerMap = new Map<string, Trigger[]>();\n for (const trigger of triggers) {\n for (const condition of trigger.conditions) {\n if (condition.type === 'LABELED_EVENT') {\n const eventId = condition.match.eventId;\n // Get existing triggers for this event ID or initialize empty array\n let existingTriggers = labeledEventToTriggerMap.get(eventId);\n if (!existingTriggers) {\n existingTriggers = [];\n labeledEventToTriggerMap.set(eventId, existingTriggers);\n }\n // Add current trigger to the list of triggers for this event ID\n existingTriggers.push(trigger);\n }\n }\n }\n return labeledEventToTriggerMap;\n};\n\n/**\n * Matches an event to labeled events based on the event's properties.\n * The logic matches exactly what is supported by the query backend.\n * TODO: later pre-filter the labeled events based on URL first\n *\n * @param event - The event to match against labeled events\n * @param labeledEvents - Array of labeled events to match against\n * @returns Array of matching labeled events\n */\nexport const matchEventToLabeledEvents = (\n event: ElementBasedTimestampedEvent<ElementBasedEvent>,\n labeledEvents: LabeledEvent[],\n) => {\n return labeledEvents.filter((le) => {\n return le.definition.some((def) => {\n return (\n eventTypeToBrowserEventMap[def.event_type] === event.type &&\n def.filters.every((filter) => matchEventToFilter(event, filter))\n );\n });\n });\n};\n\nexport const matchLabeledEventsToTriggers = (labeledEvents: LabeledEvent[], leToTriggerMap: Map<string, Trigger[]>) => {\n const matchingTriggers = new Set<Trigger>();\n for (const le of labeledEvents) {\n const triggers = leToTriggerMap.get(le.id);\n if (triggers) {\n for (const trigger of triggers) {\n matchingTriggers.add(trigger);\n }\n }\n }\n return Array.from(matchingTriggers);\n};\n\nexport class TriggerEvaluator {\n constructor(\n private groupedLabeledEvents: ReturnType<typeof groupLabeledEventIdsByEventType>,\n private labeledEventToTriggerMap: ReturnType<typeof createLabeledEventToTriggerMap>,\n private options: ElementInteractionsOptions,\n ) {}\n\n evaluate(event: ElementBasedTimestampedEvent<ElementBasedEvent>) {\n // If there is no pageActions, return the event as is\n const { pageActions } = this.options;\n if (!pageActions) {\n return event;\n }\n\n // Find matching labeled events\n const matchingLabeledEvents = matchEventToLabeledEvents(\n event,\n Array.from(this.groupedLabeledEvents[event.type]).map((id) => pageActions.labeledEvents[id]),\n );\n // Find matching conditions\n const matchingTriggers = matchLabeledEventsToTriggers(matchingLabeledEvents, this.labeledEventToTriggerMap);\n for (const trigger of matchingTriggers) {\n executeActions(trigger.actions, event);\n }\n\n return event;\n }\n\n update(\n groupedLabeledEvents: ReturnType<typeof groupLabeledEventIdsByEventType>,\n labeledEventToTriggerMap: ReturnType<typeof createLabeledEventToTriggerMap>,\n options: ElementInteractionsOptions,\n ) {\n this.groupedLabeledEvents = groupedLabeledEvents;\n this.labeledEventToTriggerMap = labeledEventToTriggerMap;\n this.options = options;\n }\n}\n\nexport const createTriggerEvaluator = (\n groupedLabeledEvents: ReturnType<typeof groupLabeledEventIdsByEventType>,\n labeledEventToTriggerMap: ReturnType<typeof createLabeledEventToTriggerMap>,\n options: ElementInteractionsOptions,\n) => {\n return new TriggerEvaluator(groupedLabeledEvents, labeledEventToTriggerMap, options);\n};\n","import type { Filter } from '@amplitude/analytics-core/lib/esm/types/element-interactions';\nimport { ElementBasedTimestampedEvent, ElementBasedEvent } from 'src/helpers';\n\n/**\n * Matches an event to a single filter\n * @param event - The event to match\n * @param filter - The filter to match against\n * @returns boolean indicating if the event matches the filter\n */\nexport const matchEventToFilter = (event: ElementBasedTimestampedEvent<ElementBasedEvent>, filter: Filter) => {\n try {\n if (filter.subprop_key === '[Amplitude] Element Text') {\n // TODO: add support for the other operators\n return (\n filter.subprop_op === 'is' &&\n filter.subprop_value.includes(event.targetElementProperties['[Amplitude] Element Text'] as string)\n );\n } else if (filter.subprop_key === '[Amplitude] Element Hierarchy') {\n // Check if the element ancestory matches the CSS selector, always check this last since it is the most expensive\n return (\n filter.subprop_op === 'autotrack css match' &&\n !!event.closestTrackedAncestor.closest(filter.subprop_value.toString())\n );\n }\n } catch (error) {\n console.error('Error matching event to filter', error);\n return false;\n }\n return false;\n};\n","import { AllWindowObservables } from 'src/autocapture-plugin';\nimport { type evaluateTriggersFn } from 'src/helpers';\nimport { filter, map } from 'rxjs';\nimport { BrowserClient, ActionType } from '@amplitude/analytics-core';\nimport { filterOutNonTrackableEvents, shouldTrackEvent } from '../helpers';\nimport { AMPLITUDE_ELEMENT_CHANGED_EVENT } from '../constants';\n\nexport function trackChange({\n amplitude,\n allObservables,\n getEventProperties,\n shouldTrackEvent,\n evaluateTriggers,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n getEventProperties: (actionType: ActionType, element: Element) => Record<string, any>;\n shouldTrackEvent: shouldTrackEvent;\n evaluateTriggers: evaluateTriggersFn;\n}) {\n const { changeObservable } = allObservables;\n\n const filteredChangeObservable = changeObservable.pipe(\n filter(filterOutNonTrackableEvents),\n filter((changeEvent) => {\n // Only track change on elements that should be tracked,\n return shouldTrackEvent('change', changeEvent.closestTrackedAncestor);\n }),\n map((changeEvent) => evaluateTriggers(changeEvent)),\n );\n\n return filteredChangeObservable.subscribe((changeEvent) => {\n /* istanbul ignore next */\n amplitude?.track(AMPLITUDE_ELEMENT_CHANGED_EVENT, getEventProperties('change', changeEvent.closestTrackedAncestor));\n });\n}\n","/* eslint-disable no-restricted-globals */\nimport {\n BrowserClient,\n BrowserConfig,\n EnrichmentPlugin,\n FrustrationInteractionsOptions,\n DEFAULT_DATA_ATTRIBUTE_PREFIX,\n DEFAULT_RAGE_CLICK_ALLOWLIST,\n DEFAULT_DEAD_CLICK_ALLOWLIST,\n} from '@amplitude/analytics-core';\nimport * as constants from './constants';\nimport { fromEvent, map, Observable, Subscription, share } from 'rxjs';\nimport {\n addAdditionalEventProperties,\n createShouldTrackEvent,\n ElementBasedTimestampedEvent,\n getEventProperties,\n NavigateEvent,\n} from './helpers';\nimport { trackDeadClick } from './autocapture/track-dead-click';\nimport { trackRageClicks } from './autocapture/track-rage-click';\nimport { AllWindowObservables, ObservablesEnum } from './autocapture-plugin';\nimport { createClickObservable, createMutationObservable } from './observables';\n\ntype BrowserEnrichmentPlugin = EnrichmentPlugin<BrowserClient, BrowserConfig>;\n\nexport const frustrationPlugin = (options: FrustrationInteractionsOptions = {}): BrowserEnrichmentPlugin => {\n const name = constants.FRUSTRATION_PLUGIN_NAME;\n const type = 'enrichment';\n\n const subscriptions: Subscription[] = [];\n\n const rageCssSelectors = options.rageClicks?.cssSelectorAllowlist ?? DEFAULT_RAGE_CLICK_ALLOWLIST;\n const deadCssSelectors = options.deadClicks?.cssSelectorAllowlist ?? DEFAULT_DEAD_CLICK_ALLOWLIST;\n\n const dataAttributePrefix = options.dataAttributePrefix ?? DEFAULT_DATA_ATTRIBUTE_PREFIX;\n\n // combine the two selector lists to determine which clicked elements should be filtered\n const combinedCssSelectors = [...new Set([...rageCssSelectors, ...deadCssSelectors])];\n\n // Create observables on events on the window\n const createObservables = (): AllWindowObservables => {\n // Create Observables from direct user events\n const clickObservable = createClickObservable('pointerdown').pipe(\n map((click) => {\n return addAdditionalEventProperties(\n click,\n 'click',\n combinedCssSelectors,\n dataAttributePrefix,\n true, // capture when cursor is pointer\n );\n }),\n share(),\n );\n\n // Create observable for URL changes\n let navigateObservable;\n /* istanbul ignore next */\n if (window.navigation) {\n navigateObservable = fromEvent<NavigateEvent>(window.navigation, 'navigate').pipe(\n map((navigate) =>\n addAdditionalEventProperties(navigate, 'navigate', combinedCssSelectors, dataAttributePrefix),\n ),\n share(),\n );\n }\n\n // Track DOM Mutations\n const enrichedMutationObservable = createMutationObservable().pipe(\n map((mutation) => addAdditionalEventProperties(mutation, 'mutation', combinedCssSelectors, dataAttributePrefix)),\n share(),\n );\n\n return {\n [ObservablesEnum.ClickObservable]: clickObservable as Observable<ElementBasedTimestampedEvent<MouseEvent>>,\n [ObservablesEnum.ChangeObservable]: new Observable<ElementBasedTimestampedEvent<Event>>(), // Empty observable since we don't need change events\n [ObservablesEnum.NavigateObservable]: navigateObservable,\n [ObservablesEnum.MutationObservable]: enrichedMutationObservable,\n };\n };\n\n const setup: BrowserEnrichmentPlugin['setup'] = async (config, amplitude) => {\n /* istanbul ignore if */\n if (typeof document === 'undefined') {\n return;\n }\n\n // Create should track event functions for the different allowlists\n const shouldTrackRageClick = createShouldTrackEvent(options, rageCssSelectors);\n const shouldTrackDeadClick = createShouldTrackEvent(options, deadCssSelectors);\n\n // Create observables for events on the window\n const allObservables = createObservables();\n\n // Create subscriptions\n const rageClickSubscription = trackRageClicks({\n allObservables,\n amplitude,\n shouldTrackRageClick,\n });\n subscriptions.push(rageClickSubscription);\n\n const deadClickSubscription = trackDeadClick({\n amplitude,\n allObservables,\n getEventProperties: (actionType, element) => getEventProperties(actionType, element, dataAttributePrefix),\n shouldTrackDeadClick,\n });\n subscriptions.push(deadClickSubscription);\n\n /* istanbul ignore next */\n config?.loggerProvider?.log(`${name} has been successfully added.`);\n };\n\n const execute: BrowserEnrichmentPlugin['execute'] = async (event) => {\n return event;\n };\n\n const teardown = async () => {\n for (const subscription of subscriptions) {\n subscription.unsubscribe();\n }\n };\n\n return {\n name,\n type,\n setup,\n execute,\n teardown,\n };\n};\n","import { AllWindowObservables } from 'src/autocapture-plugin';\nimport { filter, map } from 'rxjs';\nimport { BrowserClient } from '@amplitude/analytics-core';\nimport { filterOutNonTrackableEvents, shouldTrackEvent } from '../helpers';\nimport { AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT } from '../constants';\nimport { DEFAULT_RAGE_CLICK_THRESHOLD, DEFAULT_RAGE_CLICK_WINDOW_MS } from '@amplitude/analytics-core';\n\nconst RAGE_CLICK_THRESHOLD = DEFAULT_RAGE_CLICK_THRESHOLD;\nconst RAGE_CLICK_WINDOW_MS = DEFAULT_RAGE_CLICK_WINDOW_MS;\n\ntype Click = {\n X: number;\n Y: number;\n Time: number;\n};\n\ntype EventRageClick = {\n '[Amplitude] Begin Time': string; // ISO-8601\n '[Amplitude] End Time': string; // ISO-8601\n '[Amplitude] Duration': number;\n '[Amplitude] Clicks': Array<Click>;\n '[Amplitude] Click Count': number;\n};\n\ntype ClickEvent = {\n event: MouseEvent | Event;\n timestamp: number;\n targetElementProperties: Record<string, any>;\n closestTrackedAncestor: Element | null;\n};\n\nexport function trackRageClicks({\n amplitude,\n allObservables,\n shouldTrackRageClick,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n shouldTrackRageClick: shouldTrackEvent;\n}) {\n const { clickObservable } = allObservables;\n\n // Keep track of all clicks within the sliding window\n const clickWindow: ClickEvent[] = [];\n\n return clickObservable\n .pipe(\n filter(filterOutNonTrackableEvents),\n filter((click) => {\n return shouldTrackRageClick('click', click.closestTrackedAncestor);\n }),\n map((click) => {\n const now = click.timestamp;\n\n // if the current click isn't on the same element as the most recent click,\n // clear the sliding window and start over\n if (\n clickWindow.length > 0 &&\n clickWindow[clickWindow.length - 1].closestTrackedAncestor !== click.closestTrackedAncestor\n ) {\n clickWindow.splice(0, clickWindow.length);\n }\n\n // remove past clicks that are outside the sliding window\n let clickPtr = 0;\n for (; clickPtr < clickWindow.length; clickPtr++) {\n if (now - clickWindow[clickPtr].timestamp < RAGE_CLICK_WINDOW_MS) {\n break;\n }\n }\n clickWindow.splice(0, clickPtr);\n\n // add the current click to the window\n clickWindow.push(click);\n\n // if there's not enough clicks to be a rage click, return null\n if (clickWindow.length < RAGE_CLICK_THRESHOLD) {\n return null;\n }\n\n // if we've made it here, we have enough trailing clicks on the same element\n // for it to be a rage click\n const firstClick = clickWindow[0];\n const lastClick = clickWindow[clickWindow.length - 1];\n\n const rageClickEvent: EventRageClick = {\n '[Amplitude] Begin Time': new Date(firstClick.timestamp).toISOString(),\n '[Amplitude] End Time': new Date(lastClick.timestamp).toISOString(),\n '[Amplitude] Duration': lastClick.timestamp - firstClick.timestamp,\n '[Amplitude] Clicks': clickWindow.map((click) => ({\n X: (click.event as MouseEvent).clientX,\n Y: (click.event as MouseEvent).clientY,\n Time: click.timestamp,\n })),\n '[Amplitude] Click Count': clickWindow.length,\n ...firstClick.targetElementProperties,\n };\n\n // restart the sliding window\n clickWindow.splice(0, clickWindow.length);\n\n return { rageClickEvent, time: firstClick.timestamp };\n }),\n filter((result) => result !== null),\n )\n .subscribe((data: { rageClickEvent: EventRageClick; time: number } | null) => {\n /* istanbul ignore if */\n if (data === null) {\n return;\n }\n amplitude.track(AMPLITUDE_ELEMENT_RAGE_CLICKED_EVENT, data.rageClickEvent, { time: data.time });\n });\n}\n","import { AllWindowObservables, ObservablesEnum } from 'src/autocapture-plugin';\nimport { filter, map, merge, take, mergeMap, race, Observable, Subscriber, throttleTime } from 'rxjs';\nimport { BrowserClient, ActionType } from '@amplitude/analytics-core';\nimport { ElementBasedTimestampedEvent, filterOutNonTrackableEvents, shouldTrackEvent } from '../helpers';\nimport { AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT } from '../constants';\n\nlet DEAD_CLICK_TIMEOUT = 3000; // 3 seconds to wait for an activity to happen\n\n// allow override of dead click config for testing only\nexport function _overrideDeadClickConfig(deadClickTimeout: number) {\n DEAD_CLICK_TIMEOUT = deadClickTimeout;\n}\n\ntype EventDeadClick = {\n '[Amplitude] X': number;\n '[Amplitude] Y': number;\n};\n\nexport function trackDeadClick({\n amplitude,\n allObservables,\n getEventProperties,\n shouldTrackDeadClick,\n}: {\n amplitude: BrowserClient;\n allObservables: AllWindowObservables;\n getEventProperties: (actionType: ActionType, element: Element) => Record<string, any>;\n shouldTrackDeadClick: shouldTrackEvent;\n}) {\n const { clickObservable, mutationObservable, navigateObservable } = allObservables;\n\n const filteredClickObservable = clickObservable.pipe(\n filter(filterOutNonTrackableEvents),\n filter((clickEvent) => {\n // Only track change on elements that should be tracked\n return shouldTrackDeadClick('click', clickEvent.closestTrackedAncestor);\n }),\n );\n\n const changeObservables: Array<\n AllWindowObservables[ObservablesEnum.MutationObservable] | AllWindowObservables[ObservablesEnum.NavigateObservable]\n > = [mutationObservable];\n if (navigateObservable) {\n changeObservables.push(navigateObservable);\n }\n const mutationOrNavigate = merge(...changeObservables);\n\n const actionClicks = filteredClickObservable.pipe(\n mergeMap((click) => {\n // Create a timer that emits after 500ms\n let timeoutId: ReturnType<typeof setTimeout>;\n const timer = new Observable<typeof click>((subscriber: Subscriber<typeof click>) => {\n timeoutId = setTimeout(() => subscriber.next(click), DEAD_CLICK_TIMEOUT);\n\n return () => {\n clearTimeout(timeoutId);\n };\n });\n\n // Race between the timer and any mutations/navigation\n // if the timer wins, the click is dead so we emit it\n return race(\n timer,\n mutationOrNavigate.pipe(\n take(1),\n map(() => null),\n ),\n ).pipe(filter((value): value is ElementBasedTimestampedEvent<MouseEvent> => value !== null));\n }),\n // Only allow one dead click event every 3 seconds\n throttleTime(DEAD_CLICK_TIMEOUT),\n );\n\n return actionClicks.subscribe((actionClick) => {\n const deadClickEvent: EventDeadClick = {\n '[Amplitude] X': (actionClick.event as MouseEvent).clientX,\n '[Amplitude] Y': (actionClick.event as MouseEvent).clientY,\n };\n amplitude.track(\n AMPLITUDE_ELEMENT_DEAD_CLICKED_EVENT,\n {\n ...getEventProperties('click', actionClick.closestTrackedAncestor),\n ...deadClickEvent,\n },\n { time: actionClick.timestamp },\n );\n });\n}\n"],"names":["extendStatics","d","b","Object","setPrototypeOf","__proto__","Array","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","length","apply","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","value","step","next","e","rejected","result","done","then","__generator","body","f","y","_","label","sent","trys","ops","g","Iterator","verb","Symbol","iterator","v","op","pop","push","__values","o","m","__read","r","ar","error","__spreadArray","to","from","pack","l","slice","concat","__await","__asyncGenerator","asyncIterator","q","AsyncIterator","a","resume","fulfill","settle","shift","__asyncValues","SuppressedError","ServerZone","Status","DEFAULT_CSS_SELECTOR_ALLOWLIST","DEFAULT_DATA_ATTRIBUTE_PREFIX","DEFAULT_ACTION_CLICK_ALLOWLIST","DEFAULT_DEAD_CLICK_ALLOWLIST","DEFAULT_RAGE_CLICK_ALLOWLIST","BaseTransport","send","_serverUrl","_payload","buildResponse","responseJSON","_a","_b","_c","_d","_e","_f","_g","_h","_j","_k","_l","_m","_o","_p","_q","_r","_s","_t","_u","_v","_w","_x","statusCode","code","status","buildStatus","Success","eventsIngested","events_ingested","payloadSizeBytes","payload_size_bytes","serverUploadTime","server_upload_time","Invalid","missingField","missing_field","eventsWithInvalidFields","events_with_invalid_fields","eventsWithMissingFields","events_with_missing_fields","eventsWithInvalidIdLengths","events_with_invalid_id_lengths","epsThreshold","eps_threshold","exceededDailyQuotaDevices","exceeded_daily_quota_devices","silencedDevices","silenced_devices","silencedEvents","silenced_events","throttledDevices","throttled_devices","throttledEvents","throttled_events","PayloadTooLarge","RateLimit","throttledUsers","throttled_users","exceededDailyQuotaUsers","exceeded_daily_quota_users","Timeout","Failed","Unknown","TIMEOUT_MESSAGE","UNEXPECTED_ERROR_MESSAGE","RemoteConfigFetch","localConfig","configKeys","_this","retryTimeout","attempts","sessionTargetingMatch","metrics","getRemoteNamespaceConfig","configNamespace","sessionId","fetchStartTime","configAPIResponse","remoteConfig","Date","now","fetchWithTimeout","configs","fetchTimeAPISuccess","fetchTimeAPIFail","undefined","getRemoteConfig","key","namespaceConfig","controller","timeoutId","AbortController","setTimeout","abort","fetchRemoteConfig","signal","clearTimeout","urlParams","configKey","options","serverUrl","res","e_1","knownError","e_2","lastFetchedSessionId","flushMaxRetries","completeRequest","err","aborted","URLSearchParams","api_key","apiKey","append","e_2_1","return","set","headers","Accept","method","getServerUrl","toString","fetch","parseAndStoreConfig","retryFetch","message","json","success","configServerUrl","serverZone","STAGING","EU","Error","loggerProvider","log","createRemoteConfigFetch","AMPLITUDE_ELEMENT_CLICKED_EVENT","AMPLITUDE_EVENT_PROP_ELEMENT_TAG","AMPLITUDE_EVENT_PROP_ELEMENT_TEXT","AMPLITUDE_EVENT_PROP_PAGE_URL","AMPLITUDE_ORIGIN","AMPLITUDE_ORIGINS_MAP","US","isFunction","createErrorClass","createImpl","ctorFunc","instance","stack","UnsubscriptionError","_super","errors","map","join","name","arrRemove","arr","item","index","indexOf","splice","Subscription","initialTeardown","closed","_parentage","_finalizers","empty","unsubscribe","isArray","_parentage_1","_parentage_1_1","remove","e_1_1","initialFinalizer","_finalizers_1","_finalizers_1_1","finalizer","execFinalizer","add","teardown","_hasParent","_addParent","parent","includes","_removeParent","EMPTY","EMPTY_SUBSCRIPTION","isSubscription","config","onUnhandledError","onStoppedNotification","useDeprecatedSynchronousErrorHandling","useDeprecatedNextContext","timeoutProvider","handler","timeout","args","_i","reportUnhandledError","noop","errorContext","cb","Subscriber","destination","isStopped","EMPTY_OBSERVER","complete","SafeSubscriber","_next","_error","_complete","_bind","Function","bind","fn","ConsumerObserver","partialObserver","handleUnhandledError","observerOrNext","context_1","observable","identity","x","Observable","subscribe","_subscribe","lift","operator","source","subscriber","isObserver","_trySubscribe","sink","forEach","promiseCtor","getPromiseCtor","Symbol_observable","pipe","fns","operations","input","reduce","prev","toPromise","hasLift","operate","init","liftedSource","createOperatorSubscriber","onNext","onComplete","onError","onFinalize","OperatorSubscriber","shouldUnsubscribe","closed_1","ConnectableObservable","subjectFactory","_subject","_refCount","_connection","getSubject","subject","_teardown","connect","connection","subject_1","refCount","refCounter","sharedConnection","conn","higherOrderRefCount","timestampProvider","performanceTimestampProvider","delegate","performance","animationFrameProvider","schedule","callback","request","requestAnimationFrame","cancel","cancelAnimationFrame","handle","timestamp","provider","start","id","run","elapsed","ObjectUnsubscribedError","Subject","currentObservers","observers","hasError","thrownError","AnonymousSubject","_throwIfClosed","defineProperty","get","enumerable","configurable","_checkFinalizedStatuses","_innerSubscribe","asObservable","BehaviorSubject","_value","getValue","subscription","dateTimestampProvider","ReplaySubject","_bufferSize","_windowTime","_timestampProvider","Infinity","_buffer","_infiniteTimeWindow","Math","max","_trimBuffer","copy","adjustedBufferSize","last","AsyncSubject","_hasValue","_isComplete","resolved","Action","scheduler","work","state","delay","intervalProvider","setInterval","AsyncAction","pending","recycleAsyncId","requestAsyncId","_id","flush","_scheduler","execute","_execute","_delay","errorValue","errored","actions","nextHandle","activeHandles","findAndClearHandle","setImmediate","clearImmediate","immediateProvider","AsapAction","_scheduled","Scheduler","schedulerActionCtor","AsyncScheduler","SchedulerAction","_active","action","AsapScheduler","flushId","asyncScheduler","async","QueueAction","QueueScheduler","AnimationFrameAction","AnimationFrameScheduler","VirtualTimeScheduler","maxFrames","VirtualAction","frame","frameTimeFactor","active","Number","isFinite","sort","sortActions","isScheduler","popScheduler","isArrayLike","isPromise","isInteropObservable","isAsyncIterable","obj","createInvalidObservableTypeError","NotificationKind","isIterable","Symbol_iterator","readableStreamLikeToAsyncGenerator","readableStream","reader","getReader","read","releaseLock","isReadableStreamLike","innerFrom","obs","array","promise","fromAsyncIterable","iterable","iterable_1","iterable_1_1","asyncIterable","asyncIterable_1","asyncIterable_1_1","process","catch","executeSchedule","parentSubscription","repeat","scheduleSubscription","observeOn","subscribeOn","scheduleAsyncIterable","scheduled","scheduleObservable","scheduleArray","schedulePromise","scheduleIterable","scheduleReadableStreamLike","isValidDate","isNaN","TimeoutError","info","timeoutErrorFactory","project","mapOneOrManyArgs","callOrApply","mergeMap","resultSelector","concurrent","ii","onBeforeNext","expand","innerSubScheduler","additionalFinalizer","buffer","isComplete","checkComplete","outerNext","doInnerSub","innerComplete","innerValue","_loop_1","bufferedValue","mergeInternals","mergeAll","concatAll","nodeEventEmitterMethods","eventTargetMethods","jqueryMethods","fromEvent","target","eventName","addEventListener","removeEventListener","isEventTarget","methodName","addListener","removeListener","isNodeStyleEventEmitter","toCommonHandlerRegistry","on","off","isJQueryStyleEventEmitter","subTarget","timer","dueTime","intervalOrScheduler","intervalDuration","due","merge","defaultValue","popNumber","sources","filter","predicate","race","subscriptions","raceInit","take","count","seen","delayWhen","delayDurationSelector","subscriptionDelay","mapTo","share","connector","resetOnError","resetOnComplete","resetOnRefCountZero","wrapperSource","resetConnection","hasCompleted","hasErrored","cancelReset","reset","resetAndUnsubscribe","dest","handleReset","onSubscriber","throttleTime","duration","duration$","durationSelector","leading","trailing","hasValue","sendValue","throttled","endThrottling","cleanupThrottling","startThrottle","throttle","BLOCKED_ATTRIBUTES","SENSITIVE_ELEMENT_ATTRIBUTE_ALLOWLIST","SVG_TAGS","HIGHLY_SENSITIVE_INPUT_TYPES","getHierarchy","element","hierarchy","list","bytesLimit","numChars","node","ensureUnicodePythonCompatible","ensureListUnderLimit","targetEl","ancestors","current","parentElement","tagName","getAncestors","el","toLowerCase","properties","tag","siblings","children","indexOfType","prevSiblingTag","previousElementSibling","prevSib","getAttribute","classes","classList","attributes","filteredAttributes","attr","isSensitiveElement","isNonSensitiveElement","filteredAttributes_1","filteredAttributes_1_1","substring","keys","attrs","getElementProperties","nested","replace","elements","entries","val","SENSITIVE_TAGS","isElementPointerCursor","actionType","computedStyle","window","getComputedStyle","getPropertyValue","createShouldTrackEvent","autocaptureOptions","allowlist","isAlwaysCaptureCursorPointer","pageUrlAllowlist","shouldTrackEventResolver","isPageUrlAllowed","location","href","elementType","isCursorPointer","hasMatchAnyAllowedSelector","some","selector","matches","isNonSensitiveString","text","test","isContentEditable","HTMLElement","getText","childNodes","child","childText","nodeType","textContent","split","url","allowedUrl","match","removeEmptyProperties","filteredProperties","trim","isEmpty","getNearestLabel","labelElement","querySelector","labelText","getClosestElement","selectors","getEventTagProps","constants.AMPLITUDE_EVENT_PROP_ELEMENT_TAG","constants.AMPLITUDE_EVENT_PROP_ELEMENT_TEXT","constants.AMPLITUDE_EVENT_PROP_PAGE_URL","filterOutNonTrackableEvents","event","closestTrackedAncestor","getEventProperties","dataAttributePrefix","rect","getBoundingClientRect","left","top","ariaLabel","prefix","getAttributeNames","attributeName","startsWith","attributeKey","attributeValue","getAttributesWithPrefix","nearestLabel","round","document","title","innerHeight","innerWidth","HTMLAnchorElement","addAdditionalEventProperties","type","selectorAllowlist","isCapturingCursorPointer","baseEvent","isElementBasedEvent","targetElementProperties","extractDataFromDataSource","dataSource","contextElement","sourceType","sourceElement","scopingElement","documentElement","scope","closest","getDataSource","elementExtractType","attribute","executeActions","ev","data","destinationKey","WindowMessenger","origin","endpoint","requestCallbacks","onSelect","notify","onTrack","logger","debug","JSON","stringify","opener","postMessage","sendRequest","random","substr","handleResponse","response","responseData","warn","setup","isElementSelectable","cssSelectorAllowlist","actionClickAllowlist","amplitudeVisualTaggingSelectorInstance","eventData","actionData_1","scriptElement","createElement","src","once","head","appendChild","amplitudeVisualTaggingSelector","visualHighlightClass","messenger","close","trackClicks","closingNotifier","amplitude","allObservables","shouldTrackEvent","evaluateTriggers","clickObservable","comparisonTrigger","hasPrev","targetChanged","samePos","abs","screenX","screenY","triggers","debounceTime","activeTask","lastValue","lastTime","emit","emitWhenIdle","targetTime","bufferedClicks","click","currentBuffer","clicks","clickType","clicks_1","clicks_1_1","track","trackActionClick","shouldTrackActionClick","mutationObservable","navigateObservable","filteredClickObservable","closestActionClickEl","clickEvent","changeObservables","mutationOrNavigate","actionClicks","schedulerArg","first","each","with","_with","meta","originalSourceSubscription","timerSubscription","startTimer","innerSubscriber","innerIndex","outerIndex","actionClick","ObservablesEnum","createMutationObservable","observer","mutationObserver","MutationObserver","mutations","observe","childList","characterData","subtree","disconnect","createClickObservable","capture","eventTypeToBrowserEventMap","groupLabeledEventIdsByEventType","labeledEvents","groupedLabeledEvents","values","acc","browserEvent","Set","labeledEvents_1","labeledEvents_1_1","le","definition","def","event_type","console","createLabeledEventToTriggerMap","labeledEventToTriggerMap","Map","triggers_1","triggers_1_1","trigger","conditions","condition","eventId","existingTriggers","matchEventToLabeledEvents","filters","every","subprop_key","subprop_op","subprop_value","matchEventToFilter","TriggerEvaluator","evaluate","pageActions","matchingTriggers","leToTriggerMap","labeledEvents_2","labeledEvents_2_1","triggers_2","e_6","triggers_2_1","matchLabeledEventsToTriggers","matchingTriggers_1","matchingTriggers_1_1","update","autocapturePlugin","visualTaggingOptions","enabled","createTriggerEvaluator","remoteConfigFetch","remotePageActions","recomputePageActionsData","error_1","changeObservable","change","navigation","navigate","mutation","ClickObservable","ChangeObservable","NavigateObservable","MutationObservable","createObservables","clickTrackingSubscription","changeSubscription","changeEvent","trackChange","actionClickSubscription","constants.AMPLITUDE_ORIGINS_MAP","subscriptions_1","subscriptions_1_1","rageCssSelectors","rageClicks","deadCssSelectors","deadClicks","combinedCssSelectors","shouldTrackRageClick","shouldTrackDeadClick","enrichedMutationObservable","rageClickSubscription","clickWindow","clickPtr","firstClick","lastClick","rageClickEvent","toISOString","X","clientX","Y","clientY","Time","time","trackRageClicks","deadClickSubscription","deadClickEvent","trackDeadClick"],"mappings":"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"}