flowgrid-sdk 1.2.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +224 -250
- package/dist/237.flowgrid.min.js +2 -0
- package/dist/237.flowgrid.min.js.map +1 -0
- package/dist/546.flowgrid.min.js +3 -0
- package/dist/546.flowgrid.min.js.LICENSE.txt +14 -0
- package/dist/546.flowgrid.min.js.map +1 -0
- package/dist/EXAMPLE.d.ts +1 -0
- package/dist/EXAMPLE.js +55 -0
- package/dist/EXAMPLE.js.map +1 -0
- package/dist/browser.d.ts +46 -103
- package/dist/browser.js +102 -0
- package/dist/browser.js.map +1 -0
- package/dist/flowgrid.min.js +1 -1
- package/dist/flowgrid.min.js.map +1 -1
- package/dist/index.d.ts +7 -8
- package/dist/index.js +64 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/client/transport.d.ts +14 -4
- package/dist/lib/client/transport.js +432 -0
- package/dist/lib/client/transport.js.map +1 -0
- package/dist/lib/consent/index.d.ts +0 -5
- package/dist/lib/consent/index.js +32 -0
- package/dist/lib/consent/index.js.map +1 -0
- package/dist/lib/consent/manager.js +336 -0
- package/dist/lib/consent/manager.js.map +1 -0
- package/dist/lib/consent/types.d.ts +3 -20
- package/dist/lib/consent/types.js +10 -0
- package/dist/lib/consent/types.js.map +1 -0
- package/dist/lib/features/analytics/attribution.d.ts +6 -47
- package/dist/lib/features/analytics/attribution.js +181 -0
- package/dist/lib/features/analytics/attribution.js.map +1 -0
- package/dist/lib/features/analytics/events.d.ts +1 -28
- package/dist/lib/features/analytics/events.js +256 -0
- package/dist/lib/features/analytics/events.js.map +1 -0
- package/dist/lib/features/analytics/funnels.js +260 -0
- package/dist/lib/features/analytics/funnels.js.map +1 -0
- package/dist/lib/features/analytics/heatmaps.d.ts +12 -19
- package/dist/lib/features/analytics/heatmaps.js +258 -0
- package/dist/lib/features/analytics/heatmaps.js.map +1 -0
- package/dist/lib/features/analytics/identify.d.ts +1 -21
- package/dist/lib/features/analytics/identify.js +213 -0
- package/dist/lib/features/analytics/identify.js.map +1 -0
- package/dist/lib/features/analytics/index.d.ts +2 -0
- package/dist/lib/features/analytics/index.js +15 -0
- package/dist/lib/features/analytics/index.js.map +1 -0
- package/dist/lib/features/analytics/page-views.d.ts +13 -30
- package/dist/lib/features/analytics/page-views.js +268 -0
- package/dist/lib/features/analytics/page-views.js.map +1 -0
- package/dist/lib/features/analytics/performance.d.ts +18 -24
- package/dist/lib/features/analytics/performance.js +232 -0
- package/dist/lib/features/analytics/performance.js.map +1 -0
- package/dist/lib/features/analytics/replay.d.ts +170 -0
- package/dist/lib/features/analytics/replay.js +381 -0
- package/dist/lib/features/analytics/replay.js.map +1 -0
- package/dist/lib/features/analytics/retention.d.ts +1 -76
- package/dist/lib/features/analytics/retention.js +135 -0
- package/dist/lib/features/analytics/retention.js.map +1 -0
- package/dist/lib/features/analytics/sessions.d.ts +12 -37
- package/dist/lib/features/analytics/sessions.js +213 -0
- package/dist/lib/features/analytics/sessions.js.map +1 -0
- package/dist/lib/features/core/activation.d.ts +1 -24
- package/dist/lib/features/core/activation.js +175 -0
- package/dist/lib/features/core/activation.js.map +1 -0
- package/dist/lib/features/core/experiment.d.ts +53 -21
- package/dist/lib/features/core/experiment.js +554 -0
- package/dist/lib/features/core/experiment.js.map +1 -0
- package/dist/lib/features/core/index.js +9 -0
- package/dist/lib/features/core/index.js.map +1 -0
- package/dist/lib/features/core/track-feature.d.ts +1 -8
- package/dist/lib/features/core/track-feature.js +119 -0
- package/dist/lib/features/core/track-feature.js.map +1 -0
- package/dist/lib/features/core/track-prompt.d.ts +5 -8
- package/dist/lib/features/core/track-prompt.js +181 -0
- package/dist/lib/features/core/track-prompt.js.map +1 -0
- package/dist/lib/features/ecommerce/cart.d.ts +1 -24
- package/dist/lib/features/ecommerce/cart.js +244 -0
- package/dist/lib/features/ecommerce/cart.js.map +1 -0
- package/dist/lib/features/ecommerce/checkout.d.ts +1 -28
- package/dist/lib/features/ecommerce/checkout.js +254 -0
- package/dist/lib/features/ecommerce/checkout.js.map +1 -0
- package/dist/lib/features/ecommerce/index.d.ts +0 -2
- package/dist/lib/features/ecommerce/index.js +15 -0
- package/dist/lib/features/ecommerce/index.js.map +1 -0
- package/dist/lib/features/ecommerce/ltv.d.ts +1 -69
- package/dist/lib/features/ecommerce/ltv.js +114 -0
- package/dist/lib/features/ecommerce/ltv.js.map +1 -0
- package/dist/lib/features/ecommerce/products.d.ts +1 -33
- package/dist/lib/features/ecommerce/products.js +223 -0
- package/dist/lib/features/ecommerce/products.js.map +1 -0
- package/dist/lib/features/ecommerce/promotions.d.ts +1 -30
- package/dist/lib/features/ecommerce/promotions.js +197 -0
- package/dist/lib/features/ecommerce/promotions.js.map +1 -0
- package/dist/lib/features/ecommerce/purchases.d.ts +1 -48
- package/dist/lib/features/ecommerce/purchases.js +193 -0
- package/dist/lib/features/ecommerce/purchases.js.map +1 -0
- package/dist/lib/features/ecommerce/refunds.d.ts +1 -27
- package/dist/lib/features/ecommerce/refunds.js +195 -0
- package/dist/lib/features/ecommerce/refunds.js.map +1 -0
- package/dist/lib/features/ecommerce/search.d.ts +1 -24
- package/dist/lib/features/ecommerce/search.js +156 -0
- package/dist/lib/features/ecommerce/search.js.map +1 -0
- package/dist/lib/features/ecommerce/subscriptions.d.ts +1 -28
- package/dist/lib/features/ecommerce/subscriptions.js +207 -0
- package/dist/lib/features/ecommerce/subscriptions.js.map +1 -0
- package/dist/lib/features/ecommerce/wishlist.d.ts +1 -28
- package/dist/lib/features/ecommerce/wishlist.js +186 -0
- package/dist/lib/features/ecommerce/wishlist.js.map +1 -0
- package/dist/lib/features/enterprise/acquisition.d.ts +2 -57
- package/dist/lib/features/enterprise/acquisition.js +166 -0
- package/dist/lib/features/enterprise/acquisition.js.map +1 -0
- package/dist/lib/features/enterprise/alerts.d.ts +1 -37
- package/dist/lib/features/enterprise/alerts.js +246 -0
- package/dist/lib/features/enterprise/alerts.js.map +1 -0
- package/dist/lib/features/enterprise/churn.d.ts +1 -42
- package/dist/lib/features/enterprise/churn.js +175 -0
- package/dist/lib/features/enterprise/churn.js.map +1 -0
- package/dist/lib/features/enterprise/cohorts.d.ts +1 -37
- package/dist/lib/features/enterprise/cohorts.js +201 -0
- package/dist/lib/features/enterprise/cohorts.js.map +1 -0
- package/dist/lib/features/enterprise/engagement.d.ts +40 -46
- package/dist/lib/features/enterprise/engagement.js +335 -0
- package/dist/lib/features/enterprise/engagement.js.map +1 -0
- package/dist/lib/features/enterprise/forecasting.d.ts +0 -50
- package/dist/lib/features/enterprise/forecasting.js +232 -0
- package/dist/lib/features/enterprise/forecasting.js.map +1 -0
- package/dist/lib/features/enterprise/index.d.ts +1 -1
- package/dist/lib/features/enterprise/index.js +76 -0
- package/dist/lib/features/enterprise/index.js.map +1 -0
- package/dist/lib/features/enterprise/monetization.d.ts +1 -60
- package/dist/lib/features/enterprise/monetization.js +146 -0
- package/dist/lib/features/enterprise/monetization.js.map +1 -0
- package/dist/lib/features/enterprise/multi-path-funnels.d.ts +1 -17
- package/dist/lib/features/enterprise/multi-path-funnels.js +205 -0
- package/dist/lib/features/enterprise/multi-path-funnels.js.map +1 -0
- package/dist/lib/features/enterprise/paths.d.ts +1 -56
- package/dist/lib/features/enterprise/paths.js +149 -0
- package/dist/lib/features/enterprise/paths.js.map +1 -0
- package/dist/lib/features/enterprise/security.d.ts +8 -57
- package/dist/lib/features/enterprise/security.js +202 -0
- package/dist/lib/features/enterprise/security.js.map +1 -0
- package/dist/lib/features/enterprise/support.d.ts +3 -42
- package/dist/lib/features/enterprise/support.js +162 -0
- package/dist/lib/features/enterprise/support.js.map +1 -0
- package/dist/lib/flowgrid.d.ts +278 -0
- package/dist/lib/flowgrid.js +323 -0
- package/dist/lib/flowgrid.js.map +1 -0
- package/dist/lib/frameworks/index.d.ts +13 -6
- package/dist/lib/frameworks/index.js +18 -0
- package/dist/lib/frameworks/index.js.map +1 -0
- package/dist/lib/frameworks/nextjs/client.js +355 -0
- package/dist/lib/frameworks/nextjs/client.js.map +1 -0
- package/dist/lib/frameworks/nextjs/index.js +31 -0
- package/dist/lib/frameworks/nextjs/index.js.map +1 -0
- package/dist/lib/frameworks/nextjs/server.js +259 -0
- package/dist/lib/frameworks/nextjs/server.js.map +1 -0
- package/dist/lib/frameworks/node/index.js +391 -0
- package/dist/lib/frameworks/node/index.js.map +1 -0
- package/dist/lib/frameworks/nuxt/index.js +288 -0
- package/dist/lib/frameworks/nuxt/index.js.map +1 -0
- package/dist/lib/frameworks/react/CookieBanner.js +166 -0
- package/dist/lib/frameworks/react/CookieBanner.js.map +1 -0
- package/dist/lib/frameworks/react/index.js +271 -0
- package/dist/lib/frameworks/react/index.js.map +1 -0
- package/dist/lib/frameworks/vue/CookieBanner.js +165 -0
- package/dist/lib/frameworks/vue/CookieBanner.js.map +1 -0
- package/dist/lib/frameworks/vue/index.js +390 -0
- package/dist/lib/frameworks/vue/index.js.map +1 -0
- package/dist/lib/tracking/analytics/attribution.d.ts +14 -0
- package/dist/lib/tracking/analytics/attribution.js +18 -0
- package/dist/lib/tracking/analytics/attribution.js.map +1 -0
- package/dist/lib/tracking/analytics/events.d.ts +26 -0
- package/dist/lib/tracking/analytics/events.js +30 -0
- package/dist/lib/tracking/analytics/events.js.map +1 -0
- package/dist/lib/tracking/analytics/funnels.d.ts +16 -0
- package/dist/lib/tracking/analytics/funnels.js +22 -0
- package/dist/lib/tracking/analytics/funnels.js.map +1 -0
- package/dist/lib/tracking/analytics/heatmaps.d.ts +27 -0
- package/dist/lib/tracking/analytics/heatmaps.js +22 -0
- package/dist/lib/tracking/analytics/heatmaps.js.map +1 -0
- package/dist/lib/tracking/analytics/identify.d.ts +16 -0
- package/dist/lib/tracking/analytics/identify.js +22 -0
- package/dist/lib/tracking/analytics/identify.js.map +1 -0
- package/dist/lib/tracking/analytics/index.d.ts +10 -0
- package/dist/lib/tracking/analytics/index.js +11 -0
- package/dist/lib/tracking/analytics/index.js.map +1 -0
- package/dist/lib/tracking/analytics/page-views.d.ts +29 -0
- package/dist/lib/tracking/analytics/page-views.js +50 -0
- package/dist/lib/tracking/analytics/page-views.js.map +1 -0
- package/dist/lib/tracking/analytics/performance.d.ts +22 -0
- package/dist/lib/tracking/analytics/performance.js +22 -0
- package/dist/lib/tracking/analytics/performance.js.map +1 -0
- package/dist/lib/tracking/analytics/replay.d.ts +34 -0
- package/dist/lib/tracking/analytics/replay.js +46 -0
- package/dist/lib/tracking/analytics/replay.js.map +1 -0
- package/dist/lib/tracking/analytics/retention.d.ts +10 -0
- package/dist/lib/tracking/analytics/retention.js +10 -0
- package/dist/lib/tracking/analytics/retention.js.map +1 -0
- package/dist/lib/tracking/analytics/sessions.d.ts +20 -0
- package/dist/lib/tracking/analytics/sessions.js +26 -0
- package/dist/lib/tracking/analytics/sessions.js.map +1 -0
- package/dist/lib/tracking/core/activation.d.ts +23 -0
- package/dist/lib/tracking/core/activation.js +33 -0
- package/dist/lib/tracking/core/activation.js.map +1 -0
- package/dist/lib/tracking/core/experiment.d.ts +122 -0
- package/dist/lib/tracking/core/experiment.js +150 -0
- package/dist/lib/tracking/core/experiment.js.map +1 -0
- package/dist/lib/tracking/core/feature.d.ts +13 -0
- package/dist/lib/tracking/core/feature.js +14 -0
- package/dist/lib/tracking/core/feature.js.map +1 -0
- package/dist/lib/tracking/core/index.d.ts +4 -0
- package/dist/lib/tracking/core/index.js +5 -0
- package/dist/lib/tracking/core/index.js.map +1 -0
- package/dist/lib/tracking/core/prompt.d.ts +18 -0
- package/dist/lib/tracking/core/prompt.js +26 -0
- package/dist/lib/tracking/core/prompt.js.map +1 -0
- package/dist/lib/tracking/ecommerce/cart.d.ts +17 -0
- package/dist/lib/tracking/ecommerce/cart.js +22 -0
- package/dist/lib/tracking/ecommerce/cart.js.map +1 -0
- package/dist/lib/tracking/ecommerce/checkout.d.ts +17 -0
- package/dist/lib/tracking/ecommerce/checkout.js +22 -0
- package/dist/lib/tracking/ecommerce/checkout.js.map +1 -0
- package/dist/lib/tracking/ecommerce/index.d.ts +10 -0
- package/dist/lib/tracking/ecommerce/index.js +11 -0
- package/dist/lib/tracking/ecommerce/index.js.map +1 -0
- package/dist/lib/tracking/ecommerce/ltv.d.ts +15 -0
- package/dist/lib/tracking/ecommerce/ltv.js +14 -0
- package/dist/lib/tracking/ecommerce/ltv.js.map +1 -0
- package/dist/lib/tracking/ecommerce/products.d.ts +15 -0
- package/dist/lib/tracking/ecommerce/products.js +18 -0
- package/dist/lib/tracking/ecommerce/products.js.map +1 -0
- package/dist/lib/tracking/ecommerce/promotions.d.ts +14 -0
- package/dist/lib/tracking/ecommerce/promotions.js +25 -0
- package/dist/lib/tracking/ecommerce/promotions.js.map +1 -0
- package/dist/lib/tracking/ecommerce/purchases.d.ts +11 -0
- package/dist/lib/tracking/ecommerce/purchases.js +10 -0
- package/dist/lib/tracking/ecommerce/purchases.js.map +1 -0
- package/dist/lib/tracking/ecommerce/refunds.d.ts +17 -0
- package/dist/lib/tracking/ecommerce/refunds.js +22 -0
- package/dist/lib/tracking/ecommerce/refunds.js.map +1 -0
- package/dist/lib/tracking/ecommerce/search.d.ts +24 -0
- package/dist/lib/tracking/ecommerce/search.js +22 -0
- package/dist/lib/tracking/ecommerce/search.js.map +1 -0
- package/dist/lib/tracking/ecommerce/subscriptions.d.ts +21 -0
- package/dist/lib/tracking/ecommerce/subscriptions.js +38 -0
- package/dist/lib/tracking/ecommerce/subscriptions.js.map +1 -0
- package/dist/lib/tracking/ecommerce/wishlist.d.ts +19 -0
- package/dist/lib/tracking/ecommerce/wishlist.js +26 -0
- package/dist/lib/tracking/ecommerce/wishlist.js.map +1 -0
- package/dist/lib/tracking/enterprise/acquisition.d.ts +25 -0
- package/dist/lib/tracking/enterprise/acquisition.js +22 -0
- package/dist/lib/tracking/enterprise/acquisition.js.map +1 -0
- package/dist/lib/tracking/enterprise/alerts.d.ts +32 -0
- package/dist/lib/tracking/enterprise/alerts.js +30 -0
- package/dist/lib/tracking/enterprise/alerts.js.map +1 -0
- package/dist/lib/tracking/enterprise/churn.d.ts +23 -0
- package/dist/lib/tracking/enterprise/churn.js +22 -0
- package/dist/lib/tracking/enterprise/churn.js.map +1 -0
- package/dist/lib/tracking/enterprise/cohorts.d.ts +18 -0
- package/dist/lib/tracking/enterprise/cohorts.js +18 -0
- package/dist/lib/tracking/enterprise/cohorts.js.map +1 -0
- package/dist/lib/tracking/enterprise/engagement.d.ts +31 -0
- package/dist/lib/tracking/enterprise/engagement.js +44 -0
- package/dist/lib/tracking/enterprise/engagement.js.map +1 -0
- package/dist/lib/tracking/enterprise/forecasting.d.ts +18 -0
- package/dist/lib/tracking/enterprise/forecasting.js +22 -0
- package/dist/lib/tracking/enterprise/forecasting.js.map +1 -0
- package/dist/lib/tracking/enterprise/index.d.ts +11 -0
- package/dist/lib/tracking/enterprise/index.js +12 -0
- package/dist/lib/tracking/enterprise/index.js.map +1 -0
- package/dist/lib/tracking/enterprise/monetization.d.ts +14 -0
- package/dist/lib/tracking/enterprise/monetization.js +10 -0
- package/dist/lib/tracking/enterprise/monetization.js.map +1 -0
- package/dist/lib/tracking/enterprise/multi-path-funnels.d.ts +20 -0
- package/dist/lib/tracking/enterprise/multi-path-funnels.js +18 -0
- package/dist/lib/tracking/enterprise/multi-path-funnels.js.map +1 -0
- package/dist/lib/tracking/enterprise/paths.d.ts +20 -0
- package/dist/lib/tracking/enterprise/paths.js +18 -0
- package/dist/lib/tracking/enterprise/paths.js.map +1 -0
- package/dist/lib/tracking/enterprise/security.d.ts +28 -0
- package/dist/lib/tracking/enterprise/security.js +26 -0
- package/dist/lib/tracking/enterprise/security.js.map +1 -0
- package/dist/lib/tracking/enterprise/support.d.ts +25 -0
- package/dist/lib/tracking/enterprise/support.js +22 -0
- package/dist/lib/tracking/enterprise/support.js.map +1 -0
- package/dist/lib/tracking/index.d.ts +4 -0
- package/dist/lib/tracking/index.js +5 -0
- package/dist/lib/tracking/index.js.map +1 -0
- package/dist/lib/types/analytics.d.ts +10 -2
- package/dist/lib/types/analytics.js +6 -0
- package/dist/lib/types/analytics.js.map +1 -0
- package/dist/lib/types/common.js +6 -0
- package/dist/lib/types/common.js.map +1 -0
- package/dist/lib/types/ecommerce.js +6 -0
- package/dist/lib/types/ecommerce.js.map +1 -0
- package/dist/lib/types/index.js +8 -0
- package/dist/lib/types/index.js.map +1 -0
- package/dist/lib/utils/browser.d.ts +16 -0
- package/dist/lib/utils/browser.js +32 -0
- package/dist/lib/utils/browser.js.map +1 -0
- package/dist/lib/utils/identity.js +346 -0
- package/dist/lib/utils/identity.js.map +1 -0
- package/dist/lib/utils/storage.js +105 -0
- package/dist/lib/utils/storage.js.map +1 -0
- package/dist/umd/237.index.js +2 -0
- package/dist/umd/237.index.js.map +1 -0
- package/dist/umd/546.index.js +3 -0
- package/dist/umd/546.index.js.LICENSE.txt +14 -0
- package/dist/umd/546.index.js.map +1 -0
- package/dist/umd/index.js +2 -0
- package/dist/umd/index.js.map +1 -0
- package/package.json +27 -80
- package/dist/lib/features/ecommerce/inventory.d.ts +0 -219
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"546.index.js","mappings":"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","sources":["webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb-snapshot/es/rrweb-snapshot.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/utils.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/types/dist/types.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/record/mutation.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observer.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/record/cross-origin-iframe-mirror.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/record/iframe-manager.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/record/shadow-dom-manager.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/ext/tslib/tslib.es6.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/serialize-args.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/webgl.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/_virtual/image-bitmap-data-url-worker.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/_virtual/_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/canvas-manager.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/record/observers/canvas/2d.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/record/stylesheet-manager.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/record/index.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/index.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/ext/fflate/esm/browser.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/packer/base.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/packer/pack.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/packer/unpack.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/error-stack-parser.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/stringify.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/record/index.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/plugins/console/replay/index.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrdom/es/rrdom.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/ext/mitt/dist/mitt.mjs.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/replay/smoothscroll.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/replay/timer.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/ext/@xstate/fsm/es/index.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/replay/styles/inject-style.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/replay/canvas/deserialize-args.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/replay/canvas/webgl.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/replay/canvas/2d.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/replay/canvas/index.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/replay/index.js","webpack://FlowGridSDK/./node_modules/rrweb/es/rrweb/packages/rrweb/src/replay/machine.js"],"sourcesContent":["var NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType || (NodeType = {}));\n\nfunction isElement(n) {\r\n return n.nodeType === n.ELEMENT_NODE;\r\n}\r\nfunction isShadowRoot(n) {\r\n var host = n === null || n === void 0 ? void 0 : n.host;\r\n return Boolean((host === null || host === void 0 ? void 0 : host.shadowRoot) === n);\r\n}\r\nfunction isNativeShadowDom(shadowRoot) {\r\n return Object.prototype.toString.call(shadowRoot) === '[object ShadowRoot]';\r\n}\r\nfunction fixBrowserCompatibilityIssuesInCSS(cssText) {\r\n if (cssText.includes(' background-clip: text;') &&\r\n !cssText.includes(' -webkit-background-clip: text;')) {\r\n cssText = cssText.replace(' background-clip: text;', ' -webkit-background-clip: text; background-clip: text;');\r\n }\r\n return cssText;\r\n}\r\nfunction getCssRulesString(s) {\r\n try {\r\n var rules = s.rules || s.cssRules;\r\n return rules\r\n ? fixBrowserCompatibilityIssuesInCSS(Array.from(rules).map(getCssRuleString).join(''))\r\n : null;\r\n }\r\n catch (error) {\r\n return null;\r\n }\r\n}\r\nfunction getCssRuleString(rule) {\r\n var cssStringified = rule.cssText;\r\n if (isCSSImportRule(rule)) {\r\n try {\r\n cssStringified = getCssRulesString(rule.styleSheet) || cssStringified;\r\n }\r\n catch (_a) {\r\n }\r\n }\r\n return cssStringified;\r\n}\r\nfunction isCSSImportRule(rule) {\r\n return 'styleSheet' in rule;\r\n}\r\nvar Mirror = (function () {\r\n function Mirror() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n Mirror.prototype.getId = function (n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n var id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n };\r\n Mirror.prototype.getNode = function (id) {\r\n return this.idNodeMap.get(id) || null;\r\n };\r\n Mirror.prototype.getIds = function () {\r\n return Array.from(this.idNodeMap.keys());\r\n };\r\n Mirror.prototype.getMeta = function (n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n };\r\n Mirror.prototype.removeNodeFromMap = function (n) {\r\n var _this = this;\r\n var id = this.getId(n);\r\n this.idNodeMap[\"delete\"](id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach(function (childNode) {\r\n return _this.removeNodeFromMap(childNode);\r\n });\r\n }\r\n };\r\n Mirror.prototype.has = function (id) {\r\n return this.idNodeMap.has(id);\r\n };\r\n Mirror.prototype.hasNode = function (node) {\r\n return this.nodeMetaMap.has(node);\r\n };\r\n Mirror.prototype.add = function (n, meta) {\r\n var id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n };\r\n Mirror.prototype.replace = function (id, n) {\r\n var oldNode = this.getNode(id);\r\n if (oldNode) {\r\n var meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n };\r\n Mirror.prototype.reset = function () {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n };\r\n return Mirror;\r\n}());\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nfunction maskInputValue(_a) {\r\n var maskInputOptions = _a.maskInputOptions, tagName = _a.tagName, type = _a.type, value = _a.value, maskInputFn = _a.maskInputFn;\r\n var text = value || '';\r\n if (maskInputOptions[tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n if (maskInputFn) {\r\n text = maskInputFn(text);\r\n }\r\n else {\r\n text = '*'.repeat(text.length);\r\n }\r\n }\r\n return text;\r\n}\r\nvar ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nfunction is2DCanvasBlank(canvas) {\r\n var ctx = canvas.getContext('2d');\r\n if (!ctx)\r\n return true;\r\n var chunkSize = 50;\r\n for (var x = 0; x < canvas.width; x += chunkSize) {\r\n for (var y = 0; y < canvas.height; y += chunkSize) {\r\n var getImageData = ctx.getImageData;\r\n var originalGetImageData = ORIGINAL_ATTRIBUTE_NAME in getImageData\r\n ? getImageData[ORIGINAL_ATTRIBUTE_NAME]\r\n : getImageData;\r\n var pixelBuffer = new Uint32Array(originalGetImageData.call(ctx, x, y, Math.min(chunkSize, canvas.width - x), Math.min(chunkSize, canvas.height - y)).data.buffer);\r\n if (pixelBuffer.some(function (pixel) { return pixel !== 0; }))\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\n\nvar _id = 1;\r\nvar tagNameRegex = new RegExp('[^a-z0-9-_:]');\r\nvar IGNORED_NODE = -2;\r\nfunction genId() {\r\n return _id++;\r\n}\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'form';\r\n }\r\n var processedTagName = element.tagName.toLowerCase().trim();\r\n if (tagNameRegex.test(processedTagName)) {\r\n return 'div';\r\n }\r\n return processedTagName;\r\n}\r\nfunction stringifyStyleSheet(sheet) {\r\n return sheet.cssRules\r\n ? Array.from(sheet.cssRules)\r\n .map(function (rule) { return rule.cssText || ''; })\r\n .join('')\r\n : '';\r\n}\r\nfunction extractOrigin(url) {\r\n var origin = '';\r\n if (url.indexOf('//') > -1) {\r\n origin = url.split('/').slice(0, 3).join('/');\r\n }\r\n else {\r\n origin = url.split('/')[0];\r\n }\r\n origin = origin.split('?')[0];\r\n return origin;\r\n}\r\nvar canvasService;\r\nvar canvasCtx;\r\nvar URL_IN_CSS_REF = /url\\((?:(')([^']*)'|(\")(.*?)\"|([^)]*))\\)/gm;\r\nvar RELATIVE_PATH = /^(?!www\\.|(?:http|ftp)s?:\\/\\/|[A-Za-z]:\\\\|\\/\\/|#).*/;\r\nvar DATA_URI = /^(data:)([^,]*),(.*)/i;\r\nfunction absoluteToStylesheet(cssText, href) {\r\n return (cssText || '').replace(URL_IN_CSS_REF, function (origin, quote1, path1, quote2, path2, path3) {\r\n var filePath = path1 || path2 || path3;\r\n var maybeQuote = quote1 || quote2 || '';\r\n if (!filePath) {\r\n return origin;\r\n }\r\n if (!RELATIVE_PATH.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (DATA_URI.test(filePath)) {\r\n return \"url(\".concat(maybeQuote).concat(filePath).concat(maybeQuote, \")\");\r\n }\r\n if (filePath[0] === '/') {\r\n return \"url(\".concat(maybeQuote).concat(extractOrigin(href) + filePath).concat(maybeQuote, \")\");\r\n }\r\n var stack = href.split('/');\r\n var parts = filePath.split('/');\r\n stack.pop();\r\n for (var _i = 0, parts_1 = parts; _i < parts_1.length; _i++) {\r\n var part = parts_1[_i];\r\n if (part === '.') {\r\n continue;\r\n }\r\n else if (part === '..') {\r\n stack.pop();\r\n }\r\n else {\r\n stack.push(part);\r\n }\r\n }\r\n return \"url(\".concat(maybeQuote).concat(stack.join('/')).concat(maybeQuote, \")\");\r\n });\r\n}\r\nvar SRCSET_NOT_SPACES = /^[^ \\t\\n\\r\\u000c]+/;\r\nvar SRCSET_COMMAS_OR_SPACES = /^[, \\t\\n\\r\\u000c]+/;\r\nfunction getAbsoluteSrcsetString(doc, attributeValue) {\r\n if (attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var pos = 0;\r\n function collectCharacters(regEx) {\r\n var chars;\r\n var match = regEx.exec(attributeValue.substring(pos));\r\n if (match) {\r\n chars = match[0];\r\n pos += chars.length;\r\n return chars;\r\n }\r\n return '';\r\n }\r\n var output = [];\r\n while (true) {\r\n collectCharacters(SRCSET_COMMAS_OR_SPACES);\r\n if (pos >= attributeValue.length) {\r\n break;\r\n }\r\n var url = collectCharacters(SRCSET_NOT_SPACES);\r\n if (url.slice(-1) === ',') {\r\n url = absoluteToDoc(doc, url.substring(0, url.length - 1));\r\n output.push(url);\r\n }\r\n else {\r\n var descriptorsStr = '';\r\n url = absoluteToDoc(doc, url);\r\n var inParens = false;\r\n while (true) {\r\n var c = attributeValue.charAt(pos);\r\n if (c === '') {\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (!inParens) {\r\n if (c === ',') {\r\n pos += 1;\r\n output.push((url + descriptorsStr).trim());\r\n break;\r\n }\r\n else if (c === '(') {\r\n inParens = true;\r\n }\r\n }\r\n else {\r\n if (c === ')') {\r\n inParens = false;\r\n }\r\n }\r\n descriptorsStr += c;\r\n pos += 1;\r\n }\r\n }\r\n }\r\n return output.join(', ');\r\n}\r\nfunction absoluteToDoc(doc, attributeValue) {\r\n if (!attributeValue || attributeValue.trim() === '') {\r\n return attributeValue;\r\n }\r\n var a = doc.createElement('a');\r\n a.href = attributeValue;\r\n return a.href;\r\n}\r\nfunction isSVGElement(el) {\r\n return Boolean(el.tagName === 'svg' || el.ownerSVGElement);\r\n}\r\nfunction getHref() {\r\n var a = document.createElement('a');\r\n a.href = '';\r\n return a.href;\r\n}\r\nfunction transformAttribute(doc, tagName, name, value) {\r\n if (name === 'src' ||\r\n (name === 'href' && value && !(tagName === 'use' && value[0] === '#'))) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'xlink:href' && value && value[0] !== '#') {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'background' &&\r\n value &&\r\n (tagName === 'table' || tagName === 'td' || tagName === 'th')) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else if (name === 'srcset' && value) {\r\n return getAbsoluteSrcsetString(doc, value);\r\n }\r\n else if (name === 'style' && value) {\r\n return absoluteToStylesheet(value, getHref());\r\n }\r\n else if (tagName === 'object' && name === 'data' && value) {\r\n return absoluteToDoc(doc, value);\r\n }\r\n else {\r\n return value;\r\n }\r\n}\r\nfunction _isBlockedElement(element, blockClass, blockSelector) {\r\n if (typeof blockClass === 'string') {\r\n if (element.classList.contains(blockClass)) {\r\n return true;\r\n }\r\n }\r\n else {\r\n for (var eIndex = element.classList.length; eIndex--;) {\r\n var className = element.classList[eIndex];\r\n if (blockClass.test(className)) {\r\n return true;\r\n }\r\n }\r\n }\r\n if (blockSelector) {\r\n return element.matches(blockSelector);\r\n }\r\n return false;\r\n}\r\nfunction classMatchesRegex(node, regex, checkAncestors) {\r\n if (!node)\r\n return false;\r\n if (node.nodeType !== node.ELEMENT_NODE) {\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n }\r\n for (var eIndex = node.classList.length; eIndex--;) {\r\n var className = node.classList[eIndex];\r\n if (regex.test(className)) {\r\n return true;\r\n }\r\n }\r\n if (!checkAncestors)\r\n return false;\r\n return classMatchesRegex(node.parentNode, regex, checkAncestors);\r\n}\r\nfunction needMaskingText(node, maskTextClass, maskTextSelector) {\r\n var el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (el === null)\r\n return false;\r\n if (typeof maskTextClass === 'string') {\r\n if (el.classList.contains(maskTextClass))\r\n return true;\r\n if (el.closest(\".\".concat(maskTextClass)))\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, maskTextClass, true))\r\n return true;\r\n }\r\n if (maskTextSelector) {\r\n if (el.matches(maskTextSelector))\r\n return true;\r\n if (el.closest(maskTextSelector))\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction onceIframeLoaded(iframeEl, listener, iframeLoadTimeout) {\r\n var win = iframeEl.contentWindow;\r\n if (!win) {\r\n return;\r\n }\r\n var fired = false;\r\n var readyState;\r\n try {\r\n readyState = win.document.readyState;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (readyState !== 'complete') {\r\n var timer_1 = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, iframeLoadTimeout);\r\n iframeEl.addEventListener('load', function () {\r\n clearTimeout(timer_1);\r\n fired = true;\r\n listener();\r\n });\r\n return;\r\n }\r\n var blankUrl = 'about:blank';\r\n if (win.location.href !== blankUrl ||\r\n iframeEl.src === blankUrl ||\r\n iframeEl.src === '') {\r\n setTimeout(listener, 0);\r\n return iframeEl.addEventListener('load', listener);\r\n }\r\n iframeEl.addEventListener('load', listener);\r\n}\r\nfunction onceStylesheetLoaded(link, listener, styleSheetLoadTimeout) {\r\n var fired = false;\r\n var styleSheetLoaded;\r\n try {\r\n styleSheetLoaded = link.sheet;\r\n }\r\n catch (error) {\r\n return;\r\n }\r\n if (styleSheetLoaded)\r\n return;\r\n var timer = setTimeout(function () {\r\n if (!fired) {\r\n listener();\r\n fired = true;\r\n }\r\n }, styleSheetLoadTimeout);\r\n link.addEventListener('load', function () {\r\n clearTimeout(timer);\r\n fired = true;\r\n listener();\r\n });\r\n}\r\nfunction serializeNode(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c;\r\n var rootId = getRootId(doc, mirror);\r\n switch (n.nodeType) {\r\n case n.DOCUMENT_NODE:\r\n if (n.compatMode !== 'CSS1Compat') {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: [],\r\n compatMode: n.compatMode\r\n };\r\n }\r\n else {\r\n return {\r\n type: NodeType.Document,\r\n childNodes: []\r\n };\r\n }\r\n case n.DOCUMENT_TYPE_NODE:\r\n return {\r\n type: NodeType.DocumentType,\r\n name: n.name,\r\n publicId: n.publicId,\r\n systemId: n.systemId,\r\n rootId: rootId\r\n };\r\n case n.ELEMENT_NODE:\r\n return serializeElementNode(n, {\r\n doc: doc,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement,\r\n rootId: rootId\r\n });\r\n case n.TEXT_NODE:\r\n return serializeTextNode(n, {\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n maskTextFn: maskTextFn,\r\n rootId: rootId\r\n });\r\n case n.CDATA_SECTION_NODE:\r\n return {\r\n type: NodeType.CDATA,\r\n textContent: '',\r\n rootId: rootId\r\n };\r\n case n.COMMENT_NODE:\r\n return {\r\n type: NodeType.Comment,\r\n textContent: n.textContent || '',\r\n rootId: rootId\r\n };\r\n default:\r\n return false;\r\n }\r\n}\r\nfunction getRootId(doc, mirror) {\r\n if (!mirror.hasNode(doc))\r\n return undefined;\r\n var docId = mirror.getId(doc);\r\n return docId === 1 ? undefined : docId;\r\n}\r\nfunction serializeTextNode(n, options) {\r\n var _a;\r\n var maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, maskTextFn = options.maskTextFn, rootId = options.rootId;\r\n var parentTagName = n.parentNode && n.parentNode.tagName;\r\n var textContent = n.textContent;\r\n var isStyle = parentTagName === 'STYLE' ? true : undefined;\r\n var isScript = parentTagName === 'SCRIPT' ? true : undefined;\r\n if (isStyle && textContent) {\r\n try {\r\n if (n.nextSibling || n.previousSibling) {\r\n }\r\n else if ((_a = n.parentNode.sheet) === null || _a === void 0 ? void 0 : _a.cssRules) {\r\n textContent = stringifyStyleSheet(n.parentNode.sheet);\r\n }\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot get CSS styles from text's parentNode. Error: \".concat(err), n);\r\n }\r\n textContent = absoluteToStylesheet(textContent, getHref());\r\n }\r\n if (isScript) {\r\n textContent = 'SCRIPT_PLACEHOLDER';\r\n }\r\n if (!isStyle &&\r\n !isScript &&\r\n textContent &&\r\n needMaskingText(n, maskTextClass, maskTextSelector)) {\r\n textContent = maskTextFn\r\n ? maskTextFn(textContent)\r\n : textContent.replace(/[\\S]/g, '*');\r\n }\r\n return {\r\n type: NodeType.Text,\r\n textContent: textContent || '',\r\n isStyle: isStyle,\r\n rootId: rootId\r\n };\r\n}\r\nfunction serializeElementNode(n, options) {\r\n var doc = options.doc, blockClass = options.blockClass, blockSelector = options.blockSelector, inlineStylesheet = options.inlineStylesheet, _a = options.maskInputOptions, maskInputOptions = _a === void 0 ? {} : _a, maskInputFn = options.maskInputFn, _b = options.dataURLOptions, dataURLOptions = _b === void 0 ? {} : _b, inlineImages = options.inlineImages, recordCanvas = options.recordCanvas, keepIframeSrcFn = options.keepIframeSrcFn, _c = options.newlyAddedElement, newlyAddedElement = _c === void 0 ? false : _c, rootId = options.rootId;\r\n var needBlock = _isBlockedElement(n, blockClass, blockSelector);\r\n var tagName = getValidTagName(n);\r\n var attributes = {};\r\n var len = n.attributes.length;\r\n for (var i = 0; i < len; i++) {\r\n var attr = n.attributes[i];\r\n attributes[attr.name] = transformAttribute(doc, tagName, attr.name, attr.value);\r\n }\r\n if (tagName === 'link' && inlineStylesheet) {\r\n var stylesheet = Array.from(doc.styleSheets).find(function (s) {\r\n return s.href === n.href;\r\n });\r\n var cssText = null;\r\n if (stylesheet) {\r\n cssText = getCssRulesString(stylesheet);\r\n }\r\n if (cssText) {\r\n delete attributes.rel;\r\n delete attributes.href;\r\n attributes._cssText = absoluteToStylesheet(cssText, stylesheet.href);\r\n }\r\n }\r\n if (tagName === 'style' &&\r\n n.sheet &&\r\n !(n.innerText || n.textContent || '').trim().length) {\r\n var cssText = getCssRulesString(n.sheet);\r\n if (cssText) {\r\n attributes._cssText = absoluteToStylesheet(cssText, getHref());\r\n }\r\n }\r\n if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {\r\n var value = n.value;\r\n var checked = n.checked;\r\n if (attributes.type !== 'radio' &&\r\n attributes.type !== 'checkbox' &&\r\n attributes.type !== 'submit' &&\r\n attributes.type !== 'button' &&\r\n value) {\r\n attributes.value = maskInputValue({\r\n type: attributes.type,\r\n tagName: tagName,\r\n value: value,\r\n maskInputOptions: maskInputOptions,\r\n maskInputFn: maskInputFn\r\n });\r\n }\r\n else if (checked) {\r\n attributes.checked = checked;\r\n }\r\n }\r\n if (tagName === 'option') {\r\n if (n.selected && !maskInputOptions['select']) {\r\n attributes.selected = true;\r\n }\r\n else {\r\n delete attributes.selected;\r\n }\r\n }\r\n if (tagName === 'canvas' && recordCanvas) {\r\n if (n.__context === '2d') {\r\n if (!is2DCanvasBlank(n)) {\r\n attributes.rr_dataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n }\r\n else if (!('__context' in n)) {\r\n var canvasDataURL = n.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n var blankCanvas = document.createElement('canvas');\r\n blankCanvas.width = n.width;\r\n blankCanvas.height = n.height;\r\n var blankCanvasDataURL = blankCanvas.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n if (canvasDataURL !== blankCanvasDataURL) {\r\n attributes.rr_dataURL = canvasDataURL;\r\n }\r\n }\r\n }\r\n if (tagName === 'img' && inlineImages) {\r\n if (!canvasService) {\r\n canvasService = doc.createElement('canvas');\r\n canvasCtx = canvasService.getContext('2d');\r\n }\r\n var image_1 = n;\r\n var oldValue_1 = image_1.crossOrigin;\r\n image_1.crossOrigin = 'anonymous';\r\n var recordInlineImage = function () {\r\n try {\r\n canvasService.width = image_1.naturalWidth;\r\n canvasService.height = image_1.naturalHeight;\r\n canvasCtx.drawImage(image_1, 0, 0);\r\n attributes.rr_dataURL = canvasService.toDataURL(dataURLOptions.type, dataURLOptions.quality);\r\n }\r\n catch (err) {\r\n console.warn(\"Cannot inline img src=\".concat(image_1.currentSrc, \"! Error: \").concat(err));\r\n }\r\n oldValue_1\r\n ? (attributes.crossOrigin = oldValue_1)\r\n : image_1.removeAttribute('crossorigin');\r\n };\r\n if (image_1.complete && image_1.naturalWidth !== 0)\r\n recordInlineImage();\r\n else\r\n image_1.onload = recordInlineImage;\r\n }\r\n if (tagName === 'audio' || tagName === 'video') {\r\n attributes.rr_mediaState = n.paused\r\n ? 'paused'\r\n : 'played';\r\n attributes.rr_mediaCurrentTime = n.currentTime;\r\n }\r\n if (!newlyAddedElement) {\r\n if (n.scrollLeft) {\r\n attributes.rr_scrollLeft = n.scrollLeft;\r\n }\r\n if (n.scrollTop) {\r\n attributes.rr_scrollTop = n.scrollTop;\r\n }\r\n }\r\n if (needBlock) {\r\n var _d = n.getBoundingClientRect(), width = _d.width, height = _d.height;\r\n attributes = {\r\n \"class\": attributes[\"class\"],\r\n rr_width: \"\".concat(width, \"px\"),\r\n rr_height: \"\".concat(height, \"px\")\r\n };\r\n }\r\n if (tagName === 'iframe' && !keepIframeSrcFn(attributes.src)) {\r\n if (!n.contentDocument) {\r\n attributes.rr_src = attributes.src;\r\n }\r\n delete attributes.src;\r\n }\r\n return {\r\n type: NodeType.Element,\r\n tagName: tagName,\r\n attributes: attributes,\r\n childNodes: [],\r\n isSVG: isSVGElement(n) || undefined,\r\n needBlock: needBlock,\r\n rootId: rootId\r\n };\r\n}\r\nfunction lowerIfExists(maybeAttr) {\r\n if (maybeAttr === undefined) {\r\n return '';\r\n }\r\n else {\r\n return maybeAttr.toLowerCase();\r\n }\r\n}\r\nfunction slimDOMExcluded(sn, slimDOMOptions) {\r\n if (slimDOMOptions.comment && sn.type === NodeType.Comment) {\r\n return true;\r\n }\r\n else if (sn.type === NodeType.Element) {\r\n if (slimDOMOptions.script &&\r\n (sn.tagName === 'script' ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'preload' &&\r\n sn.attributes.as === 'script') ||\r\n (sn.tagName === 'link' &&\r\n sn.attributes.rel === 'prefetch' &&\r\n typeof sn.attributes.href === 'string' &&\r\n sn.attributes.href.endsWith('.js')))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headFavicon &&\r\n ((sn.tagName === 'link' && sn.attributes.rel === 'shortcut icon') ||\r\n (sn.tagName === 'meta' &&\r\n (lowerIfExists(sn.attributes.name).match(/^msapplication-tile(image|color)$/) ||\r\n lowerIfExists(sn.attributes.name) === 'application-name' ||\r\n lowerIfExists(sn.attributes.rel) === 'icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'apple-touch-icon' ||\r\n lowerIfExists(sn.attributes.rel) === 'shortcut icon')))) {\r\n return true;\r\n }\r\n else if (sn.tagName === 'meta') {\r\n if (slimDOMOptions.headMetaDescKeywords &&\r\n lowerIfExists(sn.attributes.name).match(/^description|keywords$/)) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaSocial &&\r\n (lowerIfExists(sn.attributes.property).match(/^(og|twitter|fb):/) ||\r\n lowerIfExists(sn.attributes.name).match(/^(og|twitter):/) ||\r\n lowerIfExists(sn.attributes.name) === 'pinterest')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaRobots &&\r\n (lowerIfExists(sn.attributes.name) === 'robots' ||\r\n lowerIfExists(sn.attributes.name) === 'googlebot' ||\r\n lowerIfExists(sn.attributes.name) === 'bingbot')) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaHttpEquiv &&\r\n sn.attributes['http-equiv'] !== undefined) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaAuthorship &&\r\n (lowerIfExists(sn.attributes.name) === 'author' ||\r\n lowerIfExists(sn.attributes.name) === 'generator' ||\r\n lowerIfExists(sn.attributes.name) === 'framework' ||\r\n lowerIfExists(sn.attributes.name) === 'publisher' ||\r\n lowerIfExists(sn.attributes.name) === 'progid' ||\r\n lowerIfExists(sn.attributes.property).match(/^article:/) ||\r\n lowerIfExists(sn.attributes.property).match(/^product:/))) {\r\n return true;\r\n }\r\n else if (slimDOMOptions.headMetaVerification &&\r\n (lowerIfExists(sn.attributes.name) === 'google-site-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'yandex-verification' ||\r\n lowerIfExists(sn.attributes.name) === 'csrf-token' ||\r\n lowerIfExists(sn.attributes.name) === 'p:domain_verify' ||\r\n lowerIfExists(sn.attributes.name) === 'verify-v1' ||\r\n lowerIfExists(sn.attributes.name) === 'verification' ||\r\n lowerIfExists(sn.attributes.name) === 'shopify-checkout-api-token')) {\r\n return true;\r\n }\r\n }\r\n }\r\n return false;\r\n}\r\nfunction serializeNodeWithId(n, options) {\r\n var doc = options.doc, mirror = options.mirror, blockClass = options.blockClass, blockSelector = options.blockSelector, maskTextClass = options.maskTextClass, maskTextSelector = options.maskTextSelector, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.inlineStylesheet, inlineStylesheet = _b === void 0 ? true : _b, _c = options.maskInputOptions, maskInputOptions = _c === void 0 ? {} : _c, maskTextFn = options.maskTextFn, maskInputFn = options.maskInputFn, slimDOMOptions = options.slimDOMOptions, _d = options.dataURLOptions, dataURLOptions = _d === void 0 ? {} : _d, _e = options.inlineImages, inlineImages = _e === void 0 ? false : _e, _f = options.recordCanvas, recordCanvas = _f === void 0 ? false : _f, onSerialize = options.onSerialize, onIframeLoad = options.onIframeLoad, _g = options.iframeLoadTimeout, iframeLoadTimeout = _g === void 0 ? 5000 : _g, onStylesheetLoad = options.onStylesheetLoad, _h = options.stylesheetLoadTimeout, stylesheetLoadTimeout = _h === void 0 ? 5000 : _h, _j = options.keepIframeSrcFn, keepIframeSrcFn = _j === void 0 ? function () { return false; } : _j, _k = options.newlyAddedElement, newlyAddedElement = _k === void 0 ? false : _k;\r\n var _l = options.preserveWhiteSpace, preserveWhiteSpace = _l === void 0 ? true : _l;\r\n var _serializedNode = serializeNode(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: newlyAddedElement\r\n });\r\n if (!_serializedNode) {\r\n console.warn(n, 'not serialized');\r\n return null;\r\n }\r\n var id;\r\n if (mirror.hasNode(n)) {\r\n id = mirror.getId(n);\r\n }\r\n else if (slimDOMExcluded(_serializedNode, slimDOMOptions) ||\r\n (!preserveWhiteSpace &&\r\n _serializedNode.type === NodeType.Text &&\r\n !_serializedNode.isStyle &&\r\n !_serializedNode.textContent.replace(/^\\s+|\\s+$/gm, '').length)) {\r\n id = IGNORED_NODE;\r\n }\r\n else {\r\n id = genId();\r\n }\r\n var serializedNode = Object.assign(_serializedNode, { id: id });\r\n mirror.add(n, serializedNode);\r\n if (id === IGNORED_NODE) {\r\n return null;\r\n }\r\n if (onSerialize) {\r\n onSerialize(n);\r\n }\r\n var recordChild = !skipChild;\r\n if (serializedNode.type === NodeType.Element) {\r\n recordChild = recordChild && !serializedNode.needBlock;\r\n delete serializedNode.needBlock;\r\n var shadowRoot = n.shadowRoot;\r\n if (shadowRoot && isNativeShadowDom(shadowRoot))\r\n serializedNode.isShadowHost = true;\r\n }\r\n if ((serializedNode.type === NodeType.Document ||\r\n serializedNode.type === NodeType.Element) &&\r\n recordChild) {\r\n if (slimDOMOptions.headWhitespace &&\r\n serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'head') {\r\n preserveWhiteSpace = false;\r\n }\r\n var bypassOptions = {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: skipChild,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n };\r\n for (var _i = 0, _m = Array.from(n.childNodes); _i < _m.length; _i++) {\r\n var childN = _m[_i];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n if (isElement(n) && n.shadowRoot) {\r\n for (var _o = 0, _p = Array.from(n.shadowRoot.childNodes); _o < _p.length; _o++) {\r\n var childN = _p[_o];\r\n var serializedChildNode = serializeNodeWithId(childN, bypassOptions);\r\n if (serializedChildNode) {\r\n isNativeShadowDom(n.shadowRoot) &&\r\n (serializedChildNode.isShadow = true);\r\n serializedNode.childNodes.push(serializedChildNode);\r\n }\r\n }\r\n }\r\n }\r\n if (n.parentNode &&\r\n isShadowRoot(n.parentNode) &&\r\n isNativeShadowDom(n.parentNode)) {\r\n serializedNode.isShadow = true;\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'iframe') {\r\n onceIframeLoaded(n, function () {\r\n var iframeDoc = n.contentDocument;\r\n if (iframeDoc && onIframeLoad) {\r\n var serializedIframeNode = serializeNodeWithId(iframeDoc, {\r\n doc: iframeDoc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedIframeNode) {\r\n onIframeLoad(n, serializedIframeNode);\r\n }\r\n }\r\n }, iframeLoadTimeout);\r\n }\r\n if (serializedNode.type === NodeType.Element &&\r\n serializedNode.tagName === 'link' &&\r\n serializedNode.attributes.rel === 'stylesheet') {\r\n onceStylesheetLoaded(n, function () {\r\n if (onStylesheetLoad) {\r\n var serializedLinkNode = serializeNodeWithId(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn\r\n });\r\n if (serializedLinkNode) {\r\n onStylesheetLoad(n, serializedLinkNode);\r\n }\r\n }\r\n }, stylesheetLoadTimeout);\r\n }\r\n return serializedNode;\r\n}\r\nfunction snapshot(n, options) {\r\n var _a = options || {}, _b = _a.mirror, mirror = _b === void 0 ? new Mirror() : _b, _c = _a.blockClass, blockClass = _c === void 0 ? 'rr-block' : _c, _d = _a.blockSelector, blockSelector = _d === void 0 ? null : _d, _e = _a.maskTextClass, maskTextClass = _e === void 0 ? 'rr-mask' : _e, _f = _a.maskTextSelector, maskTextSelector = _f === void 0 ? null : _f, _g = _a.inlineStylesheet, inlineStylesheet = _g === void 0 ? true : _g, _h = _a.inlineImages, inlineImages = _h === void 0 ? false : _h, _j = _a.recordCanvas, recordCanvas = _j === void 0 ? false : _j, _k = _a.maskAllInputs, maskAllInputs = _k === void 0 ? false : _k, maskTextFn = _a.maskTextFn, maskInputFn = _a.maskInputFn, _l = _a.slimDOM, slimDOM = _l === void 0 ? false : _l, dataURLOptions = _a.dataURLOptions, preserveWhiteSpace = _a.preserveWhiteSpace, onSerialize = _a.onSerialize, onIframeLoad = _a.onIframeLoad, iframeLoadTimeout = _a.iframeLoadTimeout, onStylesheetLoad = _a.onStylesheetLoad, stylesheetLoadTimeout = _a.stylesheetLoadTimeout, _m = _a.keepIframeSrcFn, keepIframeSrcFn = _m === void 0 ? function () { return false; } : _m;\r\n var maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true\r\n }\r\n : maskAllInputs === false\r\n ? {\r\n password: true\r\n }\r\n : maskAllInputs;\r\n var slimDOMOptions = slimDOM === true || slimDOM === 'all'\r\n ?\r\n {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaDescKeywords: slimDOM === 'all',\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaAuthorship: true,\r\n headMetaVerification: true\r\n }\r\n : slimDOM === false\r\n ? {}\r\n : slimDOM;\r\n return serializeNodeWithId(n, {\r\n doc: n,\r\n mirror: mirror,\r\n blockClass: blockClass,\r\n blockSelector: blockSelector,\r\n maskTextClass: maskTextClass,\r\n maskTextSelector: maskTextSelector,\r\n skipChild: false,\r\n inlineStylesheet: inlineStylesheet,\r\n maskInputOptions: maskInputOptions,\r\n maskTextFn: maskTextFn,\r\n maskInputFn: maskInputFn,\r\n slimDOMOptions: slimDOMOptions,\r\n dataURLOptions: dataURLOptions,\r\n inlineImages: inlineImages,\r\n recordCanvas: recordCanvas,\r\n preserveWhiteSpace: preserveWhiteSpace,\r\n onSerialize: onSerialize,\r\n onIframeLoad: onIframeLoad,\r\n iframeLoadTimeout: iframeLoadTimeout,\r\n onStylesheetLoad: onStylesheetLoad,\r\n stylesheetLoadTimeout: stylesheetLoadTimeout,\r\n keepIframeSrcFn: keepIframeSrcFn,\r\n newlyAddedElement: false\r\n });\r\n}\r\n\nvar commentre = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\r\nfunction parse(css, options) {\r\n if (options === void 0) { options = {}; }\r\n var lineno = 1;\r\n var column = 1;\r\n function updatePosition(str) {\r\n var lines = str.match(/\\n/g);\r\n if (lines) {\r\n lineno += lines.length;\r\n }\r\n var i = str.lastIndexOf('\\n');\r\n column = i === -1 ? column + str.length : str.length - i;\r\n }\r\n function position() {\r\n var start = { line: lineno, column: column };\r\n return function (node) {\r\n node.position = new Position(start);\r\n whitespace();\r\n return node;\r\n };\r\n }\r\n var Position = (function () {\r\n function Position(start) {\r\n this.start = start;\r\n this.end = { line: lineno, column: column };\r\n this.source = options.source;\r\n }\r\n return Position;\r\n }());\r\n Position.prototype.content = css;\r\n var errorsList = [];\r\n function error(msg) {\r\n var err = new Error(\"\".concat(options.source || '', \":\").concat(lineno, \":\").concat(column, \": \").concat(msg));\r\n err.reason = msg;\r\n err.filename = options.source;\r\n err.line = lineno;\r\n err.column = column;\r\n err.source = css;\r\n if (options.silent) {\r\n errorsList.push(err);\r\n }\r\n else {\r\n throw err;\r\n }\r\n }\r\n function stylesheet() {\r\n var rulesList = rules();\r\n return {\r\n type: 'stylesheet',\r\n stylesheet: {\r\n source: options.source,\r\n rules: rulesList,\r\n parsingErrors: errorsList\r\n }\r\n };\r\n }\r\n function open() {\r\n return match(/^{\\s*/);\r\n }\r\n function close() {\r\n return match(/^}/);\r\n }\r\n function rules() {\r\n var node;\r\n var rules = [];\r\n whitespace();\r\n comments(rules);\r\n while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {\r\n if (node !== false) {\r\n rules.push(node);\r\n comments(rules);\r\n }\r\n }\r\n return rules;\r\n }\r\n function match(re) {\r\n var m = re.exec(css);\r\n if (!m) {\r\n return;\r\n }\r\n var str = m[0];\r\n updatePosition(str);\r\n css = css.slice(str.length);\r\n return m;\r\n }\r\n function whitespace() {\r\n match(/^\\s*/);\r\n }\r\n function comments(rules) {\r\n if (rules === void 0) { rules = []; }\r\n var c;\r\n while ((c = comment())) {\r\n if (c !== false) {\r\n rules.push(c);\r\n }\r\n c = comment();\r\n }\r\n return rules;\r\n }\r\n function comment() {\r\n var pos = position();\r\n if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {\r\n return;\r\n }\r\n var i = 2;\r\n while ('' !== css.charAt(i) &&\r\n ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {\r\n ++i;\r\n }\r\n i += 2;\r\n if ('' === css.charAt(i - 1)) {\r\n return error('End of comment missing');\r\n }\r\n var str = css.slice(2, i - 2);\r\n column += 2;\r\n updatePosition(str);\r\n css = css.slice(i);\r\n column += 2;\r\n return pos({\r\n type: 'comment',\r\n comment: str\r\n });\r\n }\r\n function selector() {\r\n var m = match(/^([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n return trim(m[0])\r\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\r\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function (m) {\r\n return m.replace(/,/g, '\\u200C');\r\n })\r\n .split(/\\s*(?![^(]*\\)),\\s*/)\r\n .map(function (s) {\r\n return s.replace(/\\u200C/g, ',');\r\n });\r\n }\r\n function declaration() {\r\n var pos = position();\r\n var propMatch = match(/^(\\*?[-#\\/\\*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\r\n if (!propMatch) {\r\n return;\r\n }\r\n var prop = trim(propMatch[0]);\r\n if (!match(/^:\\s*/)) {\r\n return error(\"property missing ':'\");\r\n }\r\n var val = match(/^((?:'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\([^\\)]*?\\)|[^};])+)/);\r\n var ret = pos({\r\n type: 'declaration',\r\n property: prop.replace(commentre, ''),\r\n value: val ? trim(val[0]).replace(commentre, '') : ''\r\n });\r\n match(/^[;\\s]*/);\r\n return ret;\r\n }\r\n function declarations() {\r\n var decls = [];\r\n if (!open()) {\r\n return error(\"missing '{'\");\r\n }\r\n comments(decls);\r\n var decl;\r\n while ((decl = declaration())) {\r\n if (decl !== false) {\r\n decls.push(decl);\r\n comments(decls);\r\n }\r\n decl = declaration();\r\n }\r\n if (!close()) {\r\n return error(\"missing '}'\");\r\n }\r\n return decls;\r\n }\r\n function keyframe() {\r\n var m;\r\n var vals = [];\r\n var pos = position();\r\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\r\n vals.push(m[1]);\r\n match(/^,\\s*/);\r\n }\r\n if (!vals.length) {\r\n return;\r\n }\r\n return pos({\r\n type: 'keyframe',\r\n values: vals,\r\n declarations: declarations()\r\n });\r\n }\r\n function atkeyframes() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?keyframes\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = m[1];\r\n m = match(/^([-\\w]+)\\s*/);\r\n if (!m) {\r\n return error('@keyframes missing name');\r\n }\r\n var name = m[1];\r\n if (!open()) {\r\n return error(\"@keyframes missing '{'\");\r\n }\r\n var frame;\r\n var frames = comments();\r\n while ((frame = keyframe())) {\r\n frames.push(frame);\r\n frames = frames.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@keyframes missing '}'\");\r\n }\r\n return pos({\r\n type: 'keyframes',\r\n name: name,\r\n vendor: vendor,\r\n keyframes: frames\r\n });\r\n }\r\n function atsupports() {\r\n var pos = position();\r\n var m = match(/^@supports *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var supports = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@supports missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@supports missing '}'\");\r\n }\r\n return pos({\r\n type: 'supports',\r\n supports: supports,\r\n rules: style\r\n });\r\n }\r\n function athost() {\r\n var pos = position();\r\n var m = match(/^@host\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@host missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@host missing '}'\");\r\n }\r\n return pos({\r\n type: 'host',\r\n rules: style\r\n });\r\n }\r\n function atmedia() {\r\n var pos = position();\r\n var m = match(/^@media *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var media = trim(m[1]);\r\n if (!open()) {\r\n return error(\"@media missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@media missing '}'\");\r\n }\r\n return pos({\r\n type: 'media',\r\n media: media,\r\n rules: style\r\n });\r\n }\r\n function atcustommedia() {\r\n var pos = position();\r\n var m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\r\n if (!m) {\r\n return;\r\n }\r\n return pos({\r\n type: 'custom-media',\r\n name: trim(m[1]),\r\n media: trim(m[2])\r\n });\r\n }\r\n function atpage() {\r\n var pos = position();\r\n var m = match(/^@page */);\r\n if (!m) {\r\n return;\r\n }\r\n var sel = selector() || [];\r\n if (!open()) {\r\n return error(\"@page missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@page missing '}'\");\r\n }\r\n return pos({\r\n type: 'page',\r\n selectors: sel,\r\n declarations: decls\r\n });\r\n }\r\n function atdocument() {\r\n var pos = position();\r\n var m = match(/^@([-\\w]+)?document *([^{]+)/);\r\n if (!m) {\r\n return;\r\n }\r\n var vendor = trim(m[1]);\r\n var doc = trim(m[2]);\r\n if (!open()) {\r\n return error(\"@document missing '{'\");\r\n }\r\n var style = comments().concat(rules());\r\n if (!close()) {\r\n return error(\"@document missing '}'\");\r\n }\r\n return pos({\r\n type: 'document',\r\n document: doc,\r\n vendor: vendor,\r\n rules: style\r\n });\r\n }\r\n function atfontface() {\r\n var pos = position();\r\n var m = match(/^@font-face\\s*/);\r\n if (!m) {\r\n return;\r\n }\r\n if (!open()) {\r\n return error(\"@font-face missing '{'\");\r\n }\r\n var decls = comments();\r\n var decl;\r\n while ((decl = declaration())) {\r\n decls.push(decl);\r\n decls = decls.concat(comments());\r\n }\r\n if (!close()) {\r\n return error(\"@font-face missing '}'\");\r\n }\r\n return pos({\r\n type: 'font-face',\r\n declarations: decls\r\n });\r\n }\r\n var atimport = _compileAtrule('import');\r\n var atcharset = _compileAtrule('charset');\r\n var atnamespace = _compileAtrule('namespace');\r\n function _compileAtrule(name) {\r\n var re = new RegExp('^@' + name + '\\\\s*([^;]+);');\r\n return function () {\r\n var pos = position();\r\n var m = match(re);\r\n if (!m) {\r\n return;\r\n }\r\n var ret = { type: name };\r\n ret[name] = m[1].trim();\r\n return pos(ret);\r\n };\r\n }\r\n function atrule() {\r\n if (css[0] !== '@') {\r\n return;\r\n }\r\n return (atkeyframes() ||\r\n atmedia() ||\r\n atcustommedia() ||\r\n atsupports() ||\r\n atimport() ||\r\n atcharset() ||\r\n atnamespace() ||\r\n atdocument() ||\r\n atpage() ||\r\n athost() ||\r\n atfontface());\r\n }\r\n function rule() {\r\n var pos = position();\r\n var sel = selector();\r\n if (!sel) {\r\n return error('selector missing');\r\n }\r\n comments();\r\n return pos({\r\n type: 'rule',\r\n selectors: sel,\r\n declarations: declarations()\r\n });\r\n }\r\n return addParent(stylesheet());\r\n}\r\nfunction trim(str) {\r\n return str ? str.replace(/^\\s+|\\s+$/g, '') : '';\r\n}\r\nfunction addParent(obj, parent) {\r\n var isNode = obj && typeof obj.type === 'string';\r\n var childParent = isNode ? obj : parent;\r\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\r\n var k = _a[_i];\r\n var value = obj[k];\r\n if (Array.isArray(value)) {\r\n value.forEach(function (v) {\r\n addParent(v, childParent);\r\n });\r\n }\r\n else if (value && typeof value === 'object') {\r\n addParent(value, childParent);\r\n }\r\n }\r\n if (isNode) {\r\n Object.defineProperty(obj, 'parent', {\r\n configurable: true,\r\n writable: true,\r\n enumerable: false,\r\n value: parent || null\r\n });\r\n }\r\n return obj;\r\n}\n\nvar tagMap = {\r\n script: 'noscript',\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient'\r\n};\r\nfunction getTagName(n) {\r\n var tagName = tagMap[n.tagName] ? tagMap[n.tagName] : n.tagName;\r\n if (tagName === 'link' && n.attributes._cssText) {\r\n tagName = 'style';\r\n }\r\n return tagName;\r\n}\r\nfunction escapeRegExp(str) {\r\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\r\n}\r\nvar HOVER_SELECTOR = /([^\\\\]):hover/;\r\nvar HOVER_SELECTOR_GLOBAL = new RegExp(HOVER_SELECTOR.source, 'g');\r\nfunction addHoverClass(cssText, cache) {\r\n var cachedStyle = cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.get(cssText);\r\n if (cachedStyle)\r\n return cachedStyle;\r\n var ast = parse(cssText, {\r\n silent: true\r\n });\r\n if (!ast.stylesheet) {\r\n return cssText;\r\n }\r\n var selectors = [];\r\n ast.stylesheet.rules.forEach(function (rule) {\r\n if ('selectors' in rule) {\r\n (rule.selectors || []).forEach(function (selector) {\r\n if (HOVER_SELECTOR.test(selector)) {\r\n selectors.push(selector);\r\n }\r\n });\r\n }\r\n });\r\n if (selectors.length === 0) {\r\n return cssText;\r\n }\r\n var selectorMatcher = new RegExp(selectors\r\n .filter(function (selector, index) { return selectors.indexOf(selector) === index; })\r\n .sort(function (a, b) { return b.length - a.length; })\r\n .map(function (selector) {\r\n return escapeRegExp(selector);\r\n })\r\n .join('|'), 'g');\r\n var result = cssText.replace(selectorMatcher, function (selector) {\r\n var newSelector = selector.replace(HOVER_SELECTOR_GLOBAL, '$1.\\\\:hover');\r\n return \"\".concat(selector, \", \").concat(newSelector);\r\n });\r\n cache === null || cache === void 0 ? void 0 : cache.stylesWithHoverClass.set(cssText, result);\r\n return result;\r\n}\r\nfunction createCache() {\r\n var stylesWithHoverClass = new Map();\r\n return {\r\n stylesWithHoverClass: stylesWithHoverClass\r\n };\r\n}\r\nfunction buildNode(n, options) {\r\n var doc = options.doc, hackCss = options.hackCss, cache = options.cache;\r\n switch (n.type) {\r\n case NodeType.Document:\r\n return doc.implementation.createDocument(null, '', null);\r\n case NodeType.DocumentType:\r\n return doc.implementation.createDocumentType(n.name || 'html', n.publicId, n.systemId);\r\n case NodeType.Element: {\r\n var tagName = getTagName(n);\r\n var node_1;\r\n if (n.isSVG) {\r\n node_1 = doc.createElementNS('http://www.w3.org/2000/svg', tagName);\r\n }\r\n else {\r\n node_1 = doc.createElement(tagName);\r\n }\r\n var specialAttributes = {};\r\n for (var name_1 in n.attributes) {\r\n if (!Object.prototype.hasOwnProperty.call(n.attributes, name_1)) {\r\n continue;\r\n }\r\n var value = n.attributes[name_1];\r\n if (tagName === 'option' &&\r\n name_1 === 'selected' &&\r\n value === false) {\r\n continue;\r\n }\r\n if (value === true)\r\n value = '';\r\n if (name_1.startsWith('rr_')) {\r\n specialAttributes[name_1] = value;\r\n continue;\r\n }\r\n var isTextarea = tagName === 'textarea' && name_1 === 'value';\r\n var isRemoteOrDynamicCss = tagName === 'style' && name_1 === '_cssText';\r\n if (isRemoteOrDynamicCss && hackCss && typeof value === 'string') {\r\n value = addHoverClass(value, cache);\r\n }\r\n if ((isTextarea || isRemoteOrDynamicCss) && typeof value === 'string') {\r\n var child = doc.createTextNode(value);\r\n for (var _i = 0, _a = Array.from(node_1.childNodes); _i < _a.length; _i++) {\r\n var c = _a[_i];\r\n if (c.nodeType === node_1.TEXT_NODE) {\r\n node_1.removeChild(c);\r\n }\r\n }\r\n node_1.appendChild(child);\r\n continue;\r\n }\r\n try {\r\n if (n.isSVG && name_1 === 'xlink:href') {\r\n node_1.setAttributeNS('http://www.w3.org/1999/xlink', name_1, value.toString());\r\n }\r\n else if (name_1 === 'onload' ||\r\n name_1 === 'onclick' ||\r\n name_1.substring(0, 7) === 'onmouse') {\r\n node_1.setAttribute('_' + name_1, value.toString());\r\n }\r\n else if (tagName === 'meta' &&\r\n n.attributes['http-equiv'] === 'Content-Security-Policy' &&\r\n name_1 === 'content') {\r\n node_1.setAttribute('csp-content', value.toString());\r\n continue;\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'preload' &&\r\n n.attributes.as === 'script') {\r\n }\r\n else if (tagName === 'link' &&\r\n n.attributes.rel === 'prefetch' &&\r\n typeof n.attributes.href === 'string' &&\r\n n.attributes.href.endsWith('.js')) {\r\n }\r\n else if (tagName === 'img' &&\r\n n.attributes.srcset &&\r\n n.attributes.rr_dataURL) {\r\n node_1.setAttribute('rrweb-original-srcset', n.attributes.srcset);\r\n }\r\n else {\r\n node_1.setAttribute(name_1, value.toString());\r\n }\r\n }\r\n catch (error) {\r\n }\r\n }\r\n var _loop_1 = function (name_2) {\r\n var value = specialAttributes[name_2];\r\n if (tagName === 'canvas' && name_2 === 'rr_dataURL') {\r\n var image_1 = document.createElement('img');\r\n image_1.onload = function () {\r\n var ctx = node_1.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image_1, 0, 0, image_1.width, image_1.height);\r\n }\r\n };\r\n image_1.src = value.toString();\r\n if (node_1.RRNodeType)\r\n node_1.rr_dataURL = value.toString();\r\n }\r\n else if (tagName === 'img' && name_2 === 'rr_dataURL') {\r\n var image = node_1;\r\n if (!image.currentSrc.startsWith('data:')) {\r\n image.setAttribute('rrweb-original-src', n.attributes.src);\r\n image.src = value.toString();\r\n }\r\n }\r\n if (name_2 === 'rr_width') {\r\n node_1.style.width = value.toString();\r\n }\r\n else if (name_2 === 'rr_height') {\r\n node_1.style.height = value.toString();\r\n }\r\n else if (name_2 === 'rr_mediaCurrentTime' &&\r\n typeof value === 'number') {\r\n node_1.currentTime = value;\r\n }\r\n else if (name_2 === 'rr_mediaState') {\r\n switch (value) {\r\n case 'played':\r\n node_1\r\n .play()[\"catch\"](function (e) { return console.warn('media playback error', e); });\r\n break;\r\n case 'paused':\r\n node_1.pause();\r\n break;\r\n }\r\n }\r\n };\r\n for (var name_2 in specialAttributes) {\r\n _loop_1(name_2);\r\n }\r\n if (n.isShadowHost) {\r\n if (!node_1.shadowRoot) {\r\n node_1.attachShadow({ mode: 'open' });\r\n }\r\n else {\r\n while (node_1.shadowRoot.firstChild) {\r\n node_1.shadowRoot.removeChild(node_1.shadowRoot.firstChild);\r\n }\r\n }\r\n }\r\n return node_1;\r\n }\r\n case NodeType.Text:\r\n return doc.createTextNode(n.isStyle && hackCss\r\n ? addHoverClass(n.textContent, cache)\r\n : n.textContent);\r\n case NodeType.CDATA:\r\n return doc.createCDATASection(n.textContent);\r\n case NodeType.Comment:\r\n return doc.createComment(n.textContent);\r\n default:\r\n return null;\r\n }\r\n}\r\nfunction buildNodeWithSN(n, options) {\r\n var doc = options.doc, mirror = options.mirror, _a = options.skipChild, skipChild = _a === void 0 ? false : _a, _b = options.hackCss, hackCss = _b === void 0 ? true : _b, afterAppend = options.afterAppend, cache = options.cache;\r\n var node = buildNode(n, { doc: doc, hackCss: hackCss, cache: cache });\r\n if (!node) {\r\n return null;\r\n }\r\n if (n.rootId && mirror.getNode(n.rootId) !== doc) {\r\n mirror.replace(n.rootId, doc);\r\n }\r\n if (n.type === NodeType.Document) {\r\n doc.close();\r\n doc.open();\r\n if (n.compatMode === 'BackCompat' &&\r\n n.childNodes &&\r\n n.childNodes[0].type !== NodeType.DocumentType) {\r\n if (n.childNodes[0].type === NodeType.Element &&\r\n 'xmlns' in n.childNodes[0].attributes &&\r\n n.childNodes[0].attributes.xmlns === 'http://www.w3.org/1999/xhtml') {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">');\r\n }\r\n else {\r\n doc.write('<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">');\r\n }\r\n }\r\n node = doc;\r\n }\r\n mirror.add(node, n);\r\n if ((n.type === NodeType.Document || n.type === NodeType.Element) &&\r\n !skipChild) {\r\n for (var _i = 0, _c = n.childNodes; _i < _c.length; _i++) {\r\n var childN = _c[_i];\r\n var childNode = buildNodeWithSN(childN, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n if (!childNode) {\r\n console.warn('Failed to rebuild', childN);\r\n continue;\r\n }\r\n if (childN.isShadow && isElement(node) && node.shadowRoot) {\r\n node.shadowRoot.appendChild(childNode);\r\n }\r\n else {\r\n node.appendChild(childNode);\r\n }\r\n if (afterAppend) {\r\n afterAppend(childNode, childN.id);\r\n }\r\n }\r\n }\r\n return node;\r\n}\r\nfunction visit(mirror, onVisit) {\r\n function walk(node) {\r\n onVisit(node);\r\n }\r\n for (var _i = 0, _a = mirror.getIds(); _i < _a.length; _i++) {\r\n var id = _a[_i];\r\n if (mirror.has(id)) {\r\n walk(mirror.getNode(id));\r\n }\r\n }\r\n}\r\nfunction handleScroll(node, mirror) {\r\n var n = mirror.getMeta(node);\r\n if ((n === null || n === void 0 ? void 0 : n.type) !== NodeType.Element) {\r\n return;\r\n }\r\n var el = node;\r\n for (var name_3 in n.attributes) {\r\n if (!(Object.prototype.hasOwnProperty.call(n.attributes, name_3) &&\r\n name_3.startsWith('rr_'))) {\r\n continue;\r\n }\r\n var value = n.attributes[name_3];\r\n if (name_3 === 'rr_scrollLeft') {\r\n el.scrollLeft = value;\r\n }\r\n if (name_3 === 'rr_scrollTop') {\r\n el.scrollTop = value;\r\n }\r\n }\r\n}\r\nfunction rebuild(n, options) {\r\n var doc = options.doc, onVisit = options.onVisit, _a = options.hackCss, hackCss = _a === void 0 ? true : _a, afterAppend = options.afterAppend, cache = options.cache, _b = options.mirror, mirror = _b === void 0 ? new Mirror() : _b;\r\n var node = buildNodeWithSN(n, {\r\n doc: doc,\r\n mirror: mirror,\r\n skipChild: false,\r\n hackCss: hackCss,\r\n afterAppend: afterAppend,\r\n cache: cache\r\n });\r\n visit(mirror, function (visitedNode) {\r\n if (onVisit) {\r\n onVisit(visitedNode);\r\n }\r\n handleScroll(visitedNode, mirror);\r\n });\r\n return node;\r\n}\n\nexport { IGNORED_NODE, Mirror, NodeType, addHoverClass, buildNodeWithSN, classMatchesRegex, createCache, createMirror, genId, getCssRuleString, getCssRulesString, is2DCanvasBlank, isCSSImportRule, isElement, isNativeShadowDom, isShadowRoot, maskInputValue, needMaskingText, rebuild, serializeNodeWithId, snapshot, transformAttribute };\n","import { classMatchesRegex, IGNORED_NODE, isShadowRoot } from '../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nfunction on(type, fn, target = document) {\r\n const options = { capture: true, passive: true };\r\n target.addEventListener(type, fn, options);\r\n return () => target.removeEventListener(type, fn, options);\r\n}\r\nconst DEPARTED_MIRROR_ACCESS_WARNING = 'Please stop import mirror directly. Instead of that,' +\r\n '\\r\\n' +\r\n 'now you can use replayer.getMirror() to access the mirror instance of a replayer,' +\r\n '\\r\\n' +\r\n 'or you can use record.mirror to access the mirror instance during recording.';\r\nlet _mirror = {\r\n map: {},\r\n getId() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return -1;\r\n },\r\n getNode() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return null;\r\n },\r\n removeNodeFromMap() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n has() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n return false;\r\n },\r\n reset() {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n },\r\n};\r\nif (typeof window !== 'undefined' && window.Proxy && window.Reflect) {\r\n _mirror = new Proxy(_mirror, {\r\n get(target, prop, receiver) {\r\n if (prop === 'map') {\r\n console.error(DEPARTED_MIRROR_ACCESS_WARNING);\r\n }\r\n return Reflect.get(target, prop, receiver);\r\n },\r\n });\r\n}\r\nfunction throttle(func, wait, options = {}) {\r\n let timeout = null;\r\n let previous = 0;\r\n return function (...args) {\r\n const now = Date.now();\r\n if (!previous && options.leading === false) {\r\n previous = now;\r\n }\r\n const remaining = wait - (now - previous);\r\n const context = this;\r\n if (remaining <= 0 || remaining > wait) {\r\n if (timeout) {\r\n clearTimeout(timeout);\r\n timeout = null;\r\n }\r\n previous = now;\r\n func.apply(context, args);\r\n }\r\n else if (!timeout && options.trailing !== false) {\r\n timeout = setTimeout(() => {\r\n previous = options.leading === false ? 0 : Date.now();\r\n timeout = null;\r\n func.apply(context, args);\r\n }, remaining);\r\n }\r\n };\r\n}\r\nfunction hookSetter(target, key, d, isRevoked, win = window) {\r\n const original = win.Object.getOwnPropertyDescriptor(target, key);\r\n win.Object.defineProperty(target, key, isRevoked\r\n ? d\r\n : {\r\n set(value) {\r\n setTimeout(() => {\r\n d.set.call(this, value);\r\n }, 0);\r\n if (original && original.set) {\r\n original.set.call(this, value);\r\n }\r\n },\r\n });\r\n return () => hookSetter(target, key, original || {}, true);\r\n}\r\nfunction patch(source, name, replacement) {\r\n try {\r\n if (!(name in source)) {\r\n return () => {\r\n };\r\n }\r\n const original = source[name];\r\n const wrapped = replacement(original);\r\n if (typeof wrapped === 'function') {\r\n wrapped.prototype = wrapped.prototype || {};\r\n Object.defineProperties(wrapped, {\r\n __rrweb_original__: {\r\n enumerable: false,\r\n value: original,\r\n },\r\n });\r\n }\r\n source[name] = wrapped;\r\n return () => {\r\n source[name] = original;\r\n };\r\n }\r\n catch (_a) {\r\n return () => {\r\n };\r\n }\r\n}\r\nfunction getWindowHeight() {\r\n return (window.innerHeight ||\r\n (document.documentElement && document.documentElement.clientHeight) ||\r\n (document.body && document.body.clientHeight));\r\n}\r\nfunction getWindowWidth() {\r\n return (window.innerWidth ||\r\n (document.documentElement && document.documentElement.clientWidth) ||\r\n (document.body && document.body.clientWidth));\r\n}\r\nfunction isBlocked(node, blockClass, blockSelector, checkAncestors) {\r\n if (!node) {\r\n return false;\r\n }\r\n const el = node.nodeType === node.ELEMENT_NODE\r\n ? node\r\n : node.parentElement;\r\n if (!el)\r\n return false;\r\n if (typeof blockClass === 'string') {\r\n if (el.classList.contains(blockClass))\r\n return true;\r\n if (checkAncestors && el.closest('.' + blockClass) !== null)\r\n return true;\r\n }\r\n else {\r\n if (classMatchesRegex(el, blockClass, checkAncestors))\r\n return true;\r\n }\r\n if (blockSelector) {\r\n if (node.matches(blockSelector))\r\n return true;\r\n if (checkAncestors && el.closest(blockSelector) !== null)\r\n return true;\r\n }\r\n return false;\r\n}\r\nfunction isSerialized(n, mirror) {\r\n return mirror.getId(n) !== -1;\r\n}\r\nfunction isIgnored(n, mirror) {\r\n return mirror.getId(n) === IGNORED_NODE;\r\n}\r\nfunction isAncestorRemoved(target, mirror) {\r\n if (isShadowRoot(target)) {\r\n return false;\r\n }\r\n const id = mirror.getId(target);\r\n if (!mirror.has(id)) {\r\n return true;\r\n }\r\n if (target.parentNode &&\r\n target.parentNode.nodeType === target.DOCUMENT_NODE) {\r\n return false;\r\n }\r\n if (!target.parentNode) {\r\n return true;\r\n }\r\n return isAncestorRemoved(target.parentNode, mirror);\r\n}\r\nfunction isTouchEvent(event) {\r\n return Boolean(event.changedTouches);\r\n}\r\nfunction polyfill(win = window) {\r\n if ('NodeList' in win && !win.NodeList.prototype.forEach) {\r\n win.NodeList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if ('DOMTokenList' in win && !win.DOMTokenList.prototype.forEach) {\r\n win.DOMTokenList.prototype.forEach = Array.prototype\r\n .forEach;\r\n }\r\n if (!Node.prototype.contains) {\r\n Node.prototype.contains = (...args) => {\r\n let node = args[0];\r\n if (!(0 in args)) {\r\n throw new TypeError('1 argument is required');\r\n }\r\n do {\r\n if (this === node) {\r\n return true;\r\n }\r\n } while ((node = node && node.parentNode));\r\n return false;\r\n };\r\n }\r\n}\r\nfunction queueToResolveTrees(queue) {\r\n const queueNodeMap = {};\r\n const putIntoMap = (m, parent) => {\r\n const nodeInTree = {\r\n value: m,\r\n parent,\r\n children: [],\r\n };\r\n queueNodeMap[m.node.id] = nodeInTree;\r\n return nodeInTree;\r\n };\r\n const queueNodeTrees = [];\r\n for (const mutation of queue) {\r\n const { nextId, parentId } = mutation;\r\n if (nextId && nextId in queueNodeMap) {\r\n const nextInTree = queueNodeMap[nextId];\r\n if (nextInTree.parent) {\r\n const idx = nextInTree.parent.children.indexOf(nextInTree);\r\n nextInTree.parent.children.splice(idx, 0, putIntoMap(mutation, nextInTree.parent));\r\n }\r\n else {\r\n const idx = queueNodeTrees.indexOf(nextInTree);\r\n queueNodeTrees.splice(idx, 0, putIntoMap(mutation, null));\r\n }\r\n continue;\r\n }\r\n if (parentId in queueNodeMap) {\r\n const parentInTree = queueNodeMap[parentId];\r\n parentInTree.children.push(putIntoMap(mutation, parentInTree));\r\n continue;\r\n }\r\n queueNodeTrees.push(putIntoMap(mutation, null));\r\n }\r\n return queueNodeTrees;\r\n}\r\nfunction iterateResolveTree(tree, cb) {\r\n cb(tree.value);\r\n for (let i = tree.children.length - 1; i >= 0; i--) {\r\n iterateResolveTree(tree.children[i], cb);\r\n }\r\n}\r\nfunction isSerializedIframe(n, mirror) {\r\n return Boolean(n.nodeName === 'IFRAME' && mirror.getMeta(n));\r\n}\r\nfunction isSerializedStylesheet(n, mirror) {\r\n return Boolean(n.nodeName === 'LINK' &&\r\n n.nodeType === n.ELEMENT_NODE &&\r\n n.getAttribute &&\r\n n.getAttribute('rel') === 'stylesheet' &&\r\n mirror.getMeta(n));\r\n}\r\nfunction getBaseDimension(node, rootIframe) {\r\n var _a, _b;\r\n const frameElement = (_b = (_a = node.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) === null || _b === void 0 ? void 0 : _b.frameElement;\r\n if (!frameElement || frameElement === rootIframe) {\r\n return {\r\n x: 0,\r\n y: 0,\r\n relativeScale: 1,\r\n absoluteScale: 1,\r\n };\r\n }\r\n const frameDimension = frameElement.getBoundingClientRect();\r\n const frameBaseDimension = getBaseDimension(frameElement, rootIframe);\r\n const relativeScale = frameDimension.height / frameElement.clientHeight;\r\n return {\r\n x: frameDimension.x * frameBaseDimension.relativeScale +\r\n frameBaseDimension.x,\r\n y: frameDimension.y * frameBaseDimension.relativeScale +\r\n frameBaseDimension.y,\r\n relativeScale,\r\n absoluteScale: frameBaseDimension.absoluteScale * relativeScale,\r\n };\r\n}\r\nfunction hasShadowRoot(n) {\r\n return Boolean(n === null || n === void 0 ? void 0 : n.shadowRoot);\r\n}\r\nfunction getNestedRule(rules, position) {\r\n const rule = rules[position[0]];\r\n if (position.length === 1) {\r\n return rule;\r\n }\r\n else {\r\n return getNestedRule(rule.cssRules[position[1]].cssRules, position.slice(2));\r\n }\r\n}\r\nfunction getPositionsAndIndex(nestedIndex) {\r\n const positions = [...nestedIndex];\r\n const index = positions.pop();\r\n return { positions, index };\r\n}\r\nfunction uniqueTextMutations(mutations) {\r\n const idSet = new Set();\r\n const uniqueMutations = [];\r\n for (let i = mutations.length; i--;) {\r\n const mutation = mutations[i];\r\n if (!idSet.has(mutation.id)) {\r\n uniqueMutations.push(mutation);\r\n idSet.add(mutation.id);\r\n }\r\n }\r\n return uniqueMutations;\r\n}\r\nclass StyleSheetMirror {\r\n constructor() {\r\n this.id = 1;\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n }\r\n getId(stylesheet) {\r\n var _a;\r\n return (_a = this.styleIDMap.get(stylesheet)) !== null && _a !== void 0 ? _a : -1;\r\n }\r\n has(stylesheet) {\r\n return this.styleIDMap.has(stylesheet);\r\n }\r\n add(stylesheet, id) {\r\n if (this.has(stylesheet))\r\n return this.getId(stylesheet);\r\n let newId;\r\n if (id === undefined) {\r\n newId = this.id++;\r\n }\r\n else\r\n newId = id;\r\n this.styleIDMap.set(stylesheet, newId);\r\n this.idStyleMap.set(newId, stylesheet);\r\n return newId;\r\n }\r\n getStyle(id) {\r\n return this.idStyleMap.get(id) || null;\r\n }\r\n reset() {\r\n this.styleIDMap = new WeakMap();\r\n this.idStyleMap = new Map();\r\n this.id = 1;\r\n }\r\n generateId() {\r\n return this.id++;\r\n }\r\n}\n\nexport { StyleSheetMirror, _mirror, getBaseDimension, getNestedRule, getPositionsAndIndex, getWindowHeight, getWindowWidth, hasShadowRoot, hookSetter, isAncestorRemoved, isBlocked, isIgnored, isSerialized, isSerializedIframe, isSerializedStylesheet, isTouchEvent, iterateResolveTree, on, patch, polyfill, queueToResolveTrees, throttle, uniqueTextMutations };\n","var EventType = /* @__PURE__ */ ((EventType2) => {\n EventType2[EventType2[\"DomContentLoaded\"] = 0] = \"DomContentLoaded\";\n EventType2[EventType2[\"Load\"] = 1] = \"Load\";\n EventType2[EventType2[\"FullSnapshot\"] = 2] = \"FullSnapshot\";\n EventType2[EventType2[\"IncrementalSnapshot\"] = 3] = \"IncrementalSnapshot\";\n EventType2[EventType2[\"Meta\"] = 4] = \"Meta\";\n EventType2[EventType2[\"Custom\"] = 5] = \"Custom\";\n EventType2[EventType2[\"Plugin\"] = 6] = \"Plugin\";\n return EventType2;\n})(EventType || {});\nvar IncrementalSource = /* @__PURE__ */ ((IncrementalSource2) => {\n IncrementalSource2[IncrementalSource2[\"Mutation\"] = 0] = \"Mutation\";\n IncrementalSource2[IncrementalSource2[\"MouseMove\"] = 1] = \"MouseMove\";\n IncrementalSource2[IncrementalSource2[\"MouseInteraction\"] = 2] = \"MouseInteraction\";\n IncrementalSource2[IncrementalSource2[\"Scroll\"] = 3] = \"Scroll\";\n IncrementalSource2[IncrementalSource2[\"ViewportResize\"] = 4] = \"ViewportResize\";\n IncrementalSource2[IncrementalSource2[\"Input\"] = 5] = \"Input\";\n IncrementalSource2[IncrementalSource2[\"TouchMove\"] = 6] = \"TouchMove\";\n IncrementalSource2[IncrementalSource2[\"MediaInteraction\"] = 7] = \"MediaInteraction\";\n IncrementalSource2[IncrementalSource2[\"StyleSheetRule\"] = 8] = \"StyleSheetRule\";\n IncrementalSource2[IncrementalSource2[\"CanvasMutation\"] = 9] = \"CanvasMutation\";\n IncrementalSource2[IncrementalSource2[\"Font\"] = 10] = \"Font\";\n IncrementalSource2[IncrementalSource2[\"Log\"] = 11] = \"Log\";\n IncrementalSource2[IncrementalSource2[\"Drag\"] = 12] = \"Drag\";\n IncrementalSource2[IncrementalSource2[\"StyleDeclaration\"] = 13] = \"StyleDeclaration\";\n IncrementalSource2[IncrementalSource2[\"Selection\"] = 14] = \"Selection\";\n IncrementalSource2[IncrementalSource2[\"AdoptedStyleSheet\"] = 15] = \"AdoptedStyleSheet\";\n return IncrementalSource2;\n})(IncrementalSource || {});\nvar MouseInteractions = /* @__PURE__ */ ((MouseInteractions2) => {\n MouseInteractions2[MouseInteractions2[\"MouseUp\"] = 0] = \"MouseUp\";\n MouseInteractions2[MouseInteractions2[\"MouseDown\"] = 1] = \"MouseDown\";\n MouseInteractions2[MouseInteractions2[\"Click\"] = 2] = \"Click\";\n MouseInteractions2[MouseInteractions2[\"ContextMenu\"] = 3] = \"ContextMenu\";\n MouseInteractions2[MouseInteractions2[\"DblClick\"] = 4] = \"DblClick\";\n MouseInteractions2[MouseInteractions2[\"Focus\"] = 5] = \"Focus\";\n MouseInteractions2[MouseInteractions2[\"Blur\"] = 6] = \"Blur\";\n MouseInteractions2[MouseInteractions2[\"TouchStart\"] = 7] = \"TouchStart\";\n MouseInteractions2[MouseInteractions2[\"TouchMove_Departed\"] = 8] = \"TouchMove_Departed\";\n MouseInteractions2[MouseInteractions2[\"TouchEnd\"] = 9] = \"TouchEnd\";\n MouseInteractions2[MouseInteractions2[\"TouchCancel\"] = 10] = \"TouchCancel\";\n return MouseInteractions2;\n})(MouseInteractions || {});\nvar CanvasContext = /* @__PURE__ */ ((CanvasContext2) => {\n CanvasContext2[CanvasContext2[\"2D\"] = 0] = \"2D\";\n CanvasContext2[CanvasContext2[\"WebGL\"] = 1] = \"WebGL\";\n CanvasContext2[CanvasContext2[\"WebGL2\"] = 2] = \"WebGL2\";\n return CanvasContext2;\n})(CanvasContext || {});\nvar ReplayerEvents = /* @__PURE__ */ ((ReplayerEvents2) => {\n ReplayerEvents2[\"Start\"] = \"start\";\n ReplayerEvents2[\"Pause\"] = \"pause\";\n ReplayerEvents2[\"Resume\"] = \"resume\";\n ReplayerEvents2[\"Resize\"] = \"resize\";\n ReplayerEvents2[\"Finish\"] = \"finish\";\n ReplayerEvents2[\"FullsnapshotRebuilded\"] = \"fullsnapshot-rebuilded\";\n ReplayerEvents2[\"LoadStylesheetStart\"] = \"load-stylesheet-start\";\n ReplayerEvents2[\"LoadStylesheetEnd\"] = \"load-stylesheet-end\";\n ReplayerEvents2[\"SkipStart\"] = \"skip-start\";\n ReplayerEvents2[\"SkipEnd\"] = \"skip-end\";\n ReplayerEvents2[\"MouseInteraction\"] = \"mouse-interaction\";\n ReplayerEvents2[\"EventCast\"] = \"event-cast\";\n ReplayerEvents2[\"CustomEvent\"] = \"custom-event\";\n ReplayerEvents2[\"Flush\"] = \"flush\";\n ReplayerEvents2[\"StateChange\"] = \"state-change\";\n ReplayerEvents2[\"PlayBack\"] = \"play-back\";\n ReplayerEvents2[\"Destroy\"] = \"destroy\";\n return ReplayerEvents2;\n})(ReplayerEvents || {});\n\nexport { CanvasContext, EventType, IncrementalSource, MouseInteractions, ReplayerEvents };\n","import { isShadowRoot, isNativeShadowDom, maskInputValue, transformAttribute, needMaskingText, IGNORED_NODE, serializeNodeWithId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { isIgnored, isBlocked, isSerialized, isAncestorRemoved, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\n\nfunction isNodeInLinkedList(n) {\r\n return '__ln' in n;\r\n}\r\nclass DoubleLinkedList {\r\n constructor() {\r\n this.length = 0;\r\n this.head = null;\r\n }\r\n get(position) {\r\n if (position >= this.length) {\r\n throw new Error('Position outside of list range');\r\n }\r\n let current = this.head;\r\n for (let index = 0; index < position; index++) {\r\n current = (current === null || current === void 0 ? void 0 : current.next) || null;\r\n }\r\n return current;\r\n }\r\n addNode(n) {\r\n const node = {\r\n value: n,\r\n previous: null,\r\n next: null,\r\n };\r\n n.__ln = node;\r\n if (n.previousSibling && isNodeInLinkedList(n.previousSibling)) {\r\n const current = n.previousSibling.__ln.next;\r\n node.next = current;\r\n node.previous = n.previousSibling.__ln;\r\n n.previousSibling.__ln.next = node;\r\n if (current) {\r\n current.previous = node;\r\n }\r\n }\r\n else if (n.nextSibling &&\r\n isNodeInLinkedList(n.nextSibling) &&\r\n n.nextSibling.__ln.previous) {\r\n const current = n.nextSibling.__ln.previous;\r\n node.previous = current;\r\n node.next = n.nextSibling.__ln;\r\n n.nextSibling.__ln.previous = node;\r\n if (current) {\r\n current.next = node;\r\n }\r\n }\r\n else {\r\n if (this.head) {\r\n this.head.previous = node;\r\n }\r\n node.next = this.head;\r\n this.head = node;\r\n }\r\n this.length++;\r\n }\r\n removeNode(n) {\r\n const current = n.__ln;\r\n if (!this.head) {\r\n return;\r\n }\r\n if (!current.previous) {\r\n this.head = current.next;\r\n if (this.head) {\r\n this.head.previous = null;\r\n }\r\n }\r\n else {\r\n current.previous.next = current.next;\r\n if (current.next) {\r\n current.next.previous = current.previous;\r\n }\r\n }\r\n if (n.__ln) {\r\n delete n.__ln;\r\n }\r\n this.length--;\r\n }\r\n}\r\nconst moveKey = (id, parentId) => `${id}@${parentId}`;\r\nclass MutationBuffer {\r\n constructor() {\r\n this.frozen = false;\r\n this.locked = false;\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.mapRemoves = [];\r\n this.movedMap = {};\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.processMutations = (mutations) => {\r\n mutations.forEach(this.processMutation);\r\n this.emit();\r\n };\r\n this.emit = () => {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const adds = [];\r\n const addList = new DoubleLinkedList();\r\n const getNextId = (n) => {\r\n let ns = n;\r\n let nextId = IGNORED_NODE;\r\n while (nextId === IGNORED_NODE) {\r\n ns = ns && ns.nextSibling;\r\n nextId = ns && this.mirror.getId(ns);\r\n }\r\n return nextId;\r\n };\r\n const pushAdd = (n) => {\r\n var _a, _b, _c, _d;\r\n let shadowHost = null;\r\n if (((_b = (_a = n.getRootNode) === null || _a === void 0 ? void 0 : _a.call(n)) === null || _b === void 0 ? void 0 : _b.nodeType) === Node.DOCUMENT_FRAGMENT_NODE &&\r\n n.getRootNode().host)\r\n shadowHost = n.getRootNode().host;\r\n let rootShadowHost = shadowHost;\r\n while (((_d = (_c = rootShadowHost === null || rootShadowHost === void 0 ? void 0 : rootShadowHost.getRootNode) === null || _c === void 0 ? void 0 : _c.call(rootShadowHost)) === null || _d === void 0 ? void 0 : _d.nodeType) ===\r\n Node.DOCUMENT_FRAGMENT_NODE &&\r\n rootShadowHost.getRootNode().host)\r\n rootShadowHost = rootShadowHost.getRootNode().host;\r\n const notInDoc = !this.doc.contains(n) &&\r\n (!rootShadowHost || !this.doc.contains(rootShadowHost));\r\n if (!n.parentNode || notInDoc) {\r\n return;\r\n }\r\n const parentId = isShadowRoot(n.parentNode)\r\n ? this.mirror.getId(shadowHost)\r\n : this.mirror.getId(n.parentNode);\r\n const nextId = getNextId(n);\r\n if (parentId === -1 || nextId === -1) {\r\n return addList.addNode(n);\r\n }\r\n const sn = serializeNodeWithId(n, {\r\n doc: this.doc,\r\n mirror: this.mirror,\r\n blockClass: this.blockClass,\r\n blockSelector: this.blockSelector,\r\n maskTextClass: this.maskTextClass,\r\n maskTextSelector: this.maskTextSelector,\r\n skipChild: true,\r\n newlyAddedElement: true,\r\n inlineStylesheet: this.inlineStylesheet,\r\n maskInputOptions: this.maskInputOptions,\r\n maskTextFn: this.maskTextFn,\r\n maskInputFn: this.maskInputFn,\r\n slimDOMOptions: this.slimDOMOptions,\r\n dataURLOptions: this.dataURLOptions,\r\n recordCanvas: this.recordCanvas,\r\n inlineImages: this.inlineImages,\r\n onSerialize: (currentN) => {\r\n if (isSerializedIframe(currentN, this.mirror)) {\r\n this.iframeManager.addIframe(currentN);\r\n }\r\n if (isSerializedStylesheet(currentN, this.mirror)) {\r\n this.stylesheetManager.trackLinkElement(currentN);\r\n }\r\n if (hasShadowRoot(n)) {\r\n this.shadowDomManager.addShadowRoot(n.shadowRoot, this.doc);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n this.iframeManager.attachIframe(iframe, childSn);\r\n this.shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (link, childSn) => {\r\n this.stylesheetManager.attachLinkElement(link, childSn);\r\n },\r\n });\r\n if (sn) {\r\n adds.push({\r\n parentId,\r\n nextId,\r\n node: sn,\r\n });\r\n }\r\n };\r\n while (this.mapRemoves.length) {\r\n this.mirror.removeNodeFromMap(this.mapRemoves.shift());\r\n }\r\n for (const n of Array.from(this.movedSet.values())) {\r\n if (isParentRemoved(this.removes, n, this.mirror) &&\r\n !this.movedSet.has(n.parentNode)) {\r\n continue;\r\n }\r\n pushAdd(n);\r\n }\r\n for (const n of Array.from(this.addedSet.values())) {\r\n if (!isAncestorInSet(this.droppedSet, n) &&\r\n !isParentRemoved(this.removes, n, this.mirror)) {\r\n pushAdd(n);\r\n }\r\n else if (isAncestorInSet(this.movedSet, n)) {\r\n pushAdd(n);\r\n }\r\n else {\r\n this.droppedSet.add(n);\r\n }\r\n }\r\n let candidate = null;\r\n while (addList.length) {\r\n let node = null;\r\n if (candidate) {\r\n const parentId = this.mirror.getId(candidate.value.parentNode);\r\n const nextId = getNextId(candidate.value);\r\n if (parentId !== -1 && nextId !== -1) {\r\n node = candidate;\r\n }\r\n }\r\n if (!node) {\r\n for (let index = addList.length - 1; index >= 0; index--) {\r\n const _node = addList.get(index);\r\n if (_node) {\r\n const parentId = this.mirror.getId(_node.value.parentNode);\r\n const nextId = getNextId(_node.value);\r\n if (nextId === -1)\r\n continue;\r\n else if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n else {\r\n const unhandledNode = _node.value;\r\n if (unhandledNode.parentNode &&\r\n unhandledNode.parentNode.nodeType ===\r\n Node.DOCUMENT_FRAGMENT_NODE) {\r\n const shadowHost = unhandledNode.parentNode\r\n .host;\r\n const parentId = this.mirror.getId(shadowHost);\r\n if (parentId !== -1) {\r\n node = _node;\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n if (!node) {\r\n while (addList.head) {\r\n addList.removeNode(addList.head.value);\r\n }\r\n break;\r\n }\r\n candidate = node.previous;\r\n addList.removeNode(node.value);\r\n pushAdd(node.value);\r\n }\r\n const payload = {\r\n texts: this.texts\r\n .map((text) => ({\r\n id: this.mirror.getId(text.node),\r\n value: text.value,\r\n }))\r\n .filter((text) => this.mirror.has(text.id)),\r\n attributes: this.attributes\r\n .map((attribute) => ({\r\n id: this.mirror.getId(attribute.node),\r\n attributes: attribute.attributes,\r\n }))\r\n .filter((attribute) => this.mirror.has(attribute.id)),\r\n removes: this.removes,\r\n adds,\r\n };\r\n if (!payload.texts.length &&\r\n !payload.attributes.length &&\r\n !payload.removes.length &&\r\n !payload.adds.length) {\r\n return;\r\n }\r\n this.texts = [];\r\n this.attributes = [];\r\n this.removes = [];\r\n this.addedSet = new Set();\r\n this.movedSet = new Set();\r\n this.droppedSet = new Set();\r\n this.movedMap = {};\r\n this.mutationCb(payload);\r\n };\r\n this.processMutation = (m) => {\r\n if (isIgnored(m.target, this.mirror)) {\r\n return;\r\n }\r\n switch (m.type) {\r\n case 'characterData': {\r\n const value = m.target.textContent;\r\n if (!isBlocked(m.target, this.blockClass, this.blockSelector, false) &&\r\n value !== m.oldValue) {\r\n this.texts.push({\r\n value: needMaskingText(m.target, this.maskTextClass, this.maskTextSelector) && value\r\n ? this.maskTextFn\r\n ? this.maskTextFn(value)\r\n : value.replace(/[\\S]/g, '*')\r\n : value,\r\n node: m.target,\r\n });\r\n }\r\n break;\r\n }\r\n case 'attributes': {\r\n const target = m.target;\r\n let value = m.target.getAttribute(m.attributeName);\r\n if (m.attributeName === 'value') {\r\n value = maskInputValue({\r\n maskInputOptions: this.maskInputOptions,\r\n tagName: m.target.tagName,\r\n type: m.target.getAttribute('type'),\r\n value,\r\n maskInputFn: this.maskInputFn,\r\n });\r\n }\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n value === m.oldValue) {\r\n return;\r\n }\r\n let item = this.attributes.find((a) => a.node === m.target);\r\n if (target.tagName === 'IFRAME' &&\r\n m.attributeName === 'src' &&\r\n !this.keepIframeSrcFn(value)) {\r\n if (!target.contentDocument) {\r\n m.attributeName = 'rr_src';\r\n }\r\n else {\r\n return;\r\n }\r\n }\r\n if (!item) {\r\n item = {\r\n node: m.target,\r\n attributes: {},\r\n };\r\n this.attributes.push(item);\r\n }\r\n if (m.attributeName === 'style') {\r\n const old = this.doc.createElement('span');\r\n if (m.oldValue) {\r\n old.setAttribute('style', m.oldValue);\r\n }\r\n if (item.attributes.style === undefined ||\r\n item.attributes.style === null) {\r\n item.attributes.style = {};\r\n }\r\n const styleObj = item.attributes.style;\r\n for (const pname of Array.from(target.style)) {\r\n const newValue = target.style.getPropertyValue(pname);\r\n const newPriority = target.style.getPropertyPriority(pname);\r\n if (newValue !== old.style.getPropertyValue(pname) ||\r\n newPriority !== old.style.getPropertyPriority(pname)) {\r\n if (newPriority === '') {\r\n styleObj[pname] = newValue;\r\n }\r\n else {\r\n styleObj[pname] = [newValue, newPriority];\r\n }\r\n }\r\n }\r\n for (const pname of Array.from(old.style)) {\r\n if (target.style.getPropertyValue(pname) === '') {\r\n styleObj[pname] = false;\r\n }\r\n }\r\n }\r\n else {\r\n item.attributes[m.attributeName] = transformAttribute(this.doc, target.tagName, m.attributeName, value);\r\n }\r\n break;\r\n }\r\n case 'childList': {\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, true))\r\n return;\r\n m.addedNodes.forEach((n) => this.genAdds(n, m.target));\r\n m.removedNodes.forEach((n) => {\r\n const nodeId = this.mirror.getId(n);\r\n const parentId = isShadowRoot(m.target)\r\n ? this.mirror.getId(m.target.host)\r\n : this.mirror.getId(m.target);\r\n if (isBlocked(m.target, this.blockClass, this.blockSelector, false) ||\r\n isIgnored(n, this.mirror) ||\r\n !isSerialized(n, this.mirror)) {\r\n return;\r\n }\r\n if (this.addedSet.has(n)) {\r\n deepDelete(this.addedSet, n);\r\n this.droppedSet.add(n);\r\n }\r\n else if (this.addedSet.has(m.target) && nodeId === -1) ;\r\n else if (isAncestorRemoved(m.target, this.mirror)) ;\r\n else if (this.movedSet.has(n) &&\r\n this.movedMap[moveKey(nodeId, parentId)]) {\r\n deepDelete(this.movedSet, n);\r\n }\r\n else {\r\n this.removes.push({\r\n parentId,\r\n id: nodeId,\r\n isShadow: isShadowRoot(m.target) && isNativeShadowDom(m.target)\r\n ? true\r\n : undefined,\r\n });\r\n }\r\n this.mapRemoves.push(n);\r\n });\r\n break;\r\n }\r\n }\r\n };\r\n this.genAdds = (n, target) => {\r\n if (this.mirror.hasNode(n)) {\r\n if (isIgnored(n, this.mirror)) {\r\n return;\r\n }\r\n this.movedSet.add(n);\r\n let targetId = null;\r\n if (target && this.mirror.hasNode(target)) {\r\n targetId = this.mirror.getId(target);\r\n }\r\n if (targetId && targetId !== -1) {\r\n this.movedMap[moveKey(this.mirror.getId(n), targetId)] = true;\r\n }\r\n }\r\n else {\r\n this.addedSet.add(n);\r\n this.droppedSet.delete(n);\r\n }\r\n if (!isBlocked(n, this.blockClass, this.blockSelector, false))\r\n n.childNodes.forEach((childN) => this.genAdds(childN));\r\n };\r\n }\r\n init(options) {\r\n [\r\n 'mutationCb',\r\n 'blockClass',\r\n 'blockSelector',\r\n 'maskTextClass',\r\n 'maskTextSelector',\r\n 'inlineStylesheet',\r\n 'maskInputOptions',\r\n 'maskTextFn',\r\n 'maskInputFn',\r\n 'keepIframeSrcFn',\r\n 'recordCanvas',\r\n 'inlineImages',\r\n 'slimDOMOptions',\r\n 'dataURLOptions',\r\n 'doc',\r\n 'mirror',\r\n 'iframeManager',\r\n 'stylesheetManager',\r\n 'shadowDomManager',\r\n 'canvasManager',\r\n ].forEach((key) => {\r\n this[key] = options[key];\r\n });\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n this.canvasManager.freeze();\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n this.canvasManager.unfreeze();\r\n this.emit();\r\n }\r\n isFrozen() {\r\n return this.frozen;\r\n }\r\n lock() {\r\n this.locked = true;\r\n this.canvasManager.lock();\r\n }\r\n unlock() {\r\n this.locked = false;\r\n this.canvasManager.unlock();\r\n this.emit();\r\n }\r\n reset() {\r\n this.shadowDomManager.reset();\r\n this.canvasManager.reset();\r\n }\r\n}\r\nfunction deepDelete(addsSet, n) {\r\n addsSet.delete(n);\r\n n.childNodes.forEach((childN) => deepDelete(addsSet, childN));\r\n}\r\nfunction isParentRemoved(removes, n, mirror) {\r\n if (removes.length === 0)\r\n return false;\r\n return _isParentRemoved(removes, n, mirror);\r\n}\r\nfunction _isParentRemoved(removes, n, mirror) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n const parentId = mirror.getId(parentNode);\r\n if (removes.some((r) => r.id === parentId)) {\r\n return true;\r\n }\r\n return _isParentRemoved(removes, parentNode, mirror);\r\n}\r\nfunction isAncestorInSet(set, n) {\r\n if (set.size === 0)\r\n return false;\r\n return _isAncestorInSet(set, n);\r\n}\r\nfunction _isAncestorInSet(set, n) {\r\n const { parentNode } = n;\r\n if (!parentNode) {\r\n return false;\r\n }\r\n if (set.has(parentNode)) {\r\n return true;\r\n }\r\n return _isAncestorInSet(set, parentNode);\r\n}\n\nexport { MutationBuffer as default };\n","import { maskInputValue } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { on, throttle, isBlocked, getWindowHeight, getWindowWidth, hookSetter, patch, isTouchEvent } from '../utils.js';\nimport { MouseInteractions, IncrementalSource } from '../../../types/dist/types.js';\nimport MutationBuffer from './mutation.js';\n\nconst mutationBuffers = [];\r\nconst isCSSGroupingRuleSupported = typeof CSSGroupingRule !== 'undefined';\r\nconst isCSSMediaRuleSupported = typeof CSSMediaRule !== 'undefined';\r\nconst isCSSSupportsRuleSupported = typeof CSSSupportsRule !== 'undefined';\r\nconst isCSSConditionRuleSupported = typeof CSSConditionRule !== 'undefined';\r\nfunction getEventTarget(event) {\r\n try {\r\n if ('composedPath' in event) {\r\n const path = event.composedPath();\r\n if (path.length) {\r\n return path[0];\r\n }\r\n }\r\n else if ('path' in event && event.path.length) {\r\n return event.path[0];\r\n }\r\n return event.target;\r\n }\r\n catch (_a) {\r\n return event.target;\r\n }\r\n}\r\nfunction initMutationObserver(options, rootEl) {\r\n var _a, _b;\r\n const mutationBuffer = new MutationBuffer();\r\n mutationBuffers.push(mutationBuffer);\r\n mutationBuffer.init(options);\r\n let mutationObserverCtor = window.MutationObserver ||\r\n window.__rrMutationObserver;\r\n const angularZoneSymbol = (_b = (_a = window === null || window === void 0 ? void 0 : window.Zone) === null || _a === void 0 ? void 0 : _a.__symbol__) === null || _b === void 0 ? void 0 : _b.call(_a, 'MutationObserver');\r\n if (angularZoneSymbol &&\r\n window[angularZoneSymbol]) {\r\n mutationObserverCtor = window[angularZoneSymbol];\r\n }\r\n const observer = new mutationObserverCtor(mutationBuffer.processMutations.bind(mutationBuffer));\r\n observer.observe(rootEl, {\r\n attributes: true,\r\n attributeOldValue: true,\r\n characterData: true,\r\n characterDataOldValue: true,\r\n childList: true,\r\n subtree: true,\r\n });\r\n return observer;\r\n}\r\nfunction initMoveObserver({ mousemoveCb, sampling, doc, mirror, }) {\r\n if (sampling.mousemove === false) {\r\n return () => {\r\n };\r\n }\r\n const threshold = typeof sampling.mousemove === 'number' ? sampling.mousemove : 50;\r\n const callbackThreshold = typeof sampling.mousemoveCallback === 'number'\r\n ? sampling.mousemoveCallback\r\n : 500;\r\n let positions = [];\r\n let timeBaseline;\r\n const wrappedCb = throttle((source) => {\r\n const totalOffset = Date.now() - timeBaseline;\r\n mousemoveCb(positions.map((p) => {\r\n p.timeOffset -= totalOffset;\r\n return p;\r\n }), source);\r\n positions = [];\r\n timeBaseline = null;\r\n }, callbackThreshold);\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n const { clientX, clientY } = isTouchEvent(evt)\r\n ? evt.changedTouches[0]\r\n : evt;\r\n if (!timeBaseline) {\r\n timeBaseline = Date.now();\r\n }\r\n positions.push({\r\n x: clientX,\r\n y: clientY,\r\n id: mirror.getId(target),\r\n timeOffset: Date.now() - timeBaseline,\r\n });\r\n wrappedCb(typeof DragEvent !== 'undefined' && evt instanceof DragEvent\r\n ? IncrementalSource.Drag\r\n : evt instanceof MouseEvent\r\n ? IncrementalSource.MouseMove\r\n : IncrementalSource.TouchMove);\r\n }, threshold, {\r\n trailing: false,\r\n });\r\n const handlers = [\r\n on('mousemove', updatePosition, doc),\r\n on('touchmove', updatePosition, doc),\r\n on('drag', updatePosition, doc),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initMouseInteractionObserver({ mouseInteractionCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n if (sampling.mouseInteraction === false) {\r\n return () => {\r\n };\r\n }\r\n const disableMap = sampling.mouseInteraction === true ||\r\n sampling.mouseInteraction === undefined\r\n ? {}\r\n : sampling.mouseInteraction;\r\n const handlers = [];\r\n const getHandler = (eventKey) => {\r\n return (event) => {\r\n const target = getEventTarget(event);\r\n if (isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const e = isTouchEvent(event) ? event.changedTouches[0] : event;\r\n if (!e) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n const { clientX, clientY } = e;\r\n mouseInteractionCb({\r\n type: MouseInteractions[eventKey],\r\n id,\r\n x: clientX,\r\n y: clientY,\r\n });\r\n };\r\n };\r\n Object.keys(MouseInteractions)\r\n .filter((key) => Number.isNaN(Number(key)) &&\r\n !key.endsWith('_Departed') &&\r\n disableMap[key] !== false)\r\n .forEach((eventKey) => {\r\n const eventName = eventKey.toLowerCase();\r\n const handler = getHandler(eventKey);\r\n handlers.push(on(eventName, handler, doc));\r\n });\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initScrollObserver({ scrollCb, doc, mirror, blockClass, blockSelector, sampling, }) {\r\n const updatePosition = throttle((evt) => {\r\n const target = getEventTarget(evt);\r\n if (!target || isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const id = mirror.getId(target);\r\n if (target === doc) {\r\n const scrollEl = (doc.scrollingElement || doc.documentElement);\r\n scrollCb({\r\n id,\r\n x: scrollEl.scrollLeft,\r\n y: scrollEl.scrollTop,\r\n });\r\n }\r\n else {\r\n scrollCb({\r\n id,\r\n x: target.scrollLeft,\r\n y: target.scrollTop,\r\n });\r\n }\r\n }, sampling.scroll || 100);\r\n return on('scroll', updatePosition, doc);\r\n}\r\nfunction initViewportResizeObserver({ viewportResizeCb, }) {\r\n let lastH = -1;\r\n let lastW = -1;\r\n const updateDimension = throttle(() => {\r\n const height = getWindowHeight();\r\n const width = getWindowWidth();\r\n if (lastH !== height || lastW !== width) {\r\n viewportResizeCb({\r\n width: Number(width),\r\n height: Number(height),\r\n });\r\n lastH = height;\r\n lastW = width;\r\n }\r\n }, 200);\r\n return on('resize', updateDimension, window);\r\n}\r\nfunction wrapEventWithUserTriggeredFlag(v, enable) {\r\n const value = Object.assign({}, v);\r\n if (!enable)\r\n delete value.userTriggered;\r\n return value;\r\n}\r\nconst INPUT_TAGS = ['INPUT', 'TEXTAREA', 'SELECT'];\r\nconst lastInputValueMap = new WeakMap();\r\nfunction initInputObserver({ inputCb, doc, mirror, blockClass, blockSelector, ignoreClass, maskInputOptions, maskInputFn, sampling, userTriggeredOnInput, }) {\r\n function eventHandler(event) {\r\n let target = getEventTarget(event);\r\n const userTriggered = event.isTrusted;\r\n if (target && target.tagName === 'OPTION')\r\n target = target.parentElement;\r\n if (!target ||\r\n !target.tagName ||\r\n INPUT_TAGS.indexOf(target.tagName) < 0 ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const type = target.type;\r\n if (target.classList.contains(ignoreClass)) {\r\n return;\r\n }\r\n let text = target.value;\r\n let isChecked = false;\r\n if (type === 'radio' || type === 'checkbox') {\r\n isChecked = target.checked;\r\n }\r\n else if (maskInputOptions[target.tagName.toLowerCase()] ||\r\n maskInputOptions[type]) {\r\n text = maskInputValue({\r\n maskInputOptions,\r\n tagName: target.tagName,\r\n type,\r\n value: text,\r\n maskInputFn,\r\n });\r\n }\r\n cbWithDedup(target, wrapEventWithUserTriggeredFlag({ text, isChecked, userTriggered }, userTriggeredOnInput));\r\n const name = target.name;\r\n if (type === 'radio' && name && isChecked) {\r\n doc\r\n .querySelectorAll(`input[type=\"radio\"][name=\"${name}\"]`)\r\n .forEach((el) => {\r\n if (el !== target) {\r\n cbWithDedup(el, wrapEventWithUserTriggeredFlag({\r\n text: el.value,\r\n isChecked: !isChecked,\r\n userTriggered: false,\r\n }, userTriggeredOnInput));\r\n }\r\n });\r\n }\r\n }\r\n function cbWithDedup(target, v) {\r\n const lastInputValue = lastInputValueMap.get(target);\r\n if (!lastInputValue ||\r\n lastInputValue.text !== v.text ||\r\n lastInputValue.isChecked !== v.isChecked) {\r\n lastInputValueMap.set(target, v);\r\n const id = mirror.getId(target);\r\n inputCb(Object.assign(Object.assign({}, v), { id }));\r\n }\r\n }\r\n const events = sampling.input === 'last' ? ['change'] : ['input', 'change'];\r\n const handlers = events.map((eventName) => on(eventName, eventHandler, doc));\r\n const currentWindow = doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n }\r\n const propertyDescriptor = currentWindow.Object.getOwnPropertyDescriptor(currentWindow.HTMLInputElement.prototype, 'value');\r\n const hookProperties = [\r\n [currentWindow.HTMLInputElement.prototype, 'value'],\r\n [currentWindow.HTMLInputElement.prototype, 'checked'],\r\n [currentWindow.HTMLSelectElement.prototype, 'value'],\r\n [currentWindow.HTMLTextAreaElement.prototype, 'value'],\r\n [currentWindow.HTMLSelectElement.prototype, 'selectedIndex'],\r\n [currentWindow.HTMLOptionElement.prototype, 'selected'],\r\n ];\r\n if (propertyDescriptor && propertyDescriptor.set) {\r\n handlers.push(...hookProperties.map((p) => hookSetter(p[0], p[1], {\r\n set() {\r\n eventHandler({ target: this });\r\n },\r\n }, false, currentWindow)));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction getNestedCSSRulePositions(rule) {\r\n const positions = [];\r\n function recurse(childRule, pos) {\r\n if ((isCSSGroupingRuleSupported &&\r\n childRule.parentRule instanceof CSSGroupingRule) ||\r\n (isCSSMediaRuleSupported &&\r\n childRule.parentRule instanceof CSSMediaRule) ||\r\n (isCSSSupportsRuleSupported &&\r\n childRule.parentRule instanceof CSSSupportsRule) ||\r\n (isCSSConditionRuleSupported &&\r\n childRule.parentRule instanceof CSSConditionRule)) {\r\n const rules = Array.from(childRule.parentRule.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n else if (childRule.parentStyleSheet) {\r\n const rules = Array.from(childRule.parentStyleSheet.cssRules);\r\n const index = rules.indexOf(childRule);\r\n pos.unshift(index);\r\n }\r\n return pos;\r\n }\r\n return recurse(rule, positions);\r\n}\r\nfunction getIdAndStyleId(sheet, mirror, styleMirror) {\r\n let id, styleId;\r\n if (!sheet)\r\n return {};\r\n if (sheet.ownerNode)\r\n id = mirror.getId(sheet.ownerNode);\r\n else\r\n styleId = styleMirror.getId(sheet);\r\n return {\r\n styleId,\r\n id,\r\n };\r\n}\r\nfunction initStyleSheetObserver({ styleSheetRuleCb, mirror, stylesheetManager }, { win }) {\r\n const insertRule = win.CSSStyleSheet.prototype.insertRule;\r\n win.CSSStyleSheet.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [{ rule, index }],\r\n });\r\n }\r\n return insertRule.apply(this, [rule, index]);\r\n };\r\n const deleteRule = win.CSSStyleSheet.prototype.deleteRule;\r\n win.CSSStyleSheet.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [{ index }],\r\n });\r\n }\r\n return deleteRule.apply(this, [index]);\r\n };\r\n let replace;\r\n if (win.CSSStyleSheet.prototype.replace) {\r\n replace = win.CSSStyleSheet.prototype.replace;\r\n win.CSSStyleSheet.prototype.replace = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replace: text,\r\n });\r\n }\r\n return replace.apply(this, [text]);\r\n };\r\n }\r\n let replaceSync;\r\n if (win.CSSStyleSheet.prototype.replaceSync) {\r\n replaceSync = win.CSSStyleSheet.prototype.replaceSync;\r\n win.CSSStyleSheet.prototype.replaceSync = function (text) {\r\n const { id, styleId } = getIdAndStyleId(this, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n replaceSync: text,\r\n });\r\n }\r\n return replaceSync.apply(this, [text]);\r\n };\r\n }\r\n const supportedNestedCSSRuleTypes = {};\r\n if (isCSSGroupingRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSGroupingRule = win.CSSGroupingRule;\r\n }\r\n else {\r\n if (isCSSMediaRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSMediaRule = win.CSSMediaRule;\r\n }\r\n if (isCSSConditionRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSConditionRule = win.CSSConditionRule;\r\n }\r\n if (isCSSSupportsRuleSupported) {\r\n supportedNestedCSSRuleTypes.CSSSupportsRule = win.CSSSupportsRule;\r\n }\r\n }\r\n const unmodifiedFunctions = {};\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n unmodifiedFunctions[typeKey] = {\r\n insertRule: type.prototype.insertRule,\r\n deleteRule: type.prototype.deleteRule,\r\n };\r\n type.prototype.insertRule = function (rule, index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n adds: [\r\n {\r\n rule,\r\n index: [\r\n ...getNestedCSSRulePositions(this),\r\n index || 0,\r\n ],\r\n },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].insertRule.apply(this, [rule, index]);\r\n };\r\n type.prototype.deleteRule = function (index) {\r\n const { id, styleId } = getIdAndStyleId(this.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleSheetRuleCb({\r\n id,\r\n styleId,\r\n removes: [\r\n { index: [...getNestedCSSRulePositions(this), index] },\r\n ],\r\n });\r\n }\r\n return unmodifiedFunctions[typeKey].deleteRule.apply(this, [index]);\r\n };\r\n });\r\n return () => {\r\n win.CSSStyleSheet.prototype.insertRule = insertRule;\r\n win.CSSStyleSheet.prototype.deleteRule = deleteRule;\r\n replace && (win.CSSStyleSheet.prototype.replace = replace);\r\n replaceSync && (win.CSSStyleSheet.prototype.replaceSync = replaceSync);\r\n Object.entries(supportedNestedCSSRuleTypes).forEach(([typeKey, type]) => {\r\n type.prototype.insertRule = unmodifiedFunctions[typeKey].insertRule;\r\n type.prototype.deleteRule = unmodifiedFunctions[typeKey].deleteRule;\r\n });\r\n };\r\n}\r\nfunction initAdoptedStyleSheetObserver({ mirror, stylesheetManager, }, host) {\r\n var _a, _b, _c;\r\n let hostId = null;\r\n if (host.nodeName === '#document')\r\n hostId = mirror.getId(host);\r\n else\r\n hostId = mirror.getId(host.host);\r\n const patchTarget = host.nodeName === '#document'\r\n ? (_a = host.defaultView) === null || _a === void 0 ? void 0 : _a.Document\r\n : (_c = (_b = host.ownerDocument) === null || _b === void 0 ? void 0 : _b.defaultView) === null || _c === void 0 ? void 0 : _c.ShadowRoot;\r\n const originalPropertyDescriptor = Object.getOwnPropertyDescriptor(patchTarget === null || patchTarget === void 0 ? void 0 : patchTarget.prototype, 'adoptedStyleSheets');\r\n if (hostId === null ||\r\n hostId === -1 ||\r\n !patchTarget ||\r\n !originalPropertyDescriptor)\r\n return () => {\r\n };\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get() {\r\n var _a;\r\n return (_a = originalPropertyDescriptor.get) === null || _a === void 0 ? void 0 : _a.call(this);\r\n },\r\n set(sheets) {\r\n var _a;\r\n const result = (_a = originalPropertyDescriptor.set) === null || _a === void 0 ? void 0 : _a.call(this, sheets);\r\n if (hostId !== null && hostId !== -1) {\r\n try {\r\n stylesheetManager.adoptStyleSheets(sheets, hostId);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n return result;\r\n },\r\n });\r\n return () => {\r\n Object.defineProperty(host, 'adoptedStyleSheets', {\r\n configurable: originalPropertyDescriptor.configurable,\r\n enumerable: originalPropertyDescriptor.enumerable,\r\n get: originalPropertyDescriptor.get,\r\n set: originalPropertyDescriptor.set,\r\n });\r\n };\r\n}\r\nfunction initStyleDeclarationObserver({ styleDeclarationCb, mirror, ignoreCSSAttributes, stylesheetManager, }, { win }) {\r\n const setProperty = win.CSSStyleDeclaration.prototype.setProperty;\r\n win.CSSStyleDeclaration.prototype.setProperty = function (property, value, priority) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return setProperty.apply(this, [property, value, priority]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n set: {\r\n property,\r\n value,\r\n priority,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return setProperty.apply(this, [property, value, priority]);\r\n };\r\n const removeProperty = win.CSSStyleDeclaration.prototype.removeProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = function (property) {\r\n var _a;\r\n if (ignoreCSSAttributes.has(property)) {\r\n return removeProperty.apply(this, [property]);\r\n }\r\n const { id, styleId } = getIdAndStyleId((_a = this.parentRule) === null || _a === void 0 ? void 0 : _a.parentStyleSheet, mirror, stylesheetManager.styleMirror);\r\n if ((id && id !== -1) || (styleId && styleId !== -1)) {\r\n styleDeclarationCb({\r\n id,\r\n styleId,\r\n remove: {\r\n property,\r\n },\r\n index: getNestedCSSRulePositions(this.parentRule),\r\n });\r\n }\r\n return removeProperty.apply(this, [property]);\r\n };\r\n return () => {\r\n win.CSSStyleDeclaration.prototype.setProperty = setProperty;\r\n win.CSSStyleDeclaration.prototype.removeProperty = removeProperty;\r\n };\r\n}\r\nfunction initMediaInteractionObserver({ mediaInteractionCb, blockClass, blockSelector, mirror, sampling, }) {\r\n const handler = (type) => throttle((event) => {\r\n const target = getEventTarget(event);\r\n if (!target ||\r\n isBlocked(target, blockClass, blockSelector, true)) {\r\n return;\r\n }\r\n const { currentTime, volume, muted, playbackRate, } = target;\r\n mediaInteractionCb({\r\n type,\r\n id: mirror.getId(target),\r\n currentTime,\r\n volume,\r\n muted,\r\n playbackRate,\r\n });\r\n }, sampling.media || 500);\r\n const handlers = [\r\n on('play', handler(0)),\r\n on('pause', handler(1)),\r\n on('seeked', handler(2)),\r\n on('volumechange', handler(3)),\r\n on('ratechange', handler(4)),\r\n ];\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initFontObserver({ fontCb, doc }) {\r\n const win = doc.defaultView;\r\n if (!win) {\r\n return () => {\r\n };\r\n }\r\n const handlers = [];\r\n const fontMap = new WeakMap();\r\n const originalFontFace = win.FontFace;\r\n win.FontFace = function FontFace(family, source, descriptors) {\r\n const fontFace = new originalFontFace(family, source, descriptors);\r\n fontMap.set(fontFace, {\r\n family,\r\n buffer: typeof source !== 'string',\r\n descriptors,\r\n fontSource: typeof source === 'string'\r\n ? source\r\n : JSON.stringify(Array.from(new Uint8Array(source))),\r\n });\r\n return fontFace;\r\n };\r\n const restoreHandler = patch(doc.fonts, 'add', function (original) {\r\n return function (fontFace) {\r\n setTimeout(() => {\r\n const p = fontMap.get(fontFace);\r\n if (p) {\r\n fontCb(p);\r\n fontMap.delete(fontFace);\r\n }\r\n }, 0);\r\n return original.apply(this, [fontFace]);\r\n };\r\n });\r\n handlers.push(() => {\r\n win.FontFace = originalFontFace;\r\n });\r\n handlers.push(restoreHandler);\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\r\nfunction initSelectionObserver(param) {\r\n const { doc, mirror, blockClass, blockSelector, selectionCb } = param;\r\n let collapsed = true;\r\n const updateSelection = () => {\r\n const selection = doc.getSelection();\r\n if (!selection || (collapsed && (selection === null || selection === void 0 ? void 0 : selection.isCollapsed)))\r\n return;\r\n collapsed = selection.isCollapsed || false;\r\n const ranges = [];\r\n const count = selection.rangeCount || 0;\r\n for (let i = 0; i < count; i++) {\r\n const range = selection.getRangeAt(i);\r\n const { startContainer, startOffset, endContainer, endOffset } = range;\r\n const blocked = isBlocked(startContainer, blockClass, blockSelector, true) ||\r\n isBlocked(endContainer, blockClass, blockSelector, true);\r\n if (blocked)\r\n continue;\r\n ranges.push({\r\n start: mirror.getId(startContainer),\r\n startOffset,\r\n end: mirror.getId(endContainer),\r\n endOffset,\r\n });\r\n }\r\n selectionCb({ ranges });\r\n };\r\n updateSelection();\r\n return on('selectionchange', updateSelection);\r\n}\r\nfunction mergeHooks(o, hooks) {\r\n const { mutationCb, mousemoveCb, mouseInteractionCb, scrollCb, viewportResizeCb, inputCb, mediaInteractionCb, styleSheetRuleCb, styleDeclarationCb, canvasMutationCb, fontCb, selectionCb, } = o;\r\n o.mutationCb = (...p) => {\r\n if (hooks.mutation) {\r\n hooks.mutation(...p);\r\n }\r\n mutationCb(...p);\r\n };\r\n o.mousemoveCb = (...p) => {\r\n if (hooks.mousemove) {\r\n hooks.mousemove(...p);\r\n }\r\n mousemoveCb(...p);\r\n };\r\n o.mouseInteractionCb = (...p) => {\r\n if (hooks.mouseInteraction) {\r\n hooks.mouseInteraction(...p);\r\n }\r\n mouseInteractionCb(...p);\r\n };\r\n o.scrollCb = (...p) => {\r\n if (hooks.scroll) {\r\n hooks.scroll(...p);\r\n }\r\n scrollCb(...p);\r\n };\r\n o.viewportResizeCb = (...p) => {\r\n if (hooks.viewportResize) {\r\n hooks.viewportResize(...p);\r\n }\r\n viewportResizeCb(...p);\r\n };\r\n o.inputCb = (...p) => {\r\n if (hooks.input) {\r\n hooks.input(...p);\r\n }\r\n inputCb(...p);\r\n };\r\n o.mediaInteractionCb = (...p) => {\r\n if (hooks.mediaInteaction) {\r\n hooks.mediaInteaction(...p);\r\n }\r\n mediaInteractionCb(...p);\r\n };\r\n o.styleSheetRuleCb = (...p) => {\r\n if (hooks.styleSheetRule) {\r\n hooks.styleSheetRule(...p);\r\n }\r\n styleSheetRuleCb(...p);\r\n };\r\n o.styleDeclarationCb = (...p) => {\r\n if (hooks.styleDeclaration) {\r\n hooks.styleDeclaration(...p);\r\n }\r\n styleDeclarationCb(...p);\r\n };\r\n o.canvasMutationCb = (...p) => {\r\n if (hooks.canvasMutation) {\r\n hooks.canvasMutation(...p);\r\n }\r\n canvasMutationCb(...p);\r\n };\r\n o.fontCb = (...p) => {\r\n if (hooks.font) {\r\n hooks.font(...p);\r\n }\r\n fontCb(...p);\r\n };\r\n o.selectionCb = (...p) => {\r\n if (hooks.selection) {\r\n hooks.selection(...p);\r\n }\r\n selectionCb(...p);\r\n };\r\n}\r\nfunction initObservers(o, hooks = {}) {\r\n const currentWindow = o.doc.defaultView;\r\n if (!currentWindow) {\r\n return () => {\r\n };\r\n }\r\n mergeHooks(o, hooks);\r\n const mutationObserver = initMutationObserver(o, o.doc);\r\n const mousemoveHandler = initMoveObserver(o);\r\n const mouseInteractionHandler = initMouseInteractionObserver(o);\r\n const scrollHandler = initScrollObserver(o);\r\n const viewportResizeHandler = initViewportResizeObserver(o);\r\n const inputHandler = initInputObserver(o);\r\n const mediaInteractionHandler = initMediaInteractionObserver(o);\r\n const styleSheetObserver = initStyleSheetObserver(o, { win: currentWindow });\r\n const adoptedStyleSheetObserver = initAdoptedStyleSheetObserver(o, o.doc);\r\n const styleDeclarationObserver = initStyleDeclarationObserver(o, {\r\n win: currentWindow,\r\n });\r\n const fontObserver = o.collectFonts\r\n ? initFontObserver(o)\r\n : () => {\r\n };\r\n const selectionObserver = initSelectionObserver(o);\r\n const pluginHandlers = [];\r\n for (const plugin of o.plugins) {\r\n pluginHandlers.push(plugin.observer(plugin.callback, currentWindow, plugin.options));\r\n }\r\n return () => {\r\n mutationBuffers.forEach((b) => b.reset());\r\n mutationObserver.disconnect();\r\n mousemoveHandler();\r\n mouseInteractionHandler();\r\n scrollHandler();\r\n viewportResizeHandler();\r\n inputHandler();\r\n mediaInteractionHandler();\r\n styleSheetObserver();\r\n adoptedStyleSheetObserver();\r\n styleDeclarationObserver();\r\n fontObserver();\r\n selectionObserver();\r\n pluginHandlers.forEach((h) => h());\r\n };\r\n}\n\nexport { INPUT_TAGS, initAdoptedStyleSheetObserver, initMutationObserver, initObservers, initScrollObserver, mutationBuffers };\n","class CrossOriginIframeMirror {\r\n constructor(generateIdFn) {\r\n this.generateIdFn = generateIdFn;\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n }\r\n getId(iframe, remoteId, idToRemoteMap, remoteToIdMap) {\r\n const idToRemoteIdMap = idToRemoteMap || this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = remoteToIdMap || this.getRemoteIdToIdMap(iframe);\r\n let id = idToRemoteIdMap.get(remoteId);\r\n if (!id) {\r\n id = this.generateIdFn();\r\n idToRemoteIdMap.set(remoteId, id);\r\n remoteIdToIdMap.set(id, remoteId);\r\n }\r\n return id;\r\n }\r\n getIds(iframe, remoteId) {\r\n const idToRemoteIdMap = this.getIdToRemoteIdMap(iframe);\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return remoteId.map((id) => this.getId(iframe, id, idToRemoteIdMap, remoteIdToIdMap));\r\n }\r\n getRemoteId(iframe, id, map) {\r\n const remoteIdToIdMap = map || this.getRemoteIdToIdMap(iframe);\r\n if (typeof id !== 'number')\r\n return id;\r\n const remoteId = remoteIdToIdMap.get(id);\r\n if (!remoteId)\r\n return -1;\r\n return remoteId;\r\n }\r\n getRemoteIds(iframe, ids) {\r\n const remoteIdToIdMap = this.getRemoteIdToIdMap(iframe);\r\n return ids.map((id) => this.getRemoteId(iframe, id, remoteIdToIdMap));\r\n }\r\n reset(iframe) {\r\n if (!iframe) {\r\n this.iframeIdToRemoteIdMap = new WeakMap();\r\n this.iframeRemoteIdToIdMap = new WeakMap();\r\n return;\r\n }\r\n this.iframeIdToRemoteIdMap.delete(iframe);\r\n this.iframeRemoteIdToIdMap.delete(iframe);\r\n }\r\n getIdToRemoteIdMap(iframe) {\r\n let idToRemoteIdMap = this.iframeIdToRemoteIdMap.get(iframe);\r\n if (!idToRemoteIdMap) {\r\n idToRemoteIdMap = new Map();\r\n this.iframeIdToRemoteIdMap.set(iframe, idToRemoteIdMap);\r\n }\r\n return idToRemoteIdMap;\r\n }\r\n getRemoteIdToIdMap(iframe) {\r\n let remoteIdToIdMap = this.iframeRemoteIdToIdMap.get(iframe);\r\n if (!remoteIdToIdMap) {\r\n remoteIdToIdMap = new Map();\r\n this.iframeRemoteIdToIdMap.set(iframe, remoteIdToIdMap);\r\n }\r\n return remoteIdToIdMap;\r\n }\r\n}\n\nexport { CrossOriginIframeMirror as default };\n","import { genId } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport CrossOriginIframeMirror from './cross-origin-iframe-mirror.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\n\nclass IframeManager {\r\n constructor(options) {\r\n this.iframes = new WeakMap();\r\n this.crossOriginIframeMap = new WeakMap();\r\n this.crossOriginIframeMirror = new CrossOriginIframeMirror(genId);\r\n this.mutationCb = options.mutationCb;\r\n this.wrappedEmit = options.wrappedEmit;\r\n this.stylesheetManager = options.stylesheetManager;\r\n this.recordCrossOriginIframes = options.recordCrossOriginIframes;\r\n this.crossOriginIframeStyleMirror = new CrossOriginIframeMirror(this.stylesheetManager.styleMirror.generateId.bind(this.stylesheetManager.styleMirror));\r\n this.mirror = options.mirror;\r\n if (this.recordCrossOriginIframes) {\r\n window.addEventListener('message', this.handleMessage.bind(this));\r\n }\r\n }\r\n addIframe(iframeEl) {\r\n this.iframes.set(iframeEl, true);\r\n if (iframeEl.contentWindow)\r\n this.crossOriginIframeMap.set(iframeEl.contentWindow, iframeEl);\r\n }\r\n addLoadListener(cb) {\r\n this.loadListener = cb;\r\n }\r\n attachIframe(iframeEl, childSn) {\r\n var _a;\r\n this.mutationCb({\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: childSn,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n });\r\n (_a = this.loadListener) === null || _a === void 0 ? void 0 : _a.call(this, iframeEl);\r\n if (iframeEl.contentDocument &&\r\n iframeEl.contentDocument.adoptedStyleSheets &&\r\n iframeEl.contentDocument.adoptedStyleSheets.length > 0)\r\n this.stylesheetManager.adoptStyleSheets(iframeEl.contentDocument.adoptedStyleSheets, this.mirror.getId(iframeEl.contentDocument));\r\n }\r\n handleMessage(message) {\r\n if (message.data.type === 'rrweb') {\r\n const iframeSourceWindow = message.source;\r\n if (!iframeSourceWindow)\r\n return;\r\n const iframeEl = this.crossOriginIframeMap.get(message.source);\r\n if (!iframeEl)\r\n return;\r\n const transformedEvent = this.transformCrossOriginEvent(iframeEl, message.data.event);\r\n if (transformedEvent)\r\n this.wrappedEmit(transformedEvent, message.data.isCheckout);\r\n }\r\n }\r\n transformCrossOriginEvent(iframeEl, e) {\r\n var _a;\r\n switch (e.type) {\r\n case EventType.FullSnapshot: {\r\n this.crossOriginIframeMirror.reset(iframeEl);\r\n this.crossOriginIframeStyleMirror.reset(iframeEl);\r\n this.replaceIdOnNode(e.data.node, iframeEl);\r\n return {\r\n timestamp: e.timestamp,\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source: IncrementalSource.Mutation,\r\n adds: [\r\n {\r\n parentId: this.mirror.getId(iframeEl),\r\n nextId: null,\r\n node: e.data.node,\r\n },\r\n ],\r\n removes: [],\r\n texts: [],\r\n attributes: [],\r\n isAttachIframe: true,\r\n },\r\n };\r\n }\r\n case EventType.Meta:\r\n case EventType.Load:\r\n case EventType.DomContentLoaded: {\r\n return false;\r\n }\r\n case EventType.Plugin: {\r\n return e;\r\n }\r\n case EventType.Custom: {\r\n this.replaceIds(e.data.payload, iframeEl, ['id', 'parentId', 'previousId', 'nextId']);\r\n return e;\r\n }\r\n case EventType.IncrementalSnapshot: {\r\n switch (e.data.source) {\r\n case IncrementalSource.Mutation: {\r\n e.data.adds.forEach((n) => {\r\n this.replaceIds(n, iframeEl, [\r\n 'parentId',\r\n 'nextId',\r\n 'previousId',\r\n ]);\r\n this.replaceIdOnNode(n.node, iframeEl);\r\n });\r\n e.data.removes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['parentId', 'id']);\r\n });\r\n e.data.attributes.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n e.data.texts.forEach((n) => {\r\n this.replaceIds(n, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove: {\r\n e.data.positions.forEach((p) => {\r\n this.replaceIds(p, iframeEl, ['id']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.ViewportResize: {\r\n return false;\r\n }\r\n case IncrementalSource.MediaInteraction:\r\n case IncrementalSource.MouseInteraction:\r\n case IncrementalSource.Scroll:\r\n case IncrementalSource.CanvasMutation:\r\n case IncrementalSource.Input: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n return e;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleId']);\r\n return e;\r\n }\r\n case IncrementalSource.Font: {\r\n return e;\r\n }\r\n case IncrementalSource.Selection: {\r\n e.data.ranges.forEach((range) => {\r\n this.replaceIds(range, iframeEl, ['start', 'end']);\r\n });\r\n return e;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n this.replaceIds(e.data, iframeEl, ['id']);\r\n this.replaceStyleIds(e.data, iframeEl, ['styleIds']);\r\n (_a = e.data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n this.replaceStyleIds(style, iframeEl, ['styleId']);\r\n });\r\n return e;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n replace(iframeMirror, obj, iframeEl, keys) {\r\n for (const key of keys) {\r\n if (!Array.isArray(obj[key]) && typeof obj[key] !== 'number')\r\n continue;\r\n if (Array.isArray(obj[key])) {\r\n obj[key] = iframeMirror.getIds(iframeEl, obj[key]);\r\n }\r\n else {\r\n obj[key] = iframeMirror.getId(iframeEl, obj[key]);\r\n }\r\n }\r\n return obj;\r\n }\r\n replaceIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeMirror, obj, iframeEl, keys);\r\n }\r\n replaceStyleIds(obj, iframeEl, keys) {\r\n return this.replace(this.crossOriginIframeStyleMirror, obj, iframeEl, keys);\r\n }\r\n replaceIdOnNode(node, iframeEl) {\r\n this.replaceIds(node, iframeEl, ['id']);\r\n if ('childNodes' in node) {\r\n node.childNodes.forEach((child) => {\r\n this.replaceIdOnNode(child, iframeEl);\r\n });\r\n }\r\n }\r\n}\n\nexport { IframeManager };\n","import { initMutationObserver, initScrollObserver, initAdoptedStyleSheetObserver } from './observer.js';\nimport { patch } from '../utils.js';\nimport { isNativeShadowDom } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\n\nclass ShadowDomManager {\r\n constructor(options) {\r\n this.shadowDoms = new WeakSet();\r\n this.restorePatches = [];\r\n this.mutationCb = options.mutationCb;\r\n this.scrollCb = options.scrollCb;\r\n this.bypassOptions = options.bypassOptions;\r\n this.mirror = options.mirror;\r\n const manager = this;\r\n this.restorePatches.push(patch(Element.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, this.ownerDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n addShadowRoot(shadowRoot, doc) {\r\n if (!isNativeShadowDom(shadowRoot))\r\n return;\r\n if (this.shadowDoms.has(shadowRoot))\r\n return;\r\n this.shadowDoms.add(shadowRoot);\r\n initMutationObserver(Object.assign(Object.assign({}, this.bypassOptions), { doc, mutationCb: this.mutationCb, mirror: this.mirror, shadowDomManager: this }), shadowRoot);\r\n initScrollObserver(Object.assign(Object.assign({}, this.bypassOptions), { scrollCb: this.scrollCb, doc: shadowRoot, mirror: this.mirror }));\r\n setTimeout(() => {\r\n if (shadowRoot.adoptedStyleSheets &&\r\n shadowRoot.adoptedStyleSheets.length > 0)\r\n this.bypassOptions.stylesheetManager.adoptStyleSheets(shadowRoot.adoptedStyleSheets, this.mirror.getId(shadowRoot.host));\r\n initAdoptedStyleSheetObserver({\r\n mirror: this.mirror,\r\n stylesheetManager: this.bypassOptions.stylesheetManager,\r\n }, shadowRoot);\r\n }, 0);\r\n }\r\n observeAttachShadow(iframeElement) {\r\n if (iframeElement.contentWindow) {\r\n const manager = this;\r\n this.restorePatches.push(patch(iframeElement.contentWindow.HTMLElement.prototype, 'attachShadow', function (original) {\r\n return function (option) {\r\n const shadowRoot = original.call(this, option);\r\n if (this.shadowRoot)\r\n manager.addShadowRoot(this.shadowRoot, iframeElement.contentDocument);\r\n return shadowRoot;\r\n };\r\n }));\r\n }\r\n }\r\n reset() {\r\n this.restorePatches.forEach((restorePatch) => restorePatch());\r\n this.shadowDoms = new WeakSet();\r\n }\r\n}\n\nexport { ShadowDomManager };\n","/*! *****************************************************************************\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\r\nfunction __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\nfunction __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}\n\nexport { __awaiter, __rest };\n","/*\n * base64-arraybuffer 1.0.1 <https://github.com/niklasvh/base64-arraybuffer>\n * Copyright (c) 2021 Niklas von Hertzen <https://hertzen.com>\n * Released under MIT License\n */\nvar chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n// Use a lookup table to find the index.\nvar lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (var i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\nvar encode = function (arraybuffer) {\n var bytes = new Uint8Array(arraybuffer), i, len = bytes.length, base64 = '';\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n }\n else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n return base64;\n};\nvar decode = function (base64) {\n var bufferLength = base64.length * 0.75, len = base64.length, i, p = 0, encoded1, encoded2, encoded3, encoded4;\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n var arraybuffer = new ArrayBuffer(bufferLength), bytes = new Uint8Array(arraybuffer);\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n return arraybuffer;\n};\n\nexport { decode, encode };\n","import { encode } from './../../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst canvasVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = canvasVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n canvasVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nconst saveWebGLVar = (value, win, ctx) => {\r\n if (!value ||\r\n !(isInstanceOfWebGLObject(value, win) || typeof value === 'object'))\r\n return;\r\n const name = value.constructor.name;\r\n const list = variableListFor(ctx, name);\r\n let index = list.indexOf(value);\r\n if (index === -1) {\r\n index = list.length;\r\n list.push(value);\r\n }\r\n return index;\r\n};\r\nfunction serializeArg(value, win, ctx) {\r\n if (value instanceof Array) {\r\n return value.map((arg) => serializeArg(arg, win, ctx));\r\n }\r\n else if (value === null) {\r\n return value;\r\n }\r\n else if (value instanceof Float32Array ||\r\n value instanceof Float64Array ||\r\n value instanceof Int32Array ||\r\n value instanceof Uint32Array ||\r\n value instanceof Uint8Array ||\r\n value instanceof Uint16Array ||\r\n value instanceof Int16Array ||\r\n value instanceof Int8Array ||\r\n value instanceof Uint8ClampedArray) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [Object.values(value)],\r\n };\r\n }\r\n else if (value instanceof ArrayBuffer) {\r\n const name = value.constructor.name;\r\n const base64 = encode(value);\r\n return {\r\n rr_type: name,\r\n base64,\r\n };\r\n }\r\n else if (value instanceof DataView) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [\r\n serializeArg(value.buffer, win, ctx),\r\n value.byteOffset,\r\n value.byteLength,\r\n ],\r\n };\r\n }\r\n else if (value instanceof HTMLImageElement) {\r\n const name = value.constructor.name;\r\n const { src } = value;\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof HTMLCanvasElement) {\r\n const name = 'HTMLImageElement';\r\n const src = value.toDataURL();\r\n return {\r\n rr_type: name,\r\n src,\r\n };\r\n }\r\n else if (value instanceof ImageData) {\r\n const name = value.constructor.name;\r\n return {\r\n rr_type: name,\r\n args: [serializeArg(value.data, win, ctx), value.width, value.height],\r\n };\r\n }\r\n else if (isInstanceOfWebGLObject(value, win) || typeof value === 'object') {\r\n const name = value.constructor.name;\r\n const index = saveWebGLVar(value, win, ctx);\r\n return {\r\n rr_type: name,\r\n index: index,\r\n };\r\n }\r\n return value;\r\n}\r\nconst serializeArgs = (args, win, ctx) => {\r\n return [...args].map((arg) => serializeArg(arg, win, ctx));\r\n};\r\nconst isInstanceOfWebGLObject = (value, win) => {\r\n const webGLConstructorNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n 'WebGLVertexArrayObjectOES',\r\n ];\r\n const supportedWebGLConstructorNames = webGLConstructorNames.filter((name) => typeof win[name] === 'function');\r\n return Boolean(supportedWebGLConstructorNames.find((name) => value instanceof win[name]));\r\n};\n\nexport { isInstanceOfWebGLObject, saveWebGLVar, serializeArg, serializeArgs, variableListFor };\n","import { patch, isBlocked } from '../../../utils.js';\n\nfunction initCanvasContextObserver(win, blockClass, blockSelector) {\r\n const handlers = [];\r\n try {\r\n const restoreHandler = patch(win.HTMLCanvasElement.prototype, 'getContext', function (original) {\r\n return function (contextType, ...args) {\r\n if (!isBlocked(this, blockClass, blockSelector, true)) {\r\n if (!('__context' in this))\r\n this.__context = contextType;\r\n }\r\n return original.apply(this, [contextType, ...args]);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n console.error('failed to patch HTMLCanvasElement.prototype.getContext');\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasContextObserver as default };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { saveWebGLVar, serializeArgs } from './serialize-args.js';\n\nfunction patchGLPrototype(prototype, type, cb, blockClass, blockSelector, mirror, win) {\r\n const handlers = [];\r\n const props = Object.getOwnPropertyNames(prototype);\r\n for (const prop of props) {\r\n if ([\r\n 'isContextLost',\r\n 'canvas',\r\n 'drawingBufferWidth',\r\n 'drawingBufferHeight',\r\n ].includes(prop)) {\r\n continue;\r\n }\r\n try {\r\n if (typeof prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(prototype, prop, function (original) {\r\n return function (...args) {\r\n const result = original.apply(this, args);\r\n saveWebGLVar(result, win, this);\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n const mutation = {\r\n type,\r\n property: prop,\r\n args: recordArgs,\r\n };\r\n cb(this.canvas, mutation);\r\n }\r\n return result;\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type,\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return handlers;\r\n}\r\nfunction initCanvasWebGLMutationObserver(cb, win, blockClass, blockSelector, mirror) {\r\n const handlers = [];\r\n handlers.push(...patchGLPrototype(win.WebGLRenderingContext.prototype, CanvasContext.WebGL, cb, blockClass, blockSelector, mirror, win));\r\n if (typeof win.WebGL2RenderingContext !== 'undefined') {\r\n handlers.push(...patchGLPrototype(win.WebGL2RenderingContext.prototype, CanvasContext.WebGL2, cb, blockClass, blockSelector, mirror, win));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvasWebGLMutationObserver as default };\n","var WorkerClass = null;\n\ntry {\n var WorkerThreads =\n typeof module !== 'undefined' && typeof module.require === 'function' && module.require('worker_threads') ||\n typeof __non_webpack_require__ === 'function' && __non_webpack_require__('worker_threads') ||\n typeof require === 'function' && require('worker_threads');\n WorkerClass = WorkerThreads.Worker;\n} catch(e) {} // eslint-disable-line\n\nexport { WorkerClass };\n","var kIsNodeJS = Object.prototype.toString.call(typeof process !== 'undefined' ? process : 0) === '[object process]';\n\nfunction isNodeJS() {\n return kIsNodeJS;\n}\n\nexport { isNodeJS };\n","import { createBase64WorkerFactory as createBase64WorkerFactory$1 } from './_rollup-plugin-web-worker-loader__helper__node__createBase64WorkerFactory.js';\nimport { createBase64WorkerFactory as createBase64WorkerFactory$2 } from './_rollup-plugin-web-worker-loader__helper__browser__createBase64WorkerFactory.js';\nimport { isNodeJS } from './_rollup-plugin-web-worker-loader__helper__auto__isNodeJS.js';\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n if (isNodeJS()) {\n return createBase64WorkerFactory$1(base64, sourcemapArg, enableUnicodeArg);\n }\n return createBase64WorkerFactory$2(base64, sourcemapArg, enableUnicodeArg);\n}\n\nexport { createBase64WorkerFactory };\n","import { createBase64WorkerFactory } from './_rollup-plugin-web-worker-loader__helper__auto__createBase64WorkerFactory.js';\n\nvar WorkerFactory = createBase64WorkerFactory('Lyogcm9sbHVwLXBsdWdpbi13ZWItd29ya2VyLWxvYWRlciAqLwooZnVuY3Rpb24gKCkgewogICAgJ3VzZSBzdHJpY3QnOwoKICAgIC8qISAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAgIENvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLg0KDQogICAgUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55DQogICAgcHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLg0KDQogICAgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEgNCiAgICBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkNCiAgICBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBESVJFQ1QsDQogICAgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NDQogICAgTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1INCiAgICBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SDQogICAgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4NCiAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqLw0KDQogICAgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikgew0KICAgICAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH0NCiAgICAgICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7DQogICAgICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvclsidGhyb3ciXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9DQogICAgICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfQ0KICAgICAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpOw0KICAgICAgICB9KTsNCiAgICB9CgogICAgLyoKICAgICAqIGJhc2U2NC1hcnJheWJ1ZmZlciAxLjAuMSA8aHR0cHM6Ly9naXRodWIuY29tL25pa2xhc3ZoL2Jhc2U2NC1hcnJheWJ1ZmZlcj4KICAgICAqIENvcHlyaWdodCAoYykgMjAyMSBOaWtsYXMgdm9uIEhlcnR6ZW4gPGh0dHBzOi8vaGVydHplbi5jb20+CiAgICAgKiBSZWxlYXNlZCB1bmRlciBNSVQgTGljZW5zZQogICAgICovCiAgICB2YXIgY2hhcnMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLyc7CiAgICAvLyBVc2UgYSBsb29rdXAgdGFibGUgdG8gZmluZCB0aGUgaW5kZXguCiAgICB2YXIgbG9va3VwID0gdHlwZW9mIFVpbnQ4QXJyYXkgPT09ICd1bmRlZmluZWQnID8gW10gOiBuZXcgVWludDhBcnJheSgyNTYpOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFycy5sZW5ndGg7IGkrKykgewogICAgICAgIGxvb2t1cFtjaGFycy5jaGFyQ29kZUF0KGkpXSA9IGk7CiAgICB9CiAgICB2YXIgZW5jb2RlID0gZnVuY3Rpb24gKGFycmF5YnVmZmVyKSB7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXlidWZmZXIpLCBpLCBsZW4gPSBieXRlcy5sZW5ndGgsIGJhc2U2NCA9ICcnOwogICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gMykgewogICAgICAgICAgICBiYXNlNjQgKz0gY2hhcnNbYnl0ZXNbaV0gPj4gMl07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1soKGJ5dGVzW2ldICYgMykgPDwgNCkgfCAoYnl0ZXNbaSArIDFdID4+IDQpXTsKICAgICAgICAgICAgYmFzZTY0ICs9IGNoYXJzWygoYnl0ZXNbaSArIDFdICYgMTUpIDw8IDIpIHwgKGJ5dGVzW2kgKyAyXSA+PiA2KV07CiAgICAgICAgICAgIGJhc2U2NCArPSBjaGFyc1tieXRlc1tpICsgMl0gJiA2M107CiAgICAgICAgfQogICAgICAgIGlmIChsZW4gJSAzID09PSAyKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDEpICsgJz0nOwogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChsZW4gJSAzID09PSAxKSB7CiAgICAgICAgICAgIGJhc2U2NCA9IGJhc2U2NC5zdWJzdHJpbmcoMCwgYmFzZTY0Lmxlbmd0aCAtIDIpICsgJz09JzsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJhc2U2NDsKICAgIH07CgogICAgY29uc3QgbGFzdEJsb2JNYXAgPSBuZXcgTWFwKCk7DQogICAgY29uc3QgdHJhbnNwYXJlbnRCbG9iTWFwID0gbmV3IE1hcCgpOw0KICAgIGZ1bmN0aW9uIGdldFRyYW5zcGFyZW50QmxvYkZvcih3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucykgew0KICAgICAgICByZXR1cm4gX19hd2FpdGVyKHRoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiogKCkgew0KICAgICAgICAgICAgY29uc3QgaWQgPSBgJHt3aWR0aH0tJHtoZWlnaHR9YDsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgaWYgKHRyYW5zcGFyZW50QmxvYk1hcC5oYXMoaWQpKQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJhbnNwYXJlbnRCbG9iTWFwLmdldChpZCk7DQogICAgICAgICAgICAgICAgY29uc3Qgb2Zmc2NyZWVuID0gbmV3IE9mZnNjcmVlbkNhbnZhcyh3aWR0aCwgaGVpZ2h0KTsNCiAgICAgICAgICAgICAgICBvZmZzY3JlZW4uZ2V0Q29udGV4dCgnMmQnKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGFycmF5QnVmZmVyID0geWllbGQgYmxvYi5hcnJheUJ1ZmZlcigpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U2NCA9IGVuY29kZShhcnJheUJ1ZmZlcik7DQogICAgICAgICAgICAgICAgdHJhbnNwYXJlbnRCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICByZXR1cm4gYmFzZTY0Ow0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWxzZSB7DQogICAgICAgICAgICAgICAgcmV0dXJuICcnOw0KICAgICAgICAgICAgfQ0KICAgICAgICB9KTsNCiAgICB9DQogICAgY29uc3Qgd29ya2VyID0gc2VsZjsNCiAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24gKGUpIHsNCiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHsNCiAgICAgICAgICAgIGlmICgnT2Zmc2NyZWVuQ2FudmFzJyBpbiBnbG9iYWxUaGlzKSB7DQogICAgICAgICAgICAgICAgY29uc3QgeyBpZCwgYml0bWFwLCB3aWR0aCwgaGVpZ2h0LCBkYXRhVVJMT3B0aW9ucyB9ID0gZS5kYXRhOw0KICAgICAgICAgICAgICAgIGNvbnN0IHRyYW5zcGFyZW50QmFzZTY0ID0gZ2V0VHJhbnNwYXJlbnRCbG9iRm9yKHdpZHRoLCBoZWlnaHQsIGRhdGFVUkxPcHRpb25zKTsNCiAgICAgICAgICAgICAgICBjb25zdCBvZmZzY3JlZW4gPSBuZXcgT2Zmc2NyZWVuQ2FudmFzKHdpZHRoLCBoZWlnaHQpOw0KICAgICAgICAgICAgICAgIGNvbnN0IGN0eCA9IG9mZnNjcmVlbi5nZXRDb250ZXh0KCcyZCcpOw0KICAgICAgICAgICAgICAgIGN0eC5kcmF3SW1hZ2UoYml0bWFwLCAwLCAwKTsNCiAgICAgICAgICAgICAgICBiaXRtYXAuY2xvc2UoKTsNCiAgICAgICAgICAgICAgICBjb25zdCBibG9iID0geWllbGQgb2Zmc2NyZWVuLmNvbnZlcnRUb0Jsb2IoZGF0YVVSTE9wdGlvbnMpOw0KICAgICAgICAgICAgICAgIGNvbnN0IHR5cGUgPSBibG9iLnR5cGU7DQogICAgICAgICAgICAgICAgY29uc3QgYXJyYXlCdWZmZXIgPSB5aWVsZCBibG9iLmFycmF5QnVmZmVyKCk7DQogICAgICAgICAgICAgICAgY29uc3QgYmFzZTY0ID0gZW5jb2RlKGFycmF5QnVmZmVyKTsNCiAgICAgICAgICAgICAgICBpZiAoIWxhc3RCbG9iTWFwLmhhcyhpZCkgJiYgKHlpZWxkIHRyYW5zcGFyZW50QmFzZTY0KSA9PT0gYmFzZTY0KSB7DQogICAgICAgICAgICAgICAgICAgIGxhc3RCbG9iTWFwLnNldChpZCwgYmFzZTY0KTsNCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtlci5wb3N0TWVzc2FnZSh7IGlkIH0pOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICBpZiAobGFzdEJsb2JNYXAuZ2V0KGlkKSA9PT0gYmFzZTY0KQ0KICAgICAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQgfSk7DQogICAgICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHsNCiAgICAgICAgICAgICAgICAgICAgaWQsDQogICAgICAgICAgICAgICAgICAgIHR5cGUsDQogICAgICAgICAgICAgICAgICAgIGJhc2U2NCwNCiAgICAgICAgICAgICAgICAgICAgd2lkdGgsDQogICAgICAgICAgICAgICAgICAgIGhlaWdodCwNCiAgICAgICAgICAgICAgICB9KTsNCiAgICAgICAgICAgICAgICBsYXN0QmxvYk1hcC5zZXQoaWQsIGJhc2U2NCk7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBlbHNlIHsNCiAgICAgICAgICAgICAgICByZXR1cm4gd29ya2VyLnBvc3RNZXNzYWdlKHsgaWQ6IGUuZGF0YS5pZCB9KTsNCiAgICAgICAgICAgIH0NCiAgICAgICAgfSk7DQogICAgfTsKCn0pKCk7Cgo=', null, false);\n/* eslint-enable */\n\nexport { WorkerFactory as default };\n","import { WorkerClass } from './_rollup-plugin-web-worker-loader__helper__node__WorkerClass.js';\n\nfunction decodeBase64(base64, enableUnicode) {\n return Buffer.from(base64, 'base64').toString(enableUnicode ? 'utf16' : 'utf8');\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n return function WorkerFactory(options) {\n return new WorkerClass(body, Object.assign({}, options, { eval: true }));\n };\n}\n\nexport { createBase64WorkerFactory };\n","function decodeBase64(base64, enableUnicode) {\n var binaryString = atob(base64);\n if (enableUnicode) {\n var binaryView = new Uint8Array(binaryString.length);\n for (var i = 0, n = binaryString.length; i < n; ++i) {\n binaryView[i] = binaryString.charCodeAt(i);\n }\n return String.fromCharCode.apply(null, new Uint16Array(binaryView.buffer));\n }\n return binaryString;\n}\n\nfunction createURL(base64, sourcemapArg, enableUnicodeArg) {\n var sourcemap = sourcemapArg === undefined ? null : sourcemapArg;\n var enableUnicode = enableUnicodeArg === undefined ? false : enableUnicodeArg;\n var source = decodeBase64(base64, enableUnicode);\n var start = source.indexOf('\\n', 10) + 1;\n var body = source.substring(start) + (sourcemap ? '\\/\\/# sourceMappingURL=' + sourcemap : '');\n var blob = new Blob([body], { type: 'application/javascript' });\n return URL.createObjectURL(blob);\n}\n\nfunction createBase64WorkerFactory(base64, sourcemapArg, enableUnicodeArg) {\n var url;\n return function WorkerFactory(options) {\n url = url || createURL(base64, sourcemapArg, enableUnicodeArg);\n return new Worker(url, options);\n };\n}\n\nexport { createBase64WorkerFactory };\n","import { __rest, __awaiter } from './../../../../../../ext/tslib/tslib.es6.js';\nimport { isBlocked } from '../../../utils.js';\nimport { CanvasContext } from '../../../../../types/dist/types.js';\nimport initCanvas2DMutationObserver from './2d.js';\nimport initCanvasContextObserver from './canvas.js';\nimport initCanvasWebGLMutationObserver from './webgl.js';\nimport WorkerFactory from '../../../../../../_virtual/image-bitmap-data-url-worker.js';\n\nclass CanvasManager {\r\n constructor(options) {\r\n this.pendingCanvasMutations = new Map();\r\n this.rafStamps = { latestId: 0, invokeId: null };\r\n this.frozen = false;\r\n this.locked = false;\r\n this.processMutation = (target, mutation) => {\r\n const newFrame = this.rafStamps.invokeId &&\r\n this.rafStamps.latestId !== this.rafStamps.invokeId;\r\n if (newFrame || !this.rafStamps.invokeId)\r\n this.rafStamps.invokeId = this.rafStamps.latestId;\r\n if (!this.pendingCanvasMutations.has(target)) {\r\n this.pendingCanvasMutations.set(target, []);\r\n }\r\n this.pendingCanvasMutations.get(target).push(mutation);\r\n };\r\n const { sampling = 'all', win, blockClass, blockSelector, recordCanvas, dataURLOptions, } = options;\r\n this.mutationCb = options.mutationCb;\r\n this.mirror = options.mirror;\r\n if (recordCanvas && sampling === 'all')\r\n this.initCanvasMutationObserver(win, blockClass, blockSelector);\r\n if (recordCanvas && typeof sampling === 'number')\r\n this.initCanvasFPSObserver(sampling, win, blockClass, blockSelector, {\r\n dataURLOptions,\r\n });\r\n }\r\n reset() {\r\n this.pendingCanvasMutations.clear();\r\n this.resetObservers && this.resetObservers();\r\n }\r\n freeze() {\r\n this.frozen = true;\r\n }\r\n unfreeze() {\r\n this.frozen = false;\r\n }\r\n lock() {\r\n this.locked = true;\r\n }\r\n unlock() {\r\n this.locked = false;\r\n }\r\n initCanvasFPSObserver(fps, win, blockClass, blockSelector, options) {\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const snapshotInProgressMap = new Map();\r\n const worker = new WorkerFactory();\r\n worker.onmessage = (e) => {\r\n const { id } = e.data;\r\n snapshotInProgressMap.set(id, false);\r\n if (!('base64' in e.data))\r\n return;\r\n const { base64, type, width, height } = e.data;\r\n this.mutationCb({\r\n id,\r\n type: CanvasContext['2D'],\r\n commands: [\r\n {\r\n property: 'clearRect',\r\n args: [0, 0, width, height],\r\n },\r\n {\r\n property: 'drawImage',\r\n args: [\r\n {\r\n rr_type: 'ImageBitmap',\r\n args: [\r\n {\r\n rr_type: 'Blob',\r\n data: [{ rr_type: 'ArrayBuffer', base64 }],\r\n type,\r\n },\r\n ],\r\n },\r\n 0,\r\n 0,\r\n ],\r\n },\r\n ],\r\n });\r\n };\r\n const timeBetweenSnapshots = 1000 / fps;\r\n let lastSnapshotTime = 0;\r\n let rafId;\r\n const getCanvas = () => {\r\n const matchedCanvas = [];\r\n win.document.querySelectorAll('canvas').forEach((canvas) => {\r\n if (!isBlocked(canvas, blockClass, blockSelector, true)) {\r\n matchedCanvas.push(canvas);\r\n }\r\n });\r\n return matchedCanvas;\r\n };\r\n const takeCanvasSnapshots = (timestamp) => {\r\n if (lastSnapshotTime &&\r\n timestamp - lastSnapshotTime < timeBetweenSnapshots) {\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n return;\r\n }\r\n lastSnapshotTime = timestamp;\r\n getCanvas()\r\n .forEach((canvas) => __awaiter(this, void 0, void 0, function* () {\r\n var _a;\r\n const id = this.mirror.getId(canvas);\r\n if (snapshotInProgressMap.get(id))\r\n return;\r\n snapshotInProgressMap.set(id, true);\r\n if (['webgl', 'webgl2'].includes(canvas.__context)) {\r\n const context = canvas.getContext(canvas.__context);\r\n if (((_a = context === null || context === void 0 ? void 0 : context.getContextAttributes()) === null || _a === void 0 ? void 0 : _a.preserveDrawingBuffer) === false) {\r\n context === null || context === void 0 ? void 0 : context.clear(context.COLOR_BUFFER_BIT);\r\n }\r\n }\r\n const bitmap = yield createImageBitmap(canvas);\r\n worker.postMessage({\r\n id,\r\n bitmap,\r\n width: canvas.width,\r\n height: canvas.height,\r\n dataURLOptions: options.dataURLOptions,\r\n }, [bitmap]);\r\n }));\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n };\r\n rafId = requestAnimationFrame(takeCanvasSnapshots);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n cancelAnimationFrame(rafId);\r\n };\r\n }\r\n initCanvasMutationObserver(win, blockClass, blockSelector) {\r\n this.startRAFTimestamping();\r\n this.startPendingCanvasMutationFlusher();\r\n const canvasContextReset = initCanvasContextObserver(win, blockClass, blockSelector);\r\n const canvas2DReset = initCanvas2DMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector);\r\n const canvasWebGL1and2Reset = initCanvasWebGLMutationObserver(this.processMutation.bind(this), win, blockClass, blockSelector, this.mirror);\r\n this.resetObservers = () => {\r\n canvasContextReset();\r\n canvas2DReset();\r\n canvasWebGL1and2Reset();\r\n };\r\n }\r\n startPendingCanvasMutationFlusher() {\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n startRAFTimestamping() {\r\n const setLatestRAFTimestamp = (timestamp) => {\r\n this.rafStamps.latestId = timestamp;\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n };\r\n requestAnimationFrame(setLatestRAFTimestamp);\r\n }\r\n flushPendingCanvasMutations() {\r\n this.pendingCanvasMutations.forEach((values, canvas) => {\r\n const id = this.mirror.getId(canvas);\r\n this.flushPendingCanvasMutationFor(canvas, id);\r\n });\r\n requestAnimationFrame(() => this.flushPendingCanvasMutations());\r\n }\r\n flushPendingCanvasMutationFor(canvas, id) {\r\n if (this.frozen || this.locked) {\r\n return;\r\n }\r\n const valuesWithType = this.pendingCanvasMutations.get(canvas);\r\n if (!valuesWithType || id === -1)\r\n return;\r\n const values = valuesWithType.map((value) => {\r\n const rest = __rest(value, [\"type\"]);\r\n return rest;\r\n });\r\n const { type } = valuesWithType[0];\r\n this.mutationCb({ id, type, commands: values });\r\n this.pendingCanvasMutations.delete(canvas);\r\n }\r\n}\n\nexport { CanvasManager };\n","import { CanvasContext } from '../../../../../types/dist/types.js';\nimport { patch, isBlocked, hookSetter } from '../../../utils.js';\nimport { serializeArgs } from './serialize-args.js';\n\nfunction initCanvas2DMutationObserver(cb, win, blockClass, blockSelector) {\r\n const handlers = [];\r\n const props2D = Object.getOwnPropertyNames(win.CanvasRenderingContext2D.prototype);\r\n for (const prop of props2D) {\r\n try {\r\n if (typeof win.CanvasRenderingContext2D.prototype[prop] !== 'function') {\r\n continue;\r\n }\r\n const restoreHandler = patch(win.CanvasRenderingContext2D.prototype, prop, function (original) {\r\n return function (...args) {\r\n if (!isBlocked(this.canvas, blockClass, blockSelector, true)) {\r\n setTimeout(() => {\r\n const recordArgs = serializeArgs([...args], win, this);\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: recordArgs,\r\n });\r\n }, 0);\r\n }\r\n return original.apply(this, args);\r\n };\r\n });\r\n handlers.push(restoreHandler);\r\n }\r\n catch (_a) {\r\n const hookHandler = hookSetter(win.CanvasRenderingContext2D.prototype, prop, {\r\n set(v) {\r\n cb(this.canvas, {\r\n type: CanvasContext['2D'],\r\n property: prop,\r\n args: [v],\r\n setter: true,\r\n });\r\n },\r\n });\r\n handlers.push(hookHandler);\r\n }\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n };\r\n}\n\nexport { initCanvas2DMutationObserver as default };\n","import { getCssRuleString } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { StyleSheetMirror } from '../utils.js';\n\nclass StylesheetManager {\r\n constructor(options) {\r\n this.trackedLinkElements = new WeakSet();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.mutationCb = options.mutationCb;\r\n this.adoptedStyleSheetCb = options.adoptedStyleSheetCb;\r\n }\r\n attachLinkElement(linkEl, childSn) {\r\n if ('_cssText' in childSn.attributes)\r\n this.mutationCb({\r\n adds: [],\r\n removes: [],\r\n texts: [],\r\n attributes: [\r\n {\r\n id: childSn.id,\r\n attributes: childSn\r\n .attributes,\r\n },\r\n ],\r\n });\r\n this.trackLinkElement(linkEl);\r\n }\r\n trackLinkElement(linkEl) {\r\n if (this.trackedLinkElements.has(linkEl))\r\n return;\r\n this.trackedLinkElements.add(linkEl);\r\n this.trackStylesheetInLinkElement(linkEl);\r\n }\r\n adoptStyleSheets(sheets, hostId) {\r\n if (sheets.length === 0)\r\n return;\r\n const adoptedStyleSheetData = {\r\n id: hostId,\r\n styleIds: [],\r\n };\r\n const styles = [];\r\n for (const sheet of sheets) {\r\n let styleId;\r\n if (!this.styleMirror.has(sheet)) {\r\n styleId = this.styleMirror.add(sheet);\r\n const rules = Array.from(sheet.rules || CSSRule);\r\n styles.push({\r\n styleId,\r\n rules: rules.map((r, index) => {\r\n return {\r\n rule: getCssRuleString(r),\r\n index,\r\n };\r\n }),\r\n });\r\n }\r\n else\r\n styleId = this.styleMirror.getId(sheet);\r\n adoptedStyleSheetData.styleIds.push(styleId);\r\n }\r\n if (styles.length > 0)\r\n adoptedStyleSheetData.styles = styles;\r\n this.adoptedStyleSheetCb(adoptedStyleSheetData);\r\n }\r\n reset() {\r\n this.styleMirror.reset();\r\n this.trackedLinkElements = new WeakSet();\r\n }\r\n trackStylesheetInLinkElement(linkEl) {\r\n }\r\n}\n\nexport { StylesheetManager };\n","import { createMirror, snapshot } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { initObservers, mutationBuffers } from './observer.js';\nimport { polyfill, on, getWindowWidth, getWindowHeight, isSerializedIframe, isSerializedStylesheet, hasShadowRoot } from '../utils.js';\nimport { EventType, IncrementalSource } from '../../../types/dist/types.js';\nimport { IframeManager } from './iframe-manager.js';\nimport { ShadowDomManager } from './shadow-dom-manager.js';\nimport { CanvasManager } from './observers/canvas/canvas-manager.js';\nimport { StylesheetManager } from './stylesheet-manager.js';\n\nfunction wrapEvent(e) {\r\n return Object.assign(Object.assign({}, e), { timestamp: Date.now() });\r\n}\r\nlet wrappedEmit;\r\nlet takeFullSnapshot;\r\nlet canvasManager;\r\nlet recording = false;\r\nconst mirror = createMirror();\r\nfunction record(options = {}) {\r\n const { emit, checkoutEveryNms, checkoutEveryNth, blockClass = 'rr-block', blockSelector = null, ignoreClass = 'rr-ignore', maskTextClass = 'rr-mask', maskTextSelector = null, inlineStylesheet = true, maskAllInputs, maskInputOptions: _maskInputOptions, slimDOMOptions: _slimDOMOptions, maskInputFn, maskTextFn, hooks, packFn, sampling = {}, dataURLOptions = {}, mousemoveWait, recordCanvas = false, recordCrossOriginIframes = false, userTriggeredOnInput = false, collectFonts = false, inlineImages = false, plugins, keepIframeSrcFn = () => false, ignoreCSSAttributes = new Set([]), } = options;\r\n const inEmittingFrame = recordCrossOriginIframes\r\n ? window.parent === window\r\n : true;\r\n let passEmitsToParent = false;\r\n if (!inEmittingFrame) {\r\n try {\r\n window.parent.document;\r\n passEmitsToParent = false;\r\n }\r\n catch (e) {\r\n passEmitsToParent = true;\r\n }\r\n }\r\n if (inEmittingFrame && !emit) {\r\n throw new Error('emit function is required');\r\n }\r\n if (mousemoveWait !== undefined && sampling.mousemove === undefined) {\r\n sampling.mousemove = mousemoveWait;\r\n }\r\n mirror.reset();\r\n const maskInputOptions = maskAllInputs === true\r\n ? {\r\n color: true,\r\n date: true,\r\n 'datetime-local': true,\r\n email: true,\r\n month: true,\r\n number: true,\r\n range: true,\r\n search: true,\r\n tel: true,\r\n text: true,\r\n time: true,\r\n url: true,\r\n week: true,\r\n textarea: true,\r\n select: true,\r\n password: true,\r\n }\r\n : _maskInputOptions !== undefined\r\n ? _maskInputOptions\r\n : { password: true };\r\n const slimDOMOptions = _slimDOMOptions === true || _slimDOMOptions === 'all'\r\n ? {\r\n script: true,\r\n comment: true,\r\n headFavicon: true,\r\n headWhitespace: true,\r\n headMetaSocial: true,\r\n headMetaRobots: true,\r\n headMetaHttpEquiv: true,\r\n headMetaVerification: true,\r\n headMetaAuthorship: _slimDOMOptions === 'all',\r\n headMetaDescKeywords: _slimDOMOptions === 'all',\r\n }\r\n : _slimDOMOptions\r\n ? _slimDOMOptions\r\n : {};\r\n polyfill();\r\n let lastFullSnapshotEvent;\r\n let incrementalSnapshotCount = 0;\r\n const eventProcessor = (e) => {\r\n for (const plugin of plugins || []) {\r\n if (plugin.eventProcessor) {\r\n e = plugin.eventProcessor(e);\r\n }\r\n }\r\n if (packFn) {\r\n e = packFn(e);\r\n }\r\n return e;\r\n };\r\n wrappedEmit = (e, isCheckout) => {\r\n var _a;\r\n if (((_a = mutationBuffers[0]) === null || _a === void 0 ? void 0 : _a.isFrozen()) &&\r\n e.type !== EventType.FullSnapshot &&\r\n !(e.type === EventType.IncrementalSnapshot &&\r\n e.data.source === IncrementalSource.Mutation)) {\r\n mutationBuffers.forEach((buf) => buf.unfreeze());\r\n }\r\n if (inEmittingFrame) {\r\n emit === null || emit === void 0 ? void 0 : emit(eventProcessor(e), isCheckout);\r\n }\r\n else if (passEmitsToParent) {\r\n const message = {\r\n type: 'rrweb',\r\n event: eventProcessor(e),\r\n isCheckout,\r\n };\r\n window.parent.postMessage(message, '*');\r\n }\r\n if (e.type === EventType.FullSnapshot) {\r\n lastFullSnapshotEvent = e;\r\n incrementalSnapshotCount = 0;\r\n }\r\n else if (e.type === EventType.IncrementalSnapshot) {\r\n if (e.data.source === IncrementalSource.Mutation &&\r\n e.data.isAttachIframe) {\r\n return;\r\n }\r\n incrementalSnapshotCount++;\r\n const exceedCount = checkoutEveryNth && incrementalSnapshotCount >= checkoutEveryNth;\r\n const exceedTime = checkoutEveryNms &&\r\n e.timestamp - lastFullSnapshotEvent.timestamp > checkoutEveryNms;\r\n if (exceedCount || exceedTime) {\r\n takeFullSnapshot(true);\r\n }\r\n }\r\n };\r\n const wrappedMutationEmit = (m) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Mutation }, m),\r\n }));\r\n };\r\n const wrappedScrollEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Scroll }, p),\r\n }));\r\n const wrappedCanvasMutationEmit = (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.CanvasMutation }, p),\r\n }));\r\n const wrappedAdoptedStyleSheetEmit = (a) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.AdoptedStyleSheet }, a),\r\n }));\r\n const stylesheetManager = new StylesheetManager({\r\n mutationCb: wrappedMutationEmit,\r\n adoptedStyleSheetCb: wrappedAdoptedStyleSheetEmit,\r\n });\r\n const iframeManager = new IframeManager({\r\n mirror,\r\n mutationCb: wrappedMutationEmit,\r\n stylesheetManager: stylesheetManager,\r\n recordCrossOriginIframes,\r\n wrappedEmit,\r\n });\r\n for (const plugin of plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({\r\n nodeMirror: mirror,\r\n crossOriginIframeMirror: iframeManager.crossOriginIframeMirror,\r\n crossOriginIframeStyleMirror: iframeManager.crossOriginIframeStyleMirror,\r\n });\r\n }\r\n canvasManager = new CanvasManager({\r\n recordCanvas,\r\n mutationCb: wrappedCanvasMutationEmit,\r\n win: window,\r\n blockClass,\r\n blockSelector,\r\n mirror,\r\n sampling: sampling.canvas,\r\n dataURLOptions,\r\n });\r\n const shadowDomManager = new ShadowDomManager({\r\n mutationCb: wrappedMutationEmit,\r\n scrollCb: wrappedScrollEmit,\r\n bypassOptions: {\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskInputOptions,\r\n dataURLOptions,\r\n maskTextFn,\r\n maskInputFn,\r\n recordCanvas,\r\n inlineImages,\r\n sampling,\r\n slimDOMOptions,\r\n iframeManager,\r\n stylesheetManager,\r\n canvasManager,\r\n keepIframeSrcFn,\r\n },\r\n mirror,\r\n });\r\n takeFullSnapshot = (isCheckout = false) => {\r\n var _a, _b, _c, _d, _e, _f;\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Meta,\r\n data: {\r\n href: window.location.href,\r\n width: getWindowWidth(),\r\n height: getWindowHeight(),\r\n },\r\n }), isCheckout);\r\n stylesheetManager.reset();\r\n mutationBuffers.forEach((buf) => buf.lock());\r\n const node = snapshot(document, {\r\n mirror,\r\n blockClass,\r\n blockSelector,\r\n maskTextClass,\r\n maskTextSelector,\r\n inlineStylesheet,\r\n maskAllInputs: maskInputOptions,\r\n maskTextFn,\r\n slimDOM: slimDOMOptions,\r\n dataURLOptions,\r\n recordCanvas,\r\n inlineImages,\r\n onSerialize: (n) => {\r\n if (isSerializedIframe(n, mirror)) {\r\n iframeManager.addIframe(n);\r\n }\r\n if (isSerializedStylesheet(n, mirror)) {\r\n stylesheetManager.trackLinkElement(n);\r\n }\r\n if (hasShadowRoot(n)) {\r\n shadowDomManager.addShadowRoot(n.shadowRoot, document);\r\n }\r\n },\r\n onIframeLoad: (iframe, childSn) => {\r\n iframeManager.attachIframe(iframe, childSn);\r\n shadowDomManager.observeAttachShadow(iframe);\r\n },\r\n onStylesheetLoad: (linkEl, childSn) => {\r\n stylesheetManager.attachLinkElement(linkEl, childSn);\r\n },\r\n keepIframeSrcFn,\r\n });\r\n if (!node) {\r\n return console.warn('Failed to snapshot the document');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.FullSnapshot,\r\n data: {\r\n node,\r\n initialOffset: {\r\n left: window.pageXOffset !== undefined\r\n ? window.pageXOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollLeft) ||\r\n ((_b = (_a = document === null || document === void 0 ? void 0 : document.body) === null || _a === void 0 ? void 0 : _a.parentElement) === null || _b === void 0 ? void 0 : _b.scrollLeft) ||\r\n ((_c = document === null || document === void 0 ? void 0 : document.body) === null || _c === void 0 ? void 0 : _c.scrollLeft) ||\r\n 0,\r\n top: window.pageYOffset !== undefined\r\n ? window.pageYOffset\r\n : (document === null || document === void 0 ? void 0 : document.documentElement.scrollTop) ||\r\n ((_e = (_d = document === null || document === void 0 ? void 0 : document.body) === null || _d === void 0 ? void 0 : _d.parentElement) === null || _e === void 0 ? void 0 : _e.scrollTop) ||\r\n ((_f = document === null || document === void 0 ? void 0 : document.body) === null || _f === void 0 ? void 0 : _f.scrollTop) ||\r\n 0,\r\n },\r\n },\r\n }));\r\n mutationBuffers.forEach((buf) => buf.unlock());\r\n if (document.adoptedStyleSheets && document.adoptedStyleSheets.length > 0)\r\n stylesheetManager.adoptStyleSheets(document.adoptedStyleSheets, mirror.getId(document));\r\n };\r\n try {\r\n const handlers = [];\r\n handlers.push(on('DOMContentLoaded', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.DomContentLoaded,\r\n data: {},\r\n }));\r\n }));\r\n const observe = (doc) => {\r\n var _a;\r\n return initObservers({\r\n mutationCb: wrappedMutationEmit,\r\n mousemoveCb: (positions, source) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: {\r\n source,\r\n positions,\r\n },\r\n })),\r\n mouseInteractionCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MouseInteraction }, d),\r\n })),\r\n scrollCb: wrappedScrollEmit,\r\n viewportResizeCb: (d) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.ViewportResize }, d),\r\n })),\r\n inputCb: (v) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Input }, v),\r\n })),\r\n mediaInteractionCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.MediaInteraction }, p),\r\n })),\r\n styleSheetRuleCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleSheetRule }, r),\r\n })),\r\n styleDeclarationCb: (r) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.StyleDeclaration }, r),\r\n })),\r\n canvasMutationCb: wrappedCanvasMutationEmit,\r\n fontCb: (p) => wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Font }, p),\r\n })),\r\n selectionCb: (p) => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.IncrementalSnapshot,\r\n data: Object.assign({ source: IncrementalSource.Selection }, p),\r\n }));\r\n },\r\n blockClass,\r\n ignoreClass,\r\n maskTextClass,\r\n maskTextSelector,\r\n maskInputOptions,\r\n inlineStylesheet,\r\n sampling,\r\n recordCanvas,\r\n inlineImages,\r\n userTriggeredOnInput,\r\n collectFonts,\r\n doc,\r\n maskInputFn,\r\n maskTextFn,\r\n keepIframeSrcFn,\r\n blockSelector,\r\n slimDOMOptions,\r\n dataURLOptions,\r\n mirror,\r\n iframeManager,\r\n stylesheetManager,\r\n shadowDomManager,\r\n canvasManager,\r\n ignoreCSSAttributes,\r\n plugins: ((_a = plugins === null || plugins === void 0 ? void 0 : plugins.filter((p) => p.observer)) === null || _a === void 0 ? void 0 : _a.map((p) => ({\r\n observer: p.observer,\r\n options: p.options,\r\n callback: (payload) => wrappedEmit(wrapEvent({\r\n type: EventType.Plugin,\r\n data: {\r\n plugin: p.name,\r\n payload,\r\n },\r\n })),\r\n }))) || [],\r\n }, hooks);\r\n };\r\n iframeManager.addLoadListener((iframeEl) => {\r\n handlers.push(observe(iframeEl.contentDocument));\r\n });\r\n const init = () => {\r\n takeFullSnapshot();\r\n handlers.push(observe(document));\r\n recording = true;\r\n };\r\n if (document.readyState === 'interactive' ||\r\n document.readyState === 'complete') {\r\n init();\r\n }\r\n else {\r\n handlers.push(on('load', () => {\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Load,\r\n data: {},\r\n }));\r\n init();\r\n }, window));\r\n }\r\n return () => {\r\n handlers.forEach((h) => h());\r\n recording = false;\r\n };\r\n }\r\n catch (error) {\r\n console.warn(error);\r\n }\r\n}\r\nrecord.addCustomEvent = (tag, payload) => {\r\n if (!recording) {\r\n throw new Error('please add custom event after start recording');\r\n }\r\n wrappedEmit(wrapEvent({\r\n type: EventType.Custom,\r\n data: {\r\n tag,\r\n payload,\r\n },\r\n }));\r\n};\r\nrecord.freezePage = () => {\r\n mutationBuffers.forEach((buf) => buf.freeze());\r\n};\r\nrecord.takeFullSnapshot = (isCheckout) => {\r\n if (!recording) {\r\n throw new Error('please take full snapshot after start recording');\r\n }\r\n takeFullSnapshot(isCheckout);\r\n};\r\nrecord.mirror = mirror;\n\nexport { record as default };\n","import record from './record/index.js';\nexport { default as record } from './record/index.js';\nimport '../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport '../../rrdom/es/rrdom.js';\nimport * as utils from './utils.js';\nexport { utils };\nexport { _mirror as mirror } from './utils.js';\nimport './../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst { addCustomEvent } = record;\r\nconst { freezePage } = record;\n\nexport { addCustomEvent, freezePage };\n","// DEFLATE is a complex format; to read this code, you should probably check the RFC first:\n\n// aliases for shorter compressed code (most minifers don't do this)\nvar u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;\n// fixed length extra bits\nvar fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);\n// fixed distance extra bits\n// see fleb note\nvar fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);\n// code length index map\nvar clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);\n// get base, reverse index map from extra bits\nvar freb = function (eb, start) {\n var b = new u16(31);\n for (var i = 0; i < 31; ++i) {\n b[i] = start += 1 << eb[i - 1];\n }\n // numbers here are at max 18 bits\n var r = new u32(b[30]);\n for (var i = 1; i < 30; ++i) {\n for (var j = b[i]; j < b[i + 1]; ++j) {\n r[j] = ((j - b[i]) << 5) | i;\n }\n }\n return [b, r];\n};\nvar _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];\n// we can ignore the fact that the other numbers are wrong; they never happen anyway\nfl[28] = 258, revfl[258] = 28;\nvar _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];\n// map of value to reverse (assuming 16 bits)\nvar rev = new u16(32768);\nfor (var i = 0; i < 32768; ++i) {\n // reverse table algorithm from SO\n var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);\n x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);\n x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);\n rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;\n}\n// create huffman tree from u8 \"map\": index -> code length for code index\n// mb (max bits) must be at most 15\n// TODO: optimize/split up?\nvar hMap = (function (cd, mb, r) {\n var s = cd.length;\n // index\n var i = 0;\n // u16 \"map\": index -> # of codes with bit length = index\n var l = new u16(mb);\n // length of cd must be 288 (total # of codes)\n for (; i < s; ++i)\n ++l[cd[i] - 1];\n // u16 \"map\": index -> minimum code for bit length = index\n var le = new u16(mb);\n for (i = 0; i < mb; ++i) {\n le[i] = (le[i - 1] + l[i - 1]) << 1;\n }\n var co;\n if (r) {\n // u16 \"map\": index -> number of actual bits, symbol for code\n co = new u16(1 << mb);\n // bits to remove for reverser\n var rvb = 15 - mb;\n for (i = 0; i < s; ++i) {\n // ignore 0 lengths\n if (cd[i]) {\n // num encoding both symbol and bits read\n var sv = (i << 4) | cd[i];\n // free bits\n var r_1 = mb - cd[i];\n // start value\n var v = le[cd[i] - 1]++ << r_1;\n // m is end value\n for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {\n // every 16 bit value starting with the code yields the same result\n co[rev[v] >>> rvb] = sv;\n }\n }\n }\n }\n else {\n co = new u16(s);\n for (i = 0; i < s; ++i)\n co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);\n }\n return co;\n});\n// fixed length tree\nvar flt = new u8(288);\nfor (var i = 0; i < 144; ++i)\n flt[i] = 8;\nfor (var i = 144; i < 256; ++i)\n flt[i] = 9;\nfor (var i = 256; i < 280; ++i)\n flt[i] = 7;\nfor (var i = 280; i < 288; ++i)\n flt[i] = 8;\n// fixed distance tree\nvar fdt = new u8(32);\nfor (var i = 0; i < 32; ++i)\n fdt[i] = 5;\n// fixed length map\nvar flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);\n// fixed distance map\nvar fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);\n// find max of array\nvar max = function (a) {\n var m = a[0];\n for (var i = 1; i < a.length; ++i) {\n if (a[i] > m)\n m = a[i];\n }\n return m;\n};\n// read d, starting at bit p and mask with m\nvar bits = function (d, p, m) {\n var o = (p / 8) >> 0;\n return ((d[o] | (d[o + 1] << 8)) >>> (p & 7)) & m;\n};\n// read d, starting at bit p continuing for at least 16 bits\nvar bits16 = function (d, p) {\n var o = (p / 8) >> 0;\n return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >>> (p & 7));\n};\n// get end of byte\nvar shft = function (p) { return ((p / 8) >> 0) + (p & 7 && 1); };\n// typed array slice - allows garbage collector to free original reference,\n// while being more compatible than .slice\nvar slc = function (v, s, e) {\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n // can't use .constructor in case user-supplied\n var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\n// expands raw DEFLATE data\nvar inflt = function (dat, buf, st) {\n // source length\n var sl = dat.length;\n // have to estimate size\n var noBuf = !buf || st;\n // no state\n var noSt = !st || st.i;\n if (!st)\n st = {};\n // Assumes roughly 33% compression ratio average\n if (!buf)\n buf = new u8(sl * 3);\n // ensure buffer can fit at least l elements\n var cbuf = function (l) {\n var bl = buf.length;\n // need to increase size to fit\n if (l > bl) {\n // Double or set to necessary, whichever is greater\n var nbuf = new u8(Math.max(bl * 2, l));\n nbuf.set(buf);\n buf = nbuf;\n }\n };\n // last chunk bitpos bytes\n var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;\n // total bits\n var tbts = sl * 8;\n do {\n if (!lm) {\n // BFINAL - this is only 1 when last chunk is next\n st.f = final = bits(dat, pos, 1);\n // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman\n var type = bits(dat, pos + 1, 3);\n pos += 3;\n if (!type) {\n // go to end of byte boundary\n var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;\n if (t > sl) {\n if (noSt)\n throw 'unexpected EOF';\n break;\n }\n // ensure size\n if (noBuf)\n cbuf(bt + l);\n // Copy over uncompressed data\n buf.set(dat.subarray(s, t), bt);\n // Get new bitpos, update byte count\n st.b = bt += l, st.p = pos = t * 8;\n continue;\n }\n else if (type == 1)\n lm = flrm, dm = fdrm, lbt = 9, dbt = 5;\n else if (type == 2) {\n // literal lengths\n var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;\n var tl = hLit + bits(dat, pos + 5, 31) + 1;\n pos += 14;\n // length+distance tree\n var ldt = new u8(tl);\n // code length tree\n var clt = new u8(19);\n for (var i = 0; i < hcLen; ++i) {\n // use index map to get real code\n clt[clim[i]] = bits(dat, pos + i * 3, 7);\n }\n pos += hcLen * 3;\n // code lengths bits\n var clb = max(clt), clbmsk = (1 << clb) - 1;\n if (!noSt && pos + tl * (clb + 7) > tbts)\n break;\n // code lengths map\n var clm = hMap(clt, clb, 1);\n for (var i = 0; i < tl;) {\n var r = clm[bits(dat, pos, clbmsk)];\n // bits read\n pos += r & 15;\n // symbol\n var s = r >>> 4;\n // code length to copy\n if (s < 16) {\n ldt[i++] = s;\n }\n else {\n // copy count\n var c = 0, n = 0;\n if (s == 16)\n n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];\n else if (s == 17)\n n = 3 + bits(dat, pos, 7), pos += 3;\n else if (s == 18)\n n = 11 + bits(dat, pos, 127), pos += 7;\n while (n--)\n ldt[i++] = c;\n }\n }\n // length tree distance tree\n var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);\n // max length bits\n lbt = max(lt);\n // max dist bits\n dbt = max(dt);\n lm = hMap(lt, lbt, 1);\n dm = hMap(dt, dbt, 1);\n }\n else\n throw 'invalid block type';\n if (pos > tbts)\n throw 'unexpected EOF';\n }\n // Make sure the buffer can hold this + the largest possible addition\n // Maximum chunk size (practically, theoretically infinite) is 2^17;\n if (noBuf)\n cbuf(bt + 131072);\n var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;\n var mxa = lbt + dbt + 18;\n while (noSt || pos + mxa < tbts) {\n // bits read, code\n var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;\n pos += c & 15;\n if (pos > tbts)\n throw 'unexpected EOF';\n if (!c)\n throw 'invalid length/literal';\n if (sym < 256)\n buf[bt++] = sym;\n else if (sym == 256) {\n lm = null;\n break;\n }\n else {\n var add = sym - 254;\n // no extra bits needed if less\n if (sym > 264) {\n // index\n var i = sym - 257, b = fleb[i];\n add = bits(dat, pos, (1 << b) - 1) + fl[i];\n pos += b;\n }\n // dist\n var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;\n if (!d)\n throw 'invalid distance';\n pos += d & 15;\n var dt = fd[dsym];\n if (dsym > 3) {\n var b = fdeb[dsym];\n dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;\n }\n if (pos > tbts)\n throw 'unexpected EOF';\n if (noBuf)\n cbuf(bt + 131072);\n var end = bt + add;\n for (; bt < end; bt += 4) {\n buf[bt] = buf[bt - dt];\n buf[bt + 1] = buf[bt + 1 - dt];\n buf[bt + 2] = buf[bt + 2 - dt];\n buf[bt + 3] = buf[bt + 3 - dt];\n }\n bt = end;\n }\n }\n st.l = lm, st.p = pos, st.b = bt;\n if (lm)\n final = 1, st.m = lbt, st.d = dm, st.n = dbt;\n } while (!final);\n return bt == buf.length ? buf : slc(buf, 0, bt);\n};\n// starting at p, write the minimum number of bits that can hold v to d\nvar wbits = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n};\n// starting at p, write the minimum number of bits (>8) that can hold v to d\nvar wbits16 = function (d, p, v) {\n v <<= p & 7;\n var o = (p / 8) >> 0;\n d[o] |= v;\n d[o + 1] |= v >>> 8;\n d[o + 2] |= v >>> 16;\n};\n// creates code lengths from a frequency table\nvar hTree = function (d, mb) {\n // Need extra info to make a tree\n var t = [];\n for (var i = 0; i < d.length; ++i) {\n if (d[i])\n t.push({ s: i, f: d[i] });\n }\n var s = t.length;\n var t2 = t.slice();\n if (!s)\n return [new u8(0), 0];\n if (s == 1) {\n var v = new u8(t[0].s + 1);\n v[t[0].s] = 1;\n return [v, 1];\n }\n t.sort(function (a, b) { return a.f - b.f; });\n // after i2 reaches last ind, will be stopped\n // freq must be greater than largest possible number of symbols\n t.push({ s: -1, f: 25001 });\n var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;\n t[0] = { s: -1, f: l.f + r.f, l: l, r: r };\n // efficient algorithm from UZIP.js\n // i0 is lookbehind, i2 is lookahead - after processing two low-freq\n // symbols that combined have high freq, will start processing i2 (high-freq,\n // non-composite) symbols instead\n // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/\n while (i1 != s - 1) {\n l = t[t[i0].f < t[i2].f ? i0++ : i2++];\n r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];\n t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };\n }\n var maxSym = t2[0].s;\n for (var i = 1; i < s; ++i) {\n if (t2[i].s > maxSym)\n maxSym = t2[i].s;\n }\n // code lengths\n var tr = new u16(maxSym + 1);\n // max bits in tree\n var mbt = ln(t[i1 - 1], tr, 0);\n if (mbt > mb) {\n // more algorithms from UZIP.js\n // TODO: find out how this code works (debt)\n // ind debt\n var i = 0, dt = 0;\n // left cost\n var lft = mbt - mb, cst = 1 << lft;\n t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });\n for (; i < s; ++i) {\n var i2_1 = t2[i].s;\n if (tr[i2_1] > mb) {\n dt += cst - (1 << (mbt - tr[i2_1]));\n tr[i2_1] = mb;\n }\n else\n break;\n }\n dt >>>= lft;\n while (dt > 0) {\n var i2_2 = t2[i].s;\n if (tr[i2_2] < mb)\n dt -= 1 << (mb - tr[i2_2]++ - 1);\n else\n ++i;\n }\n for (; i >= 0 && dt; --i) {\n var i2_3 = t2[i].s;\n if (tr[i2_3] == mb) {\n --tr[i2_3];\n ++dt;\n }\n }\n mbt = mb;\n }\n return [new u8(tr), mbt];\n};\n// get the max length and assign length codes\nvar ln = function (n, l, d) {\n return n.s == -1\n ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))\n : (l[n.s] = d);\n};\n// length codes generation\nvar lc = function (c) {\n var s = c.length;\n // Note that the semicolon was intentional\n while (s && !c[--s])\n ;\n var cl = new u16(++s);\n // ind num streak\n var cli = 0, cln = c[0], cls = 1;\n var w = function (v) { cl[cli++] = v; };\n for (var i = 1; i <= s; ++i) {\n if (c[i] == cln && i != s)\n ++cls;\n else {\n if (!cln && cls > 2) {\n for (; cls > 138; cls -= 138)\n w(32754);\n if (cls > 2) {\n w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);\n cls = 0;\n }\n }\n else if (cls > 3) {\n w(cln), --cls;\n for (; cls > 6; cls -= 6)\n w(8304);\n if (cls > 2)\n w(((cls - 3) << 5) | 8208), cls = 0;\n }\n while (cls--)\n w(cln);\n cls = 1;\n cln = c[i];\n }\n }\n return [cl.subarray(0, cli), s];\n};\n// calculate the length of output from tree, code lengths\nvar clen = function (cf, cl) {\n var l = 0;\n for (var i = 0; i < cl.length; ++i)\n l += cf[i] * cl[i];\n return l;\n};\n// writes a fixed block\n// returns the new bit pos\nvar wfblk = function (out, pos, dat) {\n // no need to write 00 as type: TypedArray defaults to 0\n var s = dat.length;\n var o = shft(pos + 2);\n out[o] = s & 255;\n out[o + 1] = s >>> 8;\n out[o + 2] = out[o] ^ 255;\n out[o + 3] = out[o + 1] ^ 255;\n for (var i = 0; i < s; ++i)\n out[o + i + 4] = dat[i];\n return (o + 4 + s) * 8;\n};\n// writes a block\nvar wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {\n wbits(out, p++, final);\n ++lf[256];\n var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1];\n var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1];\n var _c = lc(dlt), lclt = _c[0], nlc = _c[1];\n var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];\n var lcfreq = new u16(19);\n for (var i = 0; i < lclt.length; ++i)\n lcfreq[lclt[i] & 31]++;\n for (var i = 0; i < lcdt.length; ++i)\n lcfreq[lcdt[i] & 31]++;\n var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];\n var nlcc = 19;\n for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)\n ;\n var flen = (bl + 5) << 3;\n var ftlen = clen(lf, flt) + clen(df, fdt) + eb;\n var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);\n if (flen <= ftlen && flen <= dtlen)\n return wfblk(out, p, dat.subarray(bs, bs + bl));\n var lm, ll, dm, dl;\n wbits(out, p, 1 + (dtlen < ftlen)), p += 2;\n if (dtlen < ftlen) {\n lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;\n var llm = hMap(lct, mlcb, 0);\n wbits(out, p, nlc - 257);\n wbits(out, p + 5, ndc - 1);\n wbits(out, p + 10, nlcc - 4);\n p += 14;\n for (var i = 0; i < nlcc; ++i)\n wbits(out, p + 3 * i, lct[clim[i]]);\n p += 3 * nlcc;\n var lcts = [lclt, lcdt];\n for (var it = 0; it < 2; ++it) {\n var clct = lcts[it];\n for (var i = 0; i < clct.length; ++i) {\n var len = clct[i] & 31;\n wbits(out, p, llm[len]), p += lct[len];\n if (len > 15)\n wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;\n }\n }\n }\n else {\n lm = flm, ll = flt, dm = fdm, dl = fdt;\n }\n for (var i = 0; i < li; ++i) {\n if (syms[i] > 255) {\n var len = (syms[i] >>> 18) & 31;\n wbits16(out, p, lm[len + 257]), p += ll[len + 257];\n if (len > 7)\n wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];\n var dst = syms[i] & 31;\n wbits16(out, p, dm[dst]), p += dl[dst];\n if (dst > 3)\n wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];\n }\n else {\n wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];\n }\n }\n wbits16(out, p, lm[256]);\n return p + ll[256];\n};\n// deflate options (nice << 13) | chain\nvar deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);\n// empty\nvar et = /*#__PURE__*/ new u8(0);\n// compresses data into a raw DEFLATE buffer\nvar dflt = function (dat, lvl, plvl, pre, post, lst) {\n var s = dat.length;\n var o = new u8(pre + s + 5 * (1 + Math.floor(s / 7000)) + post);\n // writing to this writes to the output buffer\n var w = o.subarray(pre, o.length - post);\n var pos = 0;\n if (!lvl || s < 8) {\n for (var i = 0; i <= s; i += 65535) {\n // end\n var e = i + 65535;\n if (e < s) {\n // write full block\n pos = wfblk(w, pos, dat.subarray(i, e));\n }\n else {\n // write final block\n w[i] = lst;\n pos = wfblk(w, pos, dat.subarray(i, s));\n }\n }\n }\n else {\n var opt = deo[lvl - 1];\n var n = opt >>> 13, c = opt & 8191;\n var msk_1 = (1 << plvl) - 1;\n // prev 2-byte val map curr 2-byte val map\n var prev = new u16(32768), head = new u16(msk_1 + 1);\n var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;\n var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };\n // 24576 is an arbitrary number of maximum symbols per block\n // 424 buffer for last block\n var syms = new u32(25000);\n // length/literal freq distance freq\n var lf = new u16(288), df = new u16(32);\n // l/lcnt exbits index l/lind waitdx bitpos\n var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;\n for (; i < s; ++i) {\n // hash value\n var hv = hsh(i);\n // index mod 32768\n var imod = i & 32767;\n // previous index with this value\n var pimod = head[hv];\n prev[imod] = pimod;\n head[hv] = imod;\n // We always should modify head and prev, but only add symbols if\n // this data is not yet processed (\"wait\" for wait index)\n if (wi <= i) {\n // bytes remaining\n var rem = s - i;\n if ((lc_1 > 7000 || li > 24576) && rem > 423) {\n pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);\n li = lc_1 = eb = 0, bs = i;\n for (var j = 0; j < 286; ++j)\n lf[j] = 0;\n for (var j = 0; j < 30; ++j)\n df[j] = 0;\n }\n // len dist chain\n var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;\n if (rem > 2 && hv == hsh(i - dif)) {\n var maxn = Math.min(n, rem) - 1;\n var maxd = Math.min(32767, i);\n // max possible length\n // not capped at dif because decompressors implement \"rolling\" index population\n var ml = Math.min(258, rem);\n while (dif <= maxd && --ch_1 && imod != pimod) {\n if (dat[i + l] == dat[i + l - dif]) {\n var nl = 0;\n for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)\n ;\n if (nl > l) {\n l = nl, d = dif;\n // break out early when we reach \"nice\" (we are satisfied enough)\n if (nl > maxn)\n break;\n // now, find the rarest 2-byte sequence within this\n // length of literals and search for that instead.\n // Much faster than just using the start\n var mmd = Math.min(dif, nl - 2);\n var md = 0;\n for (var j = 0; j < mmd; ++j) {\n var ti = (i - dif + j + 32768) & 32767;\n var pti = prev[ti];\n var cd = (ti - pti + 32768) & 32767;\n if (cd > md)\n md = cd, pimod = ti;\n }\n }\n }\n // check the previous match\n imod = pimod, pimod = prev[imod];\n dif += (imod - pimod + 32768) & 32767;\n }\n }\n // d will be nonzero only when a match was found\n if (d) {\n // store both dist and len data in one Uint32\n // Make sure this is recognized as a len/dist with 28th bit (2^28)\n syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];\n var lin = revfl[l] & 31, din = revfd[d] & 31;\n eb += fleb[lin] + fdeb[din];\n ++lf[257 + lin];\n ++df[din];\n wi = i + l;\n ++lc_1;\n }\n else {\n syms[li++] = dat[i];\n ++lf[dat[i]];\n }\n }\n }\n pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);\n // this is the easiest way to avoid needing to maintain state\n if (!lst)\n pos = wfblk(w, pos, et);\n }\n return slc(o, 0, pre + shft(pos) + post);\n};\n// Alder32\nvar adler = function () {\n var a = 1, b = 0;\n return {\n p: function (d) {\n // closures have awful performance\n var n = a, m = b;\n var l = d.length;\n for (var i = 0; i != l;) {\n var e = Math.min(i + 5552, l);\n for (; i < e; ++i)\n n += d[i], m += n;\n n %= 65521, m %= 65521;\n }\n a = n, b = m;\n },\n d: function () { return ((a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8)) + ((a & 255) << 23) * 2; }\n };\n};\n// deflate with opts\nvar dopt = function (dat, opt, pre, post, st) {\n return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st);\n};\n// write bytes\nvar wbytes = function (d, b, v) {\n for (; v; ++b)\n d[b] = v, v >>>= 8;\n};\n// zlib header\nvar zlh = function (c, o) {\n var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;\n c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1);\n};\n// zlib valid\nvar zlv = function (d) {\n if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31))\n throw 'invalid zlib data';\n if (d[1] & 32)\n throw 'invalid zlib data: preset dictionaries not supported';\n};\n/**\n * Compress data with Zlib\n * @param data The data to compress\n * @param opts The compression options\n * @returns The zlib-compressed version of the data\n */\nfunction zlibSync(data, opts) {\n if (opts === void 0) { opts = {}; }\n var a = adler();\n a.p(data);\n var d = dopt(data, opts, 2, 4);\n return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;\n}\n/**\n * Expands Zlib data\n * @param data The data to decompress\n * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.\n * @returns The decompressed version of the data\n */\nfunction unzlibSync(data, out) {\n return inflt((zlv(data), data.subarray(2, -4)), out);\n}\n/**\n * Converts a string into a Uint8Array for use with compression/decompression methods\n * @param str The string to encode\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless decoding a binary string.\n * @returns The string encoded in UTF-8/Latin-1 binary\n */\nfunction strToU8(str, latin1) {\n var l = str.length;\n if (!latin1 && typeof TextEncoder != 'undefined')\n return new TextEncoder().encode(str);\n var ar = new u8(str.length + (str.length >>> 1));\n var ai = 0;\n var w = function (v) { ar[ai++] = v; };\n for (var i = 0; i < l; ++i) {\n if (ai + 5 > ar.length) {\n var n = new u8(ai + 8 + ((l - i) << 1));\n n.set(ar);\n ar = n;\n }\n var c = str.charCodeAt(i);\n if (c < 128 || latin1)\n w(c);\n else if (c < 2048)\n w(192 | (c >>> 6)), w(128 | (c & 63));\n else if (c > 55295 && c < 57344)\n c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),\n w(240 | (c >>> 18)), w(128 | ((c >>> 12) & 63)), w(128 | ((c >>> 6) & 63)), w(128 | (c & 63));\n else\n w(224 | (c >>> 12)), w(128 | ((c >>> 6) & 63)), w(128 | (c & 63));\n }\n return slc(ar, 0, ai);\n}\n/**\n * Converts a Uint8Array to a string\n * @param dat The data to decode to string\n * @param latin1 Whether or not to interpret the data as Latin-1. This should\n * not need to be true unless encoding to binary string.\n * @returns The original UTF-8/Latin-1 string\n */\nfunction strFromU8(dat, latin1) {\n var r = '';\n if (!latin1 && typeof TextDecoder != 'undefined')\n return new TextDecoder().decode(dat);\n for (var i = 0; i < dat.length;) {\n var c = dat[i++];\n if (c < 128 || latin1)\n r += String.fromCharCode(c);\n else if (c < 224)\n r += String.fromCharCode((c & 31) << 6 | (dat[i++] & 63));\n else if (c < 240)\n r += String.fromCharCode((c & 15) << 12 | (dat[i++] & 63) << 6 | (dat[i++] & 63));\n else\n c = ((c & 15) << 18 | (dat[i++] & 63) << 12 | (dat[i++] & 63) << 6 | (dat[i++] & 63)) - 65536,\n r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));\n }\n return r;\n}\n\nexport { strFromU8, strToU8, unzlibSync, zlibSync };\n","const MARK = 'v1';\n\nexport { MARK };\n","import { strFromU8, zlibSync, strToU8 } from './../../../../ext/fflate/esm/browser.js';\nimport { MARK } from './base.js';\n\nconst pack = (event) => {\r\n const _e = Object.assign(Object.assign({}, event), { v: MARK });\r\n return strFromU8(zlibSync(strToU8(JSON.stringify(_e))), true);\r\n};\n\nexport { pack };\n","import { strFromU8, unzlibSync, strToU8 } from './../../../../ext/fflate/esm/browser.js';\nimport { MARK } from './base.js';\n\nconst unpack = (raw) => {\r\n if (typeof raw !== 'string') {\r\n return raw;\r\n }\r\n try {\r\n const e = JSON.parse(raw);\r\n if (e.timestamp) {\r\n return e;\r\n }\r\n }\r\n catch (error) {\r\n }\r\n try {\r\n const e = JSON.parse(strFromU8(unzlibSync(strToU8(raw, true))));\r\n if (e.v === MARK) {\r\n return e;\r\n }\r\n throw new Error(`These events were packed with packer ${e.v} which is incompatible with current packer ${MARK}.`);\r\n }\r\n catch (error) {\r\n console.error(error);\r\n throw new Error('Unknown data format.');\r\n }\r\n};\n\nexport { unpack };\n","class StackFrame {\r\n constructor(obj) {\r\n this.fileName = obj.fileName || '';\r\n this.functionName = obj.functionName || '';\r\n this.lineNumber = obj.lineNumber;\r\n this.columnNumber = obj.columnNumber;\r\n }\r\n toString() {\r\n const lineNumber = this.lineNumber || '';\r\n const columnNumber = this.columnNumber || '';\r\n if (this.functionName)\r\n return `${this.functionName} (${this.fileName}:${lineNumber}:${columnNumber})`;\r\n return `${this.fileName}:${lineNumber}:${columnNumber}`;\r\n }\r\n}\r\nconst FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+:\\d+/;\r\nconst CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+:\\d+|\\(native\\))/m;\r\nconst SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code])?$/;\r\nconst ErrorStackParser = {\r\n parse: function (error) {\r\n if (!error) {\r\n return [];\r\n }\r\n if (typeof error.stacktrace !== 'undefined' ||\r\n typeof error['opera#sourceloc'] !== 'undefined') {\r\n return this.parseOpera(error);\r\n }\r\n else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\r\n return this.parseV8OrIE(error);\r\n }\r\n else if (error.stack) {\r\n return this.parseFFOrSafari(error);\r\n }\r\n else {\r\n throw new Error('Cannot parse given Error object');\r\n }\r\n },\r\n extractLocation: function (urlLike) {\r\n if (urlLike.indexOf(':') === -1) {\r\n return [urlLike];\r\n }\r\n const regExp = /(.+?)(?::(\\d+))?(?::(\\d+))?$/;\r\n const parts = regExp.exec(urlLike.replace(/[()]/g, ''));\r\n if (!parts)\r\n throw new Error(`Cannot parse given url: ${urlLike}`);\r\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\r\n },\r\n parseV8OrIE: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return !!line.match(CHROME_IE_STACK_REGEXP);\r\n }, this);\r\n return filtered.map(function (line) {\r\n if (line.indexOf('(eval ') > -1) {\r\n line = line\r\n .replace(/eval code/g, 'eval')\r\n .replace(/(\\(eval at [^()]*)|(\\),.*$)/g, '');\r\n }\r\n let sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\r\n const location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\r\n sanitizedLine = location\r\n ? sanitizedLine.replace(location[0], '')\r\n : sanitizedLine;\r\n const tokens = sanitizedLine.split(/\\s+/).slice(1);\r\n const locationParts = this.extractLocation(location ? location[1] : tokens.pop());\r\n const functionName = tokens.join(' ') || undefined;\r\n const fileName = ['eval', '<anonymous>'].indexOf(locationParts[0]) > -1\r\n ? undefined\r\n : locationParts[0];\r\n return new StackFrame({\r\n functionName,\r\n fileName,\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }, this);\r\n },\r\n parseFFOrSafari: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\r\n }, this);\r\n return filtered.map(function (line) {\r\n if (line.indexOf(' > eval') > -1) {\r\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval:\\d+:\\d+/g, ':$1');\r\n }\r\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\r\n return new StackFrame({\r\n functionName: line,\r\n });\r\n }\r\n else {\r\n const functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\r\n const matches = line.match(functionNameRegex);\r\n const functionName = matches && matches[1] ? matches[1] : undefined;\r\n const locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\r\n return new StackFrame({\r\n functionName,\r\n fileName: locationParts[0],\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }\r\n }, this);\r\n },\r\n parseOpera: function (e) {\r\n if (!e.stacktrace ||\r\n (e.message.indexOf('\\n') > -1 &&\r\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\r\n return this.parseOpera9(e);\r\n }\r\n else if (!e.stack) {\r\n return this.parseOpera10(e);\r\n }\r\n else {\r\n return this.parseOpera11(e);\r\n }\r\n },\r\n parseOpera9: function (e) {\r\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\r\n const lines = e.message.split('\\n');\r\n const result = [];\r\n for (let i = 2, len = lines.length; i < len; i += 2) {\r\n const match = lineRE.exec(lines[i]);\r\n if (match) {\r\n result.push(new StackFrame({\r\n fileName: match[2],\r\n lineNumber: parseFloat(match[1]),\r\n }));\r\n }\r\n }\r\n return result;\r\n },\r\n parseOpera10: function (e) {\r\n const lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\r\n const lines = e.stacktrace.split('\\n');\r\n const result = [];\r\n for (let i = 0, len = lines.length; i < len; i += 2) {\r\n const match = lineRE.exec(lines[i]);\r\n if (match) {\r\n result.push(new StackFrame({\r\n functionName: match[3] || undefined,\r\n fileName: match[2],\r\n lineNumber: parseFloat(match[1]),\r\n }));\r\n }\r\n }\r\n return result;\r\n },\r\n parseOpera11: function (error) {\r\n const filtered = error.stack.split('\\n').filter(function (line) {\r\n return (!!line.match(FIREFOX_SAFARI_STACK_REGEXP) &&\r\n !line.match(/^Error created at/));\r\n }, this);\r\n return filtered.map(function (line) {\r\n const tokens = line.split('@');\r\n const locationParts = this.extractLocation(tokens.pop());\r\n const functionCall = tokens.shift() || '';\r\n const functionName = functionCall\r\n .replace(/<anonymous function(: (\\w+))?>/, '$2')\r\n .replace(/\\([^)]*\\)/g, '') || undefined;\r\n return new StackFrame({\r\n functionName,\r\n fileName: locationParts[0],\r\n lineNumber: locationParts[1],\r\n columnNumber: locationParts[2],\r\n });\r\n }, this);\r\n },\r\n};\n\nexport { ErrorStackParser, StackFrame };\n","function pathToSelector(node) {\r\n if (!node || !node.outerHTML) {\r\n return '';\r\n }\r\n let path = '';\r\n while (node.parentElement) {\r\n let name = node.localName;\r\n if (!name) {\r\n break;\r\n }\r\n name = name.toLowerCase();\r\n const parent = node.parentElement;\r\n const domSiblings = [];\r\n if (parent.children && parent.children.length > 0) {\r\n for (let i = 0; i < parent.children.length; i++) {\r\n const sibling = parent.children[i];\r\n if (sibling.localName && sibling.localName.toLowerCase) {\r\n if (sibling.localName.toLowerCase() === name) {\r\n domSiblings.push(sibling);\r\n }\r\n }\r\n }\r\n }\r\n if (domSiblings.length > 1) {\r\n name += `:eq(${domSiblings.indexOf(node)})`;\r\n }\r\n path = name + (path ? '>' + path : '');\r\n node = parent;\r\n }\r\n return path;\r\n}\r\nfunction isObject(obj) {\r\n return Object.prototype.toString.call(obj) === '[object Object]';\r\n}\r\nfunction isObjTooDeep(obj, limit) {\r\n if (limit === 0) {\r\n return true;\r\n }\r\n const keys = Object.keys(obj);\r\n for (const key of keys) {\r\n if (isObject(obj[key]) &&\r\n isObjTooDeep(obj[key], limit - 1)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction stringify(obj, stringifyOptions) {\r\n const options = {\r\n numOfKeysLimit: 50,\r\n depthOfLimit: 4,\r\n };\r\n Object.assign(options, stringifyOptions);\r\n const stack = [];\r\n const keys = [];\r\n return JSON.stringify(obj, function (key, value) {\r\n if (stack.length > 0) {\r\n const thisPos = stack.indexOf(this);\r\n ~thisPos ? stack.splice(thisPos + 1) : stack.push(this);\r\n ~thisPos ? keys.splice(thisPos, Infinity, key) : keys.push(key);\r\n if (~stack.indexOf(value)) {\r\n if (stack[0] === value) {\r\n value = '[Circular ~]';\r\n }\r\n else {\r\n value =\r\n '[Circular ~.' +\r\n keys.slice(0, stack.indexOf(value)).join('.') +\r\n ']';\r\n }\r\n }\r\n }\r\n else {\r\n stack.push(value);\r\n }\r\n if (value === null)\r\n return value;\r\n if (value === undefined)\r\n return 'undefined';\r\n if (shouldIgnore(value)) {\r\n return toString(value);\r\n }\r\n if (value instanceof Event) {\r\n const eventResult = {};\r\n for (const eventKey in value) {\r\n const eventValue = value[eventKey];\r\n if (Array.isArray(eventValue)) {\r\n eventResult[eventKey] = pathToSelector((eventValue.length ? eventValue[0] : null));\r\n }\r\n else {\r\n eventResult[eventKey] = eventValue;\r\n }\r\n }\r\n return eventResult;\r\n }\r\n else if (value instanceof Node) {\r\n if (value instanceof HTMLElement) {\r\n return value ? value.outerHTML : '';\r\n }\r\n return value.nodeName;\r\n }\r\n else if (value instanceof Error) {\r\n return value.stack\r\n ? value.stack + '\\nEnd of stack for Error object'\r\n : value.name + ': ' + value.message;\r\n }\r\n return value;\r\n });\r\n function shouldIgnore(_obj) {\r\n if (isObject(_obj) && Object.keys(_obj).length > options.numOfKeysLimit) {\r\n return true;\r\n }\r\n if (typeof _obj === 'function') {\r\n return true;\r\n }\r\n if (isObject(_obj) &&\r\n isObjTooDeep(_obj, options.depthOfLimit)) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n function toString(_obj) {\r\n let str = _obj.toString();\r\n if (options.stringLengthLimit && str.length > options.stringLengthLimit) {\r\n str = `${str.slice(0, options.stringLengthLimit)}...`;\r\n }\r\n return str;\r\n }\r\n}\n\nexport { stringify };\n","import { patch } from '../../../utils.js';\nimport { ErrorStackParser } from './error-stack-parser.js';\nimport { stringify } from './stringify.js';\n\nconst defaultLogOptions = {\r\n level: [\r\n 'assert',\r\n 'clear',\r\n 'count',\r\n 'countReset',\r\n 'debug',\r\n 'dir',\r\n 'dirxml',\r\n 'error',\r\n 'group',\r\n 'groupCollapsed',\r\n 'groupEnd',\r\n 'info',\r\n 'log',\r\n 'table',\r\n 'time',\r\n 'timeEnd',\r\n 'timeLog',\r\n 'trace',\r\n 'warn',\r\n ],\r\n lengthThreshold: 1000,\r\n logger: 'console',\r\n};\r\nfunction initLogObserver(cb, win, options) {\r\n const logOptions = (options\r\n ? Object.assign({}, defaultLogOptions, options)\r\n : defaultLogOptions);\r\n const loggerType = logOptions.logger;\r\n if (!loggerType) {\r\n return () => {\r\n };\r\n }\r\n let logger;\r\n if (typeof loggerType === 'string') {\r\n logger = win[loggerType];\r\n }\r\n else {\r\n logger = loggerType;\r\n }\r\n let logCount = 0;\r\n const cancelHandlers = [];\r\n if (logOptions.level.includes('error')) {\r\n if (window) {\r\n const errorHandler = (event) => {\r\n const message = event.message, error = event.error;\r\n const trace = ErrorStackParser.parse(error).map((stackFrame) => stackFrame.toString());\r\n const payload = [stringify(message, logOptions.stringifyOptions)];\r\n cb({\r\n level: 'error',\r\n trace,\r\n payload,\r\n });\r\n };\r\n window.addEventListener('error', errorHandler);\r\n cancelHandlers.push(() => {\r\n if (window)\r\n window.removeEventListener('error', errorHandler);\r\n });\r\n }\r\n }\r\n for (const levelType of logOptions.level) {\r\n cancelHandlers.push(replace(logger, levelType));\r\n }\r\n return () => {\r\n cancelHandlers.forEach((h) => h());\r\n };\r\n function replace(_logger, level) {\r\n if (!_logger[level]) {\r\n return () => {\r\n };\r\n }\r\n return patch(_logger, level, (original) => {\r\n return (...args) => {\r\n original.apply(this, args);\r\n try {\r\n const trace = ErrorStackParser.parse(new Error())\r\n .map((stackFrame) => stackFrame.toString())\r\n .splice(1);\r\n const payload = args.map((s) => stringify(s, logOptions.stringifyOptions));\r\n logCount++;\r\n if (logCount < logOptions.lengthThreshold) {\r\n cb({\r\n level,\r\n trace,\r\n payload,\r\n });\r\n }\r\n else if (logCount === logOptions.lengthThreshold) {\r\n cb({\r\n level: 'warn',\r\n trace: [],\r\n payload: [\r\n stringify('The number of log records reached the threshold.'),\r\n ],\r\n });\r\n }\r\n }\r\n catch (error) {\r\n original('rrweb logger error:', error, ...args);\r\n }\r\n };\r\n });\r\n }\r\n}\r\nconst PLUGIN_NAME = 'rrweb/console@1';\r\nconst getRecordConsolePlugin = (options) => ({\r\n name: PLUGIN_NAME,\r\n observer: initLogObserver,\r\n options: options,\r\n});\n\nexport { PLUGIN_NAME, getRecordConsolePlugin };\n","import { PLUGIN_NAME } from '../record/index.js';\nimport { EventType, IncrementalSource } from '../../../../../types/dist/types.js';\n\nconst ORIGINAL_ATTRIBUTE_NAME = '__rrweb_original__';\r\nconst defaultLogConfig = {\r\n level: [\r\n 'assert',\r\n 'clear',\r\n 'count',\r\n 'countReset',\r\n 'debug',\r\n 'dir',\r\n 'dirxml',\r\n 'error',\r\n 'group',\r\n 'groupCollapsed',\r\n 'groupEnd',\r\n 'info',\r\n 'log',\r\n 'table',\r\n 'time',\r\n 'timeEnd',\r\n 'timeLog',\r\n 'trace',\r\n 'warn',\r\n ],\r\n replayLogger: undefined,\r\n};\r\nclass LogReplayPlugin {\r\n constructor(config) {\r\n this.config = Object.assign(defaultLogConfig, config);\r\n }\r\n getConsoleLogger() {\r\n const replayLogger = {};\r\n for (const level of this.config.level) {\r\n if (level === 'trace') {\r\n replayLogger[level] = (data) => {\r\n const logger = console.log[ORIGINAL_ATTRIBUTE_NAME]\r\n ? console.log[ORIGINAL_ATTRIBUTE_NAME]\r\n : console.log;\r\n logger(...data.payload.map((s) => JSON.parse(s)), this.formatMessage(data));\r\n };\r\n }\r\n else {\r\n replayLogger[level] = (data) => {\r\n const logger = console[level][ORIGINAL_ATTRIBUTE_NAME]\r\n ? console[level][ORIGINAL_ATTRIBUTE_NAME]\r\n : console[level];\r\n logger(...data.payload.map((s) => JSON.parse(s)), this.formatMessage(data));\r\n };\r\n }\r\n }\r\n return replayLogger;\r\n }\r\n formatMessage(data) {\r\n if (data.trace.length === 0) {\r\n return '';\r\n }\r\n const stackPrefix = '\\n\\tat ';\r\n let result = stackPrefix;\r\n result += data.trace.join(stackPrefix);\r\n return result;\r\n }\r\n}\r\nconst getReplayConsolePlugin = (options) => {\r\n const replayLogger = (options === null || options === void 0 ? void 0 : options.replayLogger) || new LogReplayPlugin(options).getConsoleLogger();\r\n return {\r\n handler(event, _isSync, context) {\r\n let logData = null;\r\n if (event.type === EventType.IncrementalSnapshot &&\r\n event.data.source === IncrementalSource.Log) {\r\n logData = event.data;\r\n }\r\n else if (event.type === EventType.Plugin &&\r\n event.data.plugin === PLUGIN_NAME) {\r\n logData = event.data.payload;\r\n }\r\n if (logData) {\r\n try {\r\n if (typeof replayLogger[logData.level] === 'function') {\r\n replayLogger[logData.level](logData);\r\n }\r\n }\r\n catch (error) {\r\n if (context.replayer.config.showWarning) {\r\n console.warn(error);\r\n }\r\n }\r\n }\r\n },\r\n };\r\n};\n\nexport { getReplayConsolePlugin };\n","var NodeType$1;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"Document\"] = 0] = \"Document\";\r\n NodeType[NodeType[\"DocumentType\"] = 1] = \"DocumentType\";\r\n NodeType[NodeType[\"Element\"] = 2] = \"Element\";\r\n NodeType[NodeType[\"Text\"] = 3] = \"Text\";\r\n NodeType[NodeType[\"CDATA\"] = 4] = \"CDATA\";\r\n NodeType[NodeType[\"Comment\"] = 5] = \"Comment\";\r\n})(NodeType$1 || (NodeType$1 = {}));\nvar Mirror$1 = (function () {\r\n function Mirror() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n Mirror.prototype.getId = function (n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n var id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n };\r\n Mirror.prototype.getNode = function (id) {\r\n return this.idNodeMap.get(id) || null;\r\n };\r\n Mirror.prototype.getIds = function () {\r\n return Array.from(this.idNodeMap.keys());\r\n };\r\n Mirror.prototype.getMeta = function (n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n };\r\n Mirror.prototype.removeNodeFromMap = function (n) {\r\n var _this = this;\r\n var id = this.getId(n);\r\n this.idNodeMap[\"delete\"](id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach(function (childNode) {\r\n return _this.removeNodeFromMap(childNode);\r\n });\r\n }\r\n };\r\n Mirror.prototype.has = function (id) {\r\n return this.idNodeMap.has(id);\r\n };\r\n Mirror.prototype.hasNode = function (node) {\r\n return this.nodeMetaMap.has(node);\r\n };\r\n Mirror.prototype.add = function (n, meta) {\r\n var id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n };\r\n Mirror.prototype.replace = function (id, n) {\r\n var oldNode = this.getNode(id);\r\n if (oldNode) {\r\n var meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n };\r\n Mirror.prototype.reset = function () {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n };\r\n return Mirror;\r\n}());\r\nfunction createMirror$1() {\r\n return new Mirror$1();\r\n}\n\nfunction parseCSSText(cssText) {\r\n const res = {};\r\n const listDelimiter = /;(?![^(]*\\))/g;\r\n const propertyDelimiter = /:(.+)/;\r\n const comment = /\\/\\*.*?\\*\\//g;\r\n cssText\r\n .replace(comment, '')\r\n .split(listDelimiter)\r\n .forEach(function (item) {\r\n if (item) {\r\n const tmp = item.split(propertyDelimiter);\r\n tmp.length > 1 && (res[camelize(tmp[0].trim())] = tmp[1].trim());\r\n }\r\n });\r\n return res;\r\n}\r\nfunction toCSSText(style) {\r\n const properties = [];\r\n for (const name in style) {\r\n const value = style[name];\r\n if (typeof value !== 'string')\r\n continue;\r\n const normalizedName = hyphenate(name);\r\n properties.push(`${normalizedName}: ${value};`);\r\n }\r\n return properties.join(' ');\r\n}\r\nconst camelizeRE = /-([a-z])/g;\r\nconst CUSTOM_PROPERTY_REGEX = /^--[a-zA-Z0-9-]+$/;\r\nconst camelize = (str) => {\r\n if (CUSTOM_PROPERTY_REGEX.test(str))\r\n return str;\r\n return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));\r\n};\r\nconst hyphenateRE = /\\B([A-Z])/g;\r\nconst hyphenate = (str) => {\r\n return str.replace(hyphenateRE, '-$1').toLowerCase();\r\n};\n\nclass BaseRRNode {\r\n constructor(..._args) {\r\n this.childNodes = [];\r\n this.parentElement = null;\r\n this.parentNode = null;\r\n this.ELEMENT_NODE = NodeType.ELEMENT_NODE;\r\n this.TEXT_NODE = NodeType.TEXT_NODE;\r\n }\r\n get firstChild() {\r\n return this.childNodes[0] || null;\r\n }\r\n get lastChild() {\r\n return this.childNodes[this.childNodes.length - 1] || null;\r\n }\r\n get nextSibling() {\r\n const parentNode = this.parentNode;\r\n if (!parentNode)\r\n return null;\r\n const siblings = parentNode.childNodes;\r\n const index = siblings.indexOf(this);\r\n return siblings[index + 1] || null;\r\n }\r\n contains(node) {\r\n if (node === this)\r\n return true;\r\n for (const child of this.childNodes) {\r\n if (child.contains(node))\r\n return true;\r\n }\r\n return false;\r\n }\r\n appendChild(_newChild) {\r\n throw new Error(`RRDomException: Failed to execute 'appendChild' on 'RRNode': This RRNode type does not support this method.`);\r\n }\r\n insertBefore(_newChild, _refChild) {\r\n throw new Error(`RRDomException: Failed to execute 'insertBefore' on 'RRNode': This RRNode type does not support this method.`);\r\n }\r\n removeChild(_node) {\r\n throw new Error(`RRDomException: Failed to execute 'removeChild' on 'RRNode': This RRNode type does not support this method.`);\r\n }\r\n toString() {\r\n return 'RRNode';\r\n }\r\n}\r\nfunction BaseRRDocumentImpl(RRNodeClass) {\r\n return class BaseRRDocument extends RRNodeClass {\r\n constructor() {\r\n super(...arguments);\r\n this.nodeType = NodeType.DOCUMENT_NODE;\r\n this.nodeName = '#document';\r\n this.compatMode = 'CSS1Compat';\r\n this.RRNodeType = NodeType$1.Document;\r\n this.textContent = null;\r\n }\r\n get documentElement() {\r\n return (this.childNodes.find((node) => node.RRNodeType === NodeType$1.Element &&\r\n node.tagName === 'HTML') || null);\r\n }\r\n get body() {\r\n var _a;\r\n return (((_a = this.documentElement) === null || _a === void 0 ? void 0 : _a.childNodes.find((node) => node.RRNodeType === NodeType$1.Element &&\r\n node.tagName === 'BODY')) || null);\r\n }\r\n get head() {\r\n var _a;\r\n return (((_a = this.documentElement) === null || _a === void 0 ? void 0 : _a.childNodes.find((node) => node.RRNodeType === NodeType$1.Element &&\r\n node.tagName === 'HEAD')) || null);\r\n }\r\n get implementation() {\r\n return this;\r\n }\r\n get firstElementChild() {\r\n return this.documentElement;\r\n }\r\n appendChild(childNode) {\r\n const nodeType = childNode.RRNodeType;\r\n if (nodeType === NodeType$1.Element ||\r\n nodeType === NodeType$1.DocumentType) {\r\n if (this.childNodes.some((s) => s.RRNodeType === nodeType)) {\r\n throw new Error(`RRDomException: Failed to execute 'appendChild' on 'RRNode': Only one ${nodeType === NodeType$1.Element ? 'RRElement' : 'RRDoctype'} on RRDocument allowed.`);\r\n }\r\n }\r\n childNode.parentElement = null;\r\n childNode.parentNode = this;\r\n this.childNodes.push(childNode);\r\n return childNode;\r\n }\r\n insertBefore(newChild, refChild) {\r\n const nodeType = newChild.RRNodeType;\r\n if (nodeType === NodeType$1.Element ||\r\n nodeType === NodeType$1.DocumentType) {\r\n if (this.childNodes.some((s) => s.RRNodeType === nodeType)) {\r\n throw new Error(`RRDomException: Failed to execute 'insertBefore' on 'RRNode': Only one ${nodeType === NodeType$1.Element ? 'RRElement' : 'RRDoctype'} on RRDocument allowed.`);\r\n }\r\n }\r\n if (refChild === null)\r\n return this.appendChild(newChild);\r\n const childIndex = this.childNodes.indexOf(refChild);\r\n if (childIndex == -1)\r\n throw new Error(\"Failed to execute 'insertBefore' on 'RRNode': The RRNode before which the new node is to be inserted is not a child of this RRNode.\");\r\n this.childNodes.splice(childIndex, 0, newChild);\r\n newChild.parentElement = null;\r\n newChild.parentNode = this;\r\n return newChild;\r\n }\r\n removeChild(node) {\r\n const indexOfChild = this.childNodes.indexOf(node);\r\n if (indexOfChild === -1)\r\n throw new Error(\"Failed to execute 'removeChild' on 'RRDocument': The RRNode to be removed is not a child of this RRNode.\");\r\n this.childNodes.splice(indexOfChild, 1);\r\n node.parentElement = null;\r\n node.parentNode = null;\r\n return node;\r\n }\r\n open() {\r\n this.childNodes = [];\r\n }\r\n close() {\r\n }\r\n write(content) {\r\n let publicId;\r\n if (content ===\r\n '<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"\">')\r\n publicId = '-//W3C//DTD XHTML 1.0 Transitional//EN';\r\n else if (content ===\r\n '<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\" \"\">')\r\n publicId = '-//W3C//DTD HTML 4.0 Transitional//EN';\r\n if (publicId) {\r\n const doctype = this.createDocumentType('html', publicId, '');\r\n this.open();\r\n this.appendChild(doctype);\r\n }\r\n }\r\n createDocument(_namespace, _qualifiedName, _doctype) {\r\n return new BaseRRDocument();\r\n }\r\n createDocumentType(qualifiedName, publicId, systemId) {\r\n const doctype = new (BaseRRDocumentTypeImpl(BaseRRNode))(qualifiedName, publicId, systemId);\r\n doctype.ownerDocument = this;\r\n return doctype;\r\n }\r\n createElement(tagName) {\r\n const element = new (BaseRRElementImpl(BaseRRNode))(tagName);\r\n element.ownerDocument = this;\r\n return element;\r\n }\r\n createElementNS(_namespaceURI, qualifiedName) {\r\n return this.createElement(qualifiedName);\r\n }\r\n createTextNode(data) {\r\n const text = new (BaseRRTextImpl(BaseRRNode))(data);\r\n text.ownerDocument = this;\r\n return text;\r\n }\r\n createComment(data) {\r\n const comment = new (BaseRRCommentImpl(BaseRRNode))(data);\r\n comment.ownerDocument = this;\r\n return comment;\r\n }\r\n createCDATASection(data) {\r\n const CDATASection = new (BaseRRCDATASectionImpl(BaseRRNode))(data);\r\n CDATASection.ownerDocument = this;\r\n return CDATASection;\r\n }\r\n toString() {\r\n return 'RRDocument';\r\n }\r\n };\r\n}\r\nfunction BaseRRDocumentTypeImpl(RRNodeClass) {\r\n return class BaseRRDocumentType extends RRNodeClass {\r\n constructor(qualifiedName, publicId, systemId) {\r\n super();\r\n this.nodeType = NodeType.DOCUMENT_TYPE_NODE;\r\n this.RRNodeType = NodeType$1.DocumentType;\r\n this.textContent = null;\r\n this.name = qualifiedName;\r\n this.publicId = publicId;\r\n this.systemId = systemId;\r\n this.nodeName = qualifiedName;\r\n }\r\n toString() {\r\n return 'RRDocumentType';\r\n }\r\n };\r\n}\r\nfunction BaseRRElementImpl(RRNodeClass) {\r\n return class BaseRRElement extends RRNodeClass {\r\n constructor(tagName) {\r\n super();\r\n this.nodeType = NodeType.ELEMENT_NODE;\r\n this.RRNodeType = NodeType$1.Element;\r\n this.attributes = {};\r\n this.shadowRoot = null;\r\n this.tagName = tagName.toUpperCase();\r\n this.nodeName = tagName.toUpperCase();\r\n }\r\n get textContent() {\r\n let result = '';\r\n this.childNodes.forEach((node) => (result += node.textContent));\r\n return result;\r\n }\r\n set textContent(textContent) {\r\n this.childNodes = [this.ownerDocument.createTextNode(textContent)];\r\n }\r\n get classList() {\r\n return new ClassList(this.attributes.class, (newClassName) => {\r\n this.attributes.class = newClassName;\r\n });\r\n }\r\n get id() {\r\n return this.attributes.id || '';\r\n }\r\n get className() {\r\n return this.attributes.class || '';\r\n }\r\n get style() {\r\n const style = (this.attributes.style\r\n ? parseCSSText(this.attributes.style)\r\n : {});\r\n const hyphenateRE = /\\B([A-Z])/g;\r\n style.setProperty = (name, value, priority) => {\r\n if (hyphenateRE.test(name))\r\n return;\r\n const normalizedName = camelize(name);\r\n if (!value)\r\n delete style[normalizedName];\r\n else\r\n style[normalizedName] = value;\r\n if (priority === 'important')\r\n style[normalizedName] += ' !important';\r\n this.attributes.style = toCSSText(style);\r\n };\r\n style.removeProperty = (name) => {\r\n if (hyphenateRE.test(name))\r\n return '';\r\n const normalizedName = camelize(name);\r\n const value = style[normalizedName] || '';\r\n delete style[normalizedName];\r\n this.attributes.style = toCSSText(style);\r\n return value;\r\n };\r\n return style;\r\n }\r\n getAttribute(name) {\r\n return this.attributes[name] || null;\r\n }\r\n setAttribute(name, attribute) {\r\n this.attributes[name] = attribute;\r\n }\r\n setAttributeNS(_namespace, qualifiedName, value) {\r\n this.setAttribute(qualifiedName, value);\r\n }\r\n removeAttribute(name) {\r\n delete this.attributes[name];\r\n }\r\n appendChild(newChild) {\r\n this.childNodes.push(newChild);\r\n newChild.parentNode = this;\r\n newChild.parentElement = this;\r\n return newChild;\r\n }\r\n insertBefore(newChild, refChild) {\r\n if (refChild === null)\r\n return this.appendChild(newChild);\r\n const childIndex = this.childNodes.indexOf(refChild);\r\n if (childIndex == -1)\r\n throw new Error(\"Failed to execute 'insertBefore' on 'RRNode': The RRNode before which the new node is to be inserted is not a child of this RRNode.\");\r\n this.childNodes.splice(childIndex, 0, newChild);\r\n newChild.parentElement = this;\r\n newChild.parentNode = this;\r\n return newChild;\r\n }\r\n removeChild(node) {\r\n const indexOfChild = this.childNodes.indexOf(node);\r\n if (indexOfChild === -1)\r\n throw new Error(\"Failed to execute 'removeChild' on 'RRElement': The RRNode to be removed is not a child of this RRNode.\");\r\n this.childNodes.splice(indexOfChild, 1);\r\n node.parentElement = null;\r\n node.parentNode = null;\r\n return node;\r\n }\r\n attachShadow(_init) {\r\n const shadowRoot = this.ownerDocument.createElement('SHADOWROOT');\r\n this.shadowRoot = shadowRoot;\r\n return shadowRoot;\r\n }\r\n dispatchEvent(_event) {\r\n return true;\r\n }\r\n toString() {\r\n let attributeString = '';\r\n for (const attribute in this.attributes) {\r\n attributeString += `${attribute}=\"${this.attributes[attribute]}\" `;\r\n }\r\n return `${this.tagName} ${attributeString}`;\r\n }\r\n };\r\n}\r\nfunction BaseRRMediaElementImpl(RRElementClass) {\r\n return class BaseRRMediaElement extends RRElementClass {\r\n attachShadow(_init) {\r\n throw new Error(`RRDomException: Failed to execute 'attachShadow' on 'RRElement': This RRElement does not support attachShadow`);\r\n }\r\n play() {\r\n this.paused = false;\r\n }\r\n pause() {\r\n this.paused = true;\r\n }\r\n };\r\n}\r\nfunction BaseRRTextImpl(RRNodeClass) {\r\n return class BaseRRText extends RRNodeClass {\r\n constructor(data) {\r\n super();\r\n this.nodeType = NodeType.TEXT_NODE;\r\n this.nodeName = '#text';\r\n this.RRNodeType = NodeType$1.Text;\r\n this.data = data;\r\n }\r\n get textContent() {\r\n return this.data;\r\n }\r\n set textContent(textContent) {\r\n this.data = textContent;\r\n }\r\n toString() {\r\n return `RRText text=${JSON.stringify(this.data)}`;\r\n }\r\n };\r\n}\r\nfunction BaseRRCommentImpl(RRNodeClass) {\r\n return class BaseRRComment extends RRNodeClass {\r\n constructor(data) {\r\n super();\r\n this.nodeType = NodeType.COMMENT_NODE;\r\n this.nodeName = '#comment';\r\n this.RRNodeType = NodeType$1.Comment;\r\n this.data = data;\r\n }\r\n get textContent() {\r\n return this.data;\r\n }\r\n set textContent(textContent) {\r\n this.data = textContent;\r\n }\r\n toString() {\r\n return `RRComment text=${JSON.stringify(this.data)}`;\r\n }\r\n };\r\n}\r\nfunction BaseRRCDATASectionImpl(RRNodeClass) {\r\n return class BaseRRCDATASection extends RRNodeClass {\r\n constructor(data) {\r\n super();\r\n this.nodeName = '#cdata-section';\r\n this.nodeType = NodeType.CDATA_SECTION_NODE;\r\n this.RRNodeType = NodeType$1.CDATA;\r\n this.data = data;\r\n }\r\n get textContent() {\r\n return this.data;\r\n }\r\n set textContent(textContent) {\r\n this.data = textContent;\r\n }\r\n toString() {\r\n return `RRCDATASection data=${JSON.stringify(this.data)}`;\r\n }\r\n };\r\n}\r\nclass ClassList {\r\n constructor(classText, onChange) {\r\n this.classes = [];\r\n this.add = (...classNames) => {\r\n for (const item of classNames) {\r\n const className = String(item);\r\n if (this.classes.indexOf(className) >= 0)\r\n continue;\r\n this.classes.push(className);\r\n }\r\n this.onChange && this.onChange(this.classes.join(' '));\r\n };\r\n this.remove = (...classNames) => {\r\n this.classes = this.classes.filter((item) => classNames.indexOf(item) === -1);\r\n this.onChange && this.onChange(this.classes.join(' '));\r\n };\r\n if (classText) {\r\n const classes = classText.trim().split(/\\s+/);\r\n this.classes.push(...classes);\r\n }\r\n this.onChange = onChange;\r\n }\r\n}\r\nvar NodeType;\r\n(function (NodeType) {\r\n NodeType[NodeType[\"PLACEHOLDER\"] = 0] = \"PLACEHOLDER\";\r\n NodeType[NodeType[\"ELEMENT_NODE\"] = 1] = \"ELEMENT_NODE\";\r\n NodeType[NodeType[\"ATTRIBUTE_NODE\"] = 2] = \"ATTRIBUTE_NODE\";\r\n NodeType[NodeType[\"TEXT_NODE\"] = 3] = \"TEXT_NODE\";\r\n NodeType[NodeType[\"CDATA_SECTION_NODE\"] = 4] = \"CDATA_SECTION_NODE\";\r\n NodeType[NodeType[\"ENTITY_REFERENCE_NODE\"] = 5] = \"ENTITY_REFERENCE_NODE\";\r\n NodeType[NodeType[\"ENTITY_NODE\"] = 6] = \"ENTITY_NODE\";\r\n NodeType[NodeType[\"PROCESSING_INSTRUCTION_NODE\"] = 7] = \"PROCESSING_INSTRUCTION_NODE\";\r\n NodeType[NodeType[\"COMMENT_NODE\"] = 8] = \"COMMENT_NODE\";\r\n NodeType[NodeType[\"DOCUMENT_NODE\"] = 9] = \"DOCUMENT_NODE\";\r\n NodeType[NodeType[\"DOCUMENT_TYPE_NODE\"] = 10] = \"DOCUMENT_TYPE_NODE\";\r\n NodeType[NodeType[\"DOCUMENT_FRAGMENT_NODE\"] = 11] = \"DOCUMENT_FRAGMENT_NODE\";\r\n})(NodeType || (NodeType = {}));\n\nconst NAMESPACES = {\r\n svg: 'http://www.w3.org/2000/svg',\r\n 'xlink:href': 'http://www.w3.org/1999/xlink',\r\n xmlns: 'http://www.w3.org/2000/xmlns/',\r\n};\r\nconst SVGTagMap = {\r\n altglyph: 'altGlyph',\r\n altglyphdef: 'altGlyphDef',\r\n altglyphitem: 'altGlyphItem',\r\n animatecolor: 'animateColor',\r\n animatemotion: 'animateMotion',\r\n animatetransform: 'animateTransform',\r\n clippath: 'clipPath',\r\n feblend: 'feBlend',\r\n fecolormatrix: 'feColorMatrix',\r\n fecomponenttransfer: 'feComponentTransfer',\r\n fecomposite: 'feComposite',\r\n feconvolvematrix: 'feConvolveMatrix',\r\n fediffuselighting: 'feDiffuseLighting',\r\n fedisplacementmap: 'feDisplacementMap',\r\n fedistantlight: 'feDistantLight',\r\n fedropshadow: 'feDropShadow',\r\n feflood: 'feFlood',\r\n fefunca: 'feFuncA',\r\n fefuncb: 'feFuncB',\r\n fefuncg: 'feFuncG',\r\n fefuncr: 'feFuncR',\r\n fegaussianblur: 'feGaussianBlur',\r\n feimage: 'feImage',\r\n femerge: 'feMerge',\r\n femergenode: 'feMergeNode',\r\n femorphology: 'feMorphology',\r\n feoffset: 'feOffset',\r\n fepointlight: 'fePointLight',\r\n fespecularlighting: 'feSpecularLighting',\r\n fespotlight: 'feSpotLight',\r\n fetile: 'feTile',\r\n feturbulence: 'feTurbulence',\r\n foreignobject: 'foreignObject',\r\n glyphref: 'glyphRef',\r\n lineargradient: 'linearGradient',\r\n radialgradient: 'radialGradient',\r\n};\r\nfunction diff(oldTree, newTree, replayer, rrnodeMirror) {\r\n const oldChildren = oldTree.childNodes;\r\n const newChildren = newTree.childNodes;\r\n rrnodeMirror =\r\n rrnodeMirror ||\r\n newTree.mirror ||\r\n newTree.ownerDocument.mirror;\r\n if (oldChildren.length > 0 || newChildren.length > 0) {\r\n diffChildren(Array.from(oldChildren), newChildren, oldTree, replayer, rrnodeMirror);\r\n }\r\n let inputDataToApply = null, scrollDataToApply = null;\r\n switch (newTree.RRNodeType) {\r\n case NodeType$1.Document: {\r\n const newRRDocument = newTree;\r\n scrollDataToApply = newRRDocument.scrollData;\r\n break;\r\n }\r\n case NodeType$1.Element: {\r\n const oldElement = oldTree;\r\n const newRRElement = newTree;\r\n diffProps(oldElement, newRRElement, rrnodeMirror);\r\n scrollDataToApply = newRRElement.scrollData;\r\n inputDataToApply = newRRElement.inputData;\r\n switch (newRRElement.tagName) {\r\n case 'AUDIO':\r\n case 'VIDEO': {\r\n const oldMediaElement = oldTree;\r\n const newMediaRRElement = newRRElement;\r\n if (newMediaRRElement.paused !== undefined)\r\n newMediaRRElement.paused\r\n ? void oldMediaElement.pause()\r\n : void oldMediaElement.play();\r\n if (newMediaRRElement.muted !== undefined)\r\n oldMediaElement.muted = newMediaRRElement.muted;\r\n if (newMediaRRElement.volume !== undefined)\r\n oldMediaElement.volume = newMediaRRElement.volume;\r\n if (newMediaRRElement.currentTime !== undefined)\r\n oldMediaElement.currentTime = newMediaRRElement.currentTime;\r\n if (newMediaRRElement.playbackRate !== undefined)\r\n oldMediaElement.playbackRate = newMediaRRElement.playbackRate;\r\n break;\r\n }\r\n case 'CANVAS':\r\n {\r\n const rrCanvasElement = newTree;\r\n if (rrCanvasElement.rr_dataURL !== null) {\r\n const image = document.createElement('img');\r\n image.onload = () => {\r\n const ctx = oldElement.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image, 0, 0, image.width, image.height);\r\n }\r\n };\r\n image.src = rrCanvasElement.rr_dataURL;\r\n }\r\n rrCanvasElement.canvasMutations.forEach((canvasMutation) => replayer.applyCanvas(canvasMutation.event, canvasMutation.mutation, oldTree));\r\n }\r\n break;\r\n case 'STYLE':\r\n {\r\n const styleSheet = oldElement.sheet;\r\n styleSheet &&\r\n newTree.rules.forEach((data) => replayer.applyStyleSheetMutation(data, styleSheet));\r\n }\r\n break;\r\n }\r\n if (newRRElement.shadowRoot) {\r\n if (!oldElement.shadowRoot)\r\n oldElement.attachShadow({ mode: 'open' });\r\n const oldChildren = oldElement.shadowRoot.childNodes;\r\n const newChildren = newRRElement.shadowRoot.childNodes;\r\n if (oldChildren.length > 0 || newChildren.length > 0)\r\n diffChildren(Array.from(oldChildren), newChildren, oldElement.shadowRoot, replayer, rrnodeMirror);\r\n }\r\n break;\r\n }\r\n case NodeType$1.Text:\r\n case NodeType$1.Comment:\r\n case NodeType$1.CDATA:\r\n if (oldTree.textContent !==\r\n newTree.data)\r\n oldTree.textContent = newTree.data;\r\n break;\r\n }\r\n scrollDataToApply && replayer.applyScroll(scrollDataToApply, true);\r\n inputDataToApply && replayer.applyInput(inputDataToApply);\r\n if (newTree.nodeName === 'IFRAME') {\r\n const oldContentDocument = oldTree.contentDocument;\r\n const newIFrameElement = newTree;\r\n if (oldContentDocument) {\r\n const sn = rrnodeMirror.getMeta(newIFrameElement.contentDocument);\r\n if (sn) {\r\n replayer.mirror.add(oldContentDocument, Object.assign({}, sn));\r\n }\r\n diff(oldContentDocument, newIFrameElement.contentDocument, replayer, rrnodeMirror);\r\n }\r\n }\r\n}\r\nfunction diffProps(oldTree, newTree, rrnodeMirror) {\r\n const oldAttributes = oldTree.attributes;\r\n const newAttributes = newTree.attributes;\r\n for (const name in newAttributes) {\r\n const newValue = newAttributes[name];\r\n const sn = rrnodeMirror.getMeta(newTree);\r\n if (sn && 'isSVG' in sn && sn.isSVG && NAMESPACES[name])\r\n oldTree.setAttributeNS(NAMESPACES[name], name, newValue);\r\n else if (newTree.tagName === 'CANVAS' && name === 'rr_dataURL') {\r\n const image = document.createElement('img');\r\n image.src = newValue;\r\n image.onload = () => {\r\n const ctx = oldTree.getContext('2d');\r\n if (ctx) {\r\n ctx.drawImage(image, 0, 0, image.width, image.height);\r\n }\r\n };\r\n }\r\n else\r\n oldTree.setAttribute(name, newValue);\r\n }\r\n for (const { name } of Array.from(oldAttributes))\r\n if (!(name in newAttributes))\r\n oldTree.removeAttribute(name);\r\n newTree.scrollLeft && (oldTree.scrollLeft = newTree.scrollLeft);\r\n newTree.scrollTop && (oldTree.scrollTop = newTree.scrollTop);\r\n}\r\nfunction diffChildren(oldChildren, newChildren, parentNode, replayer, rrnodeMirror) {\r\n var _a;\r\n let oldStartIndex = 0, oldEndIndex = oldChildren.length - 1, newStartIndex = 0, newEndIndex = newChildren.length - 1;\r\n let oldStartNode = oldChildren[oldStartIndex], oldEndNode = oldChildren[oldEndIndex], newStartNode = newChildren[newStartIndex], newEndNode = newChildren[newEndIndex];\r\n let oldIdToIndex = undefined, indexInOld;\r\n while (oldStartIndex <= oldEndIndex && newStartIndex <= newEndIndex) {\r\n const oldStartId = replayer.mirror.getId(oldStartNode);\r\n const oldEndId = replayer.mirror.getId(oldEndNode);\r\n const newStartId = rrnodeMirror.getId(newStartNode);\r\n const newEndId = rrnodeMirror.getId(newEndNode);\r\n if (oldStartNode === undefined) {\r\n oldStartNode = oldChildren[++oldStartIndex];\r\n }\r\n else if (oldEndNode === undefined) {\r\n oldEndNode = oldChildren[--oldEndIndex];\r\n }\r\n else if (oldStartId !== -1 &&\r\n oldStartId === newStartId) {\r\n diff(oldStartNode, newStartNode, replayer, rrnodeMirror);\r\n oldStartNode = oldChildren[++oldStartIndex];\r\n newStartNode = newChildren[++newStartIndex];\r\n }\r\n else if (oldEndId !== -1 &&\r\n oldEndId === newEndId) {\r\n diff(oldEndNode, newEndNode, replayer, rrnodeMirror);\r\n oldEndNode = oldChildren[--oldEndIndex];\r\n newEndNode = newChildren[--newEndIndex];\r\n }\r\n else if (oldStartId !== -1 &&\r\n oldStartId === newEndId) {\r\n parentNode.insertBefore(oldStartNode, oldEndNode.nextSibling);\r\n diff(oldStartNode, newEndNode, replayer, rrnodeMirror);\r\n oldStartNode = oldChildren[++oldStartIndex];\r\n newEndNode = newChildren[--newEndIndex];\r\n }\r\n else if (oldEndId !== -1 &&\r\n oldEndId === newStartId) {\r\n parentNode.insertBefore(oldEndNode, oldStartNode);\r\n diff(oldEndNode, newStartNode, replayer, rrnodeMirror);\r\n oldEndNode = oldChildren[--oldEndIndex];\r\n newStartNode = newChildren[++newStartIndex];\r\n }\r\n else {\r\n if (!oldIdToIndex) {\r\n oldIdToIndex = {};\r\n for (let i = oldStartIndex; i <= oldEndIndex; i++) {\r\n const oldChild = oldChildren[i];\r\n if (oldChild && replayer.mirror.hasNode(oldChild))\r\n oldIdToIndex[replayer.mirror.getId(oldChild)] = i;\r\n }\r\n }\r\n indexInOld = oldIdToIndex[rrnodeMirror.getId(newStartNode)];\r\n if (indexInOld) {\r\n const nodeToMove = oldChildren[indexInOld];\r\n parentNode.insertBefore(nodeToMove, oldStartNode);\r\n diff(nodeToMove, newStartNode, replayer, rrnodeMirror);\r\n oldChildren[indexInOld] = undefined;\r\n }\r\n else {\r\n const newNode = createOrGetNode(newStartNode, replayer.mirror, rrnodeMirror);\r\n if (parentNode.nodeName === '#document' &&\r\n ((_a = replayer.mirror.getMeta(newNode)) === null || _a === void 0 ? void 0 : _a.type) === NodeType$1.Element &&\r\n parentNode.documentElement) {\r\n parentNode.removeChild(parentNode.documentElement);\r\n oldChildren[oldStartIndex] = undefined;\r\n oldStartNode = undefined;\r\n }\r\n parentNode.insertBefore(newNode, oldStartNode || null);\r\n diff(newNode, newStartNode, replayer, rrnodeMirror);\r\n }\r\n newStartNode = newChildren[++newStartIndex];\r\n }\r\n }\r\n if (oldStartIndex > oldEndIndex) {\r\n const referenceRRNode = newChildren[newEndIndex + 1];\r\n let referenceNode = null;\r\n if (referenceRRNode)\r\n parentNode.childNodes.forEach((child) => {\r\n if (replayer.mirror.getId(child) === rrnodeMirror.getId(referenceRRNode))\r\n referenceNode = child;\r\n });\r\n for (; newStartIndex <= newEndIndex; ++newStartIndex) {\r\n const newNode = createOrGetNode(newChildren[newStartIndex], replayer.mirror, rrnodeMirror);\r\n parentNode.insertBefore(newNode, referenceNode);\r\n diff(newNode, newChildren[newStartIndex], replayer, rrnodeMirror);\r\n }\r\n }\r\n else if (newStartIndex > newEndIndex) {\r\n for (; oldStartIndex <= oldEndIndex; oldStartIndex++) {\r\n const node = oldChildren[oldStartIndex];\r\n if (node) {\r\n parentNode.removeChild(node);\r\n replayer.mirror.removeNodeFromMap(node);\r\n }\r\n }\r\n }\r\n}\r\nfunction createOrGetNode(rrNode, domMirror, rrnodeMirror) {\r\n const nodeId = rrnodeMirror.getId(rrNode);\r\n const sn = rrnodeMirror.getMeta(rrNode);\r\n let node = null;\r\n if (nodeId > -1)\r\n node = domMirror.getNode(nodeId);\r\n if (node !== null)\r\n return node;\r\n switch (rrNode.RRNodeType) {\r\n case NodeType$1.Document:\r\n node = new Document();\r\n break;\r\n case NodeType$1.DocumentType:\r\n node = document.implementation.createDocumentType(rrNode.name, rrNode.publicId, rrNode.systemId);\r\n break;\r\n case NodeType$1.Element: {\r\n let tagName = rrNode.tagName.toLowerCase();\r\n tagName = SVGTagMap[tagName] || tagName;\r\n if (sn && 'isSVG' in sn && (sn === null || sn === void 0 ? void 0 : sn.isSVG)) {\r\n node = document.createElementNS(NAMESPACES['svg'], tagName);\r\n }\r\n else\r\n node = document.createElement(rrNode.tagName);\r\n break;\r\n }\r\n case NodeType$1.Text:\r\n node = document.createTextNode(rrNode.data);\r\n break;\r\n case NodeType$1.Comment:\r\n node = document.createComment(rrNode.data);\r\n break;\r\n case NodeType$1.CDATA:\r\n node = document.createCDATASection(rrNode.data);\r\n break;\r\n }\r\n if (sn)\r\n domMirror.add(node, Object.assign({}, sn));\r\n return node;\r\n}\n\nclass RRDocument extends BaseRRDocumentImpl(BaseRRNode) {\r\n constructor(mirror) {\r\n super();\r\n this.UNSERIALIZED_STARTING_ID = -2;\r\n this._unserializedId = this.UNSERIALIZED_STARTING_ID;\r\n this.mirror = createMirror();\r\n this.scrollData = null;\r\n if (mirror) {\r\n this.mirror = mirror;\r\n }\r\n }\r\n get unserializedId() {\r\n return this._unserializedId--;\r\n }\r\n createDocument(_namespace, _qualifiedName, _doctype) {\r\n return new RRDocument();\r\n }\r\n createDocumentType(qualifiedName, publicId, systemId) {\r\n const documentTypeNode = new RRDocumentType(qualifiedName, publicId, systemId);\r\n documentTypeNode.ownerDocument = this;\r\n return documentTypeNode;\r\n }\r\n createElement(tagName) {\r\n const upperTagName = tagName.toUpperCase();\r\n let element;\r\n switch (upperTagName) {\r\n case 'AUDIO':\r\n case 'VIDEO':\r\n element = new RRMediaElement(upperTagName);\r\n break;\r\n case 'IFRAME':\r\n element = new RRIFrameElement(upperTagName, this.mirror);\r\n break;\r\n case 'CANVAS':\r\n element = new RRCanvasElement(upperTagName);\r\n break;\r\n case 'STYLE':\r\n element = new RRStyleElement(upperTagName);\r\n break;\r\n default:\r\n element = new RRElement(upperTagName);\r\n break;\r\n }\r\n element.ownerDocument = this;\r\n return element;\r\n }\r\n createComment(data) {\r\n const commentNode = new RRComment(data);\r\n commentNode.ownerDocument = this;\r\n return commentNode;\r\n }\r\n createCDATASection(data) {\r\n const sectionNode = new RRCDATASection(data);\r\n sectionNode.ownerDocument = this;\r\n return sectionNode;\r\n }\r\n createTextNode(data) {\r\n const textNode = new RRText(data);\r\n textNode.ownerDocument = this;\r\n return textNode;\r\n }\r\n destroyTree() {\r\n this.childNodes = [];\r\n this.mirror.reset();\r\n }\r\n open() {\r\n super.open();\r\n this._unserializedId = this.UNSERIALIZED_STARTING_ID;\r\n }\r\n}\r\nconst RRDocumentType = BaseRRDocumentTypeImpl(BaseRRNode);\r\nclass RRElement extends BaseRRElementImpl(BaseRRNode) {\r\n constructor() {\r\n super(...arguments);\r\n this.inputData = null;\r\n this.scrollData = null;\r\n }\r\n}\r\nclass RRMediaElement extends BaseRRMediaElementImpl(RRElement) {\r\n}\r\nclass RRCanvasElement extends RRElement {\r\n constructor() {\r\n super(...arguments);\r\n this.rr_dataURL = null;\r\n this.canvasMutations = [];\r\n }\r\n getContext() {\r\n return null;\r\n }\r\n}\r\nclass RRStyleElement extends RRElement {\r\n constructor() {\r\n super(...arguments);\r\n this.rules = [];\r\n }\r\n}\r\nclass RRIFrameElement extends RRElement {\r\n constructor(upperTagName, mirror) {\r\n super(upperTagName);\r\n this.contentDocument = new RRDocument();\r\n this.contentDocument.mirror = mirror;\r\n }\r\n}\r\nconst RRText = BaseRRTextImpl(BaseRRNode);\r\nconst RRComment = BaseRRCommentImpl(BaseRRNode);\r\nconst RRCDATASection = BaseRRCDATASectionImpl(BaseRRNode);\r\nfunction getValidTagName(element) {\r\n if (element instanceof HTMLFormElement) {\r\n return 'FORM';\r\n }\r\n return element.tagName.toUpperCase();\r\n}\r\nfunction buildFromNode(node, rrdom, domMirror, parentRRNode) {\r\n let rrNode;\r\n switch (node.nodeType) {\r\n case NodeType.DOCUMENT_NODE:\r\n if (parentRRNode && parentRRNode.nodeName === 'IFRAME')\r\n rrNode = parentRRNode.contentDocument;\r\n else {\r\n rrNode = rrdom;\r\n rrNode.compatMode = node.compatMode;\r\n }\r\n break;\r\n case NodeType.DOCUMENT_TYPE_NODE: {\r\n const documentType = node;\r\n rrNode = rrdom.createDocumentType(documentType.name, documentType.publicId, documentType.systemId);\r\n break;\r\n }\r\n case NodeType.ELEMENT_NODE: {\r\n const elementNode = node;\r\n const tagName = getValidTagName(elementNode);\r\n rrNode = rrdom.createElement(tagName);\r\n const rrElement = rrNode;\r\n for (const { name, value } of Array.from(elementNode.attributes)) {\r\n rrElement.attributes[name] = value;\r\n }\r\n elementNode.scrollLeft && (rrElement.scrollLeft = elementNode.scrollLeft);\r\n elementNode.scrollTop && (rrElement.scrollTop = elementNode.scrollTop);\r\n break;\r\n }\r\n case NodeType.TEXT_NODE:\r\n rrNode = rrdom.createTextNode(node.textContent || '');\r\n break;\r\n case NodeType.CDATA_SECTION_NODE:\r\n rrNode = rrdom.createCDATASection(node.data);\r\n break;\r\n case NodeType.COMMENT_NODE:\r\n rrNode = rrdom.createComment(node.textContent || '');\r\n break;\r\n case NodeType.DOCUMENT_FRAGMENT_NODE:\r\n rrNode = parentRRNode.attachShadow({ mode: 'open' });\r\n break;\r\n default:\r\n return null;\r\n }\r\n let sn = domMirror.getMeta(node);\r\n if (rrdom instanceof RRDocument) {\r\n if (!sn) {\r\n sn = getDefaultSN(rrNode, rrdom.unserializedId);\r\n domMirror.add(node, sn);\r\n }\r\n rrdom.mirror.add(rrNode, Object.assign({}, sn));\r\n }\r\n return rrNode;\r\n}\r\nfunction buildFromDom(dom, domMirror = createMirror$1(), rrdom = new RRDocument()) {\r\n function walk(node, parentRRNode) {\r\n const rrNode = buildFromNode(node, rrdom, domMirror, parentRRNode);\r\n if (rrNode === null)\r\n return;\r\n if ((parentRRNode === null || parentRRNode === void 0 ? void 0 : parentRRNode.nodeName) !== 'IFRAME' &&\r\n node.nodeType !== NodeType.DOCUMENT_FRAGMENT_NODE) {\r\n parentRRNode === null || parentRRNode === void 0 ? void 0 : parentRRNode.appendChild(rrNode);\r\n rrNode.parentNode = parentRRNode;\r\n rrNode.parentElement = parentRRNode;\r\n }\r\n if (node.nodeName === 'IFRAME') {\r\n const iframeDoc = node.contentDocument;\r\n iframeDoc && walk(iframeDoc, rrNode);\r\n }\r\n else if (node.nodeType === NodeType.DOCUMENT_NODE ||\r\n node.nodeType === NodeType.ELEMENT_NODE ||\r\n node.nodeType === NodeType.DOCUMENT_FRAGMENT_NODE) {\r\n if (node.nodeType === NodeType.ELEMENT_NODE &&\r\n node.shadowRoot)\r\n walk(node.shadowRoot, rrNode);\r\n node.childNodes.forEach((childNode) => walk(childNode, rrNode));\r\n }\r\n }\r\n walk(dom, null);\r\n return rrdom;\r\n}\r\nfunction createMirror() {\r\n return new Mirror();\r\n}\r\nclass Mirror {\r\n constructor() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n getId(n) {\r\n var _a;\r\n if (!n)\r\n return -1;\r\n const id = (_a = this.getMeta(n)) === null || _a === void 0 ? void 0 : _a.id;\r\n return id !== null && id !== void 0 ? id : -1;\r\n }\r\n getNode(id) {\r\n return this.idNodeMap.get(id) || null;\r\n }\r\n getIds() {\r\n return Array.from(this.idNodeMap.keys());\r\n }\r\n getMeta(n) {\r\n return this.nodeMetaMap.get(n) || null;\r\n }\r\n removeNodeFromMap(n) {\r\n const id = this.getId(n);\r\n this.idNodeMap.delete(id);\r\n if (n.childNodes) {\r\n n.childNodes.forEach((childNode) => this.removeNodeFromMap(childNode));\r\n }\r\n }\r\n has(id) {\r\n return this.idNodeMap.has(id);\r\n }\r\n hasNode(node) {\r\n return this.nodeMetaMap.has(node);\r\n }\r\n add(n, meta) {\r\n const id = meta.id;\r\n this.idNodeMap.set(id, n);\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n replace(id, n) {\r\n const oldNode = this.getNode(id);\r\n if (oldNode) {\r\n const meta = this.nodeMetaMap.get(oldNode);\r\n if (meta)\r\n this.nodeMetaMap.set(n, meta);\r\n }\r\n this.idNodeMap.set(id, n);\r\n }\r\n reset() {\r\n this.idNodeMap = new Map();\r\n this.nodeMetaMap = new WeakMap();\r\n }\r\n}\r\nfunction getDefaultSN(node, id) {\r\n switch (node.RRNodeType) {\r\n case NodeType$1.Document:\r\n return {\r\n id,\r\n type: node.RRNodeType,\r\n childNodes: [],\r\n };\r\n case NodeType$1.DocumentType: {\r\n const doctype = node;\r\n return {\r\n id,\r\n type: node.RRNodeType,\r\n name: doctype.name,\r\n publicId: doctype.publicId,\r\n systemId: doctype.systemId,\r\n };\r\n }\r\n case NodeType$1.Element:\r\n return {\r\n id,\r\n type: node.RRNodeType,\r\n tagName: node.tagName.toLowerCase(),\r\n attributes: {},\r\n childNodes: [],\r\n };\r\n case NodeType$1.Text:\r\n return {\r\n id,\r\n type: node.RRNodeType,\r\n textContent: node.textContent || '',\r\n };\r\n case NodeType$1.Comment:\r\n return {\r\n id,\r\n type: node.RRNodeType,\r\n textContent: node.textContent || '',\r\n };\r\n case NodeType$1.CDATA:\r\n return {\r\n id,\r\n type: node.RRNodeType,\r\n textContent: '',\r\n };\r\n }\r\n}\n\nexport { BaseRRCDATASectionImpl, BaseRRCommentImpl, BaseRRDocumentImpl, BaseRRDocumentTypeImpl, BaseRRElementImpl, BaseRRMediaElementImpl, BaseRRNode, BaseRRTextImpl, ClassList, Mirror, NodeType, RRCDATASection, RRCanvasElement, RRComment, RRDocument, RRDocumentType, RRElement, RRIFrameElement, RRMediaElement, BaseRRNode as RRNode, RRStyleElement, RRText, buildFromDom, buildFromNode, createMirror, createOrGetNode, diff, getDefaultSN };\n","function mitt(n){return {all:n=n||new Map,on:function(t,e){var i=n.get(t);i?i.push(e):n.set(t,[e]);},off:function(t,e){var i=n.get(t);i&&(e?i.splice(i.indexOf(e)>>>0,1):n.set(t,[]));},emit:function(t,e){var i=n.get(t);i&&i.slice().map(function(n){n(e);}),(i=n.get(\"*\"))&&i.slice().map(function(n){n(t,e);});}}}\n\nexport { mitt as default };\n","function polyfill(w = window, d = document) {\r\n if ('scrollBehavior' in d.documentElement.style &&\r\n w.__forceSmoothScrollPolyfill__ !== true) {\r\n return;\r\n }\r\n const Element = w.HTMLElement || w.Element;\r\n const SCROLL_TIME = 468;\r\n const original = {\r\n scroll: w.scroll || w.scrollTo,\r\n scrollBy: w.scrollBy,\r\n elementScroll: Element.prototype.scroll || scrollElement,\r\n scrollIntoView: Element.prototype.scrollIntoView,\r\n };\r\n const now = w.performance && w.performance.now\r\n ? w.performance.now.bind(w.performance)\r\n : Date.now;\r\n function isMicrosoftBrowser(userAgent) {\r\n const userAgentPatterns = ['MSIE ', 'Trident/', 'Edge/'];\r\n return new RegExp(userAgentPatterns.join('|')).test(userAgent);\r\n }\r\n const ROUNDING_TOLERANCE = isMicrosoftBrowser(w.navigator.userAgent) ? 1 : 0;\r\n function scrollElement(x, y) {\r\n this.scrollLeft = x;\r\n this.scrollTop = y;\r\n }\r\n function ease(k) {\r\n return 0.5 * (1 - Math.cos(Math.PI * k));\r\n }\r\n function shouldBailOut(firstArg) {\r\n if (firstArg === null ||\r\n typeof firstArg !== 'object' ||\r\n firstArg.behavior === undefined ||\r\n firstArg.behavior === 'auto' ||\r\n firstArg.behavior === 'instant') {\r\n return true;\r\n }\r\n if (typeof firstArg === 'object' && firstArg.behavior === 'smooth') {\r\n return false;\r\n }\r\n throw new TypeError('behavior member of ScrollOptions ' +\r\n firstArg.behavior +\r\n ' is not a valid value for enumeration ScrollBehavior.');\r\n }\r\n function hasScrollableSpace(el, axis) {\r\n if (axis === 'Y') {\r\n return el.clientHeight + ROUNDING_TOLERANCE < el.scrollHeight;\r\n }\r\n if (axis === 'X') {\r\n return el.clientWidth + ROUNDING_TOLERANCE < el.scrollWidth;\r\n }\r\n }\r\n function canOverflow(el, axis) {\r\n const overflowValue = w.getComputedStyle(el, null)['overflow' + axis];\r\n return overflowValue === 'auto' || overflowValue === 'scroll';\r\n }\r\n function isScrollable(el) {\r\n const isScrollableY = hasScrollableSpace(el, 'Y') && canOverflow(el, 'Y');\r\n const isScrollableX = hasScrollableSpace(el, 'X') && canOverflow(el, 'X');\r\n return isScrollableY || isScrollableX;\r\n }\r\n function findScrollableParent(el) {\r\n while (el !== d.body && isScrollable(el) === false) {\r\n el = el.parentNode || el.host;\r\n }\r\n return el;\r\n }\r\n function step(context) {\r\n const time = now();\r\n let value;\r\n let currentX;\r\n let currentY;\r\n let elapsed = (time - context.startTime) / SCROLL_TIME;\r\n elapsed = elapsed > 1 ? 1 : elapsed;\r\n value = ease(elapsed);\r\n currentX = context.startX + (context.x - context.startX) * value;\r\n currentY = context.startY + (context.y - context.startY) * value;\r\n context.method.call(context.scrollable, currentX, currentY);\r\n if (currentX !== context.x || currentY !== context.y) {\r\n w.requestAnimationFrame(step.bind(w, context));\r\n }\r\n }\r\n function smoothScroll(el, x, y) {\r\n let scrollable;\r\n let startX;\r\n let startY;\r\n let method;\r\n const startTime = now();\r\n if (el === d.body) {\r\n scrollable = w;\r\n startX = w.scrollX || w.pageXOffset;\r\n startY = w.scrollY || w.pageYOffset;\r\n method = original.scroll;\r\n }\r\n else {\r\n scrollable = el;\r\n startX = el.scrollLeft;\r\n startY = el.scrollTop;\r\n method = scrollElement;\r\n }\r\n step({\r\n scrollable: scrollable,\r\n method: method,\r\n startTime: startTime,\r\n startX: startX,\r\n startY: startY,\r\n x: x,\r\n y: y,\r\n });\r\n }\r\n w.scroll = w.scrollTo = function () {\r\n if (arguments[0] === undefined) {\r\n return;\r\n }\r\n if (shouldBailOut(arguments[0]) === true) {\r\n original.scroll.call(w, arguments[0].left !== undefined\r\n ? arguments[0].left\r\n : typeof arguments[0] !== 'object'\r\n ? arguments[0]\r\n : w.scrollX || w.pageXOffset, arguments[0].top !== undefined\r\n ? arguments[0].top\r\n : arguments[1] !== undefined\r\n ? arguments[1]\r\n : w.scrollY || w.pageYOffset);\r\n return;\r\n }\r\n smoothScroll.call(w, d.body, arguments[0].left !== undefined\r\n ? ~~arguments[0].left\r\n : w.scrollX || w.pageXOffset, arguments[0].top !== undefined\r\n ? ~~arguments[0].top\r\n : w.scrollY || w.pageYOffset);\r\n };\r\n w.scrollBy = function () {\r\n if (arguments[0] === undefined) {\r\n return;\r\n }\r\n if (shouldBailOut(arguments[0])) {\r\n original.scrollBy.call(w, arguments[0].left !== undefined\r\n ? arguments[0].left\r\n : typeof arguments[0] !== 'object'\r\n ? arguments[0]\r\n : 0, arguments[0].top !== undefined\r\n ? arguments[0].top\r\n : arguments[1] !== undefined\r\n ? arguments[1]\r\n : 0);\r\n return;\r\n }\r\n smoothScroll.call(w, d.body, ~~arguments[0].left + (w.scrollX || w.pageXOffset), ~~arguments[0].top + (w.scrollY || w.pageYOffset));\r\n };\r\n Element.prototype.scroll = Element.prototype.scrollTo = function () {\r\n if (arguments[0] === undefined) {\r\n return;\r\n }\r\n if (shouldBailOut(arguments[0]) === true) {\r\n if (typeof arguments[0] === 'number' && arguments[1] === undefined) {\r\n throw new SyntaxError('Value could not be converted');\r\n }\r\n original.elementScroll.call(this, arguments[0].left !== undefined\r\n ? ~~arguments[0].left\r\n : typeof arguments[0] !== 'object'\r\n ? ~~arguments[0]\r\n : this.scrollLeft, arguments[0].top !== undefined\r\n ? ~~arguments[0].top\r\n : arguments[1] !== undefined\r\n ? ~~arguments[1]\r\n : this.scrollTop);\r\n return;\r\n }\r\n const left = arguments[0].left;\r\n const top = arguments[0].top;\r\n smoothScroll.call(this, this, typeof left === 'undefined' ? this.scrollLeft : ~~left, typeof top === 'undefined' ? this.scrollTop : ~~top);\r\n };\r\n Element.prototype.scrollBy = function () {\r\n if (arguments[0] === undefined) {\r\n return;\r\n }\r\n if (shouldBailOut(arguments[0]) === true) {\r\n original.elementScroll.call(this, arguments[0].left !== undefined\r\n ? ~~arguments[0].left + this.scrollLeft\r\n : ~~arguments[0] + this.scrollLeft, arguments[0].top !== undefined\r\n ? ~~arguments[0].top + this.scrollTop\r\n : ~~arguments[1] + this.scrollTop);\r\n return;\r\n }\r\n this.scroll({\r\n left: ~~arguments[0].left + this.scrollLeft,\r\n top: ~~arguments[0].top + this.scrollTop,\r\n behavior: arguments[0].behavior,\r\n });\r\n };\r\n Element.prototype.scrollIntoView = function () {\r\n if (shouldBailOut(arguments[0]) === true) {\r\n original.scrollIntoView.call(this, arguments[0] === undefined ? true : arguments[0]);\r\n return;\r\n }\r\n const scrollableParent = findScrollableParent(this);\r\n const parentRects = scrollableParent.getBoundingClientRect();\r\n const clientRects = this.getBoundingClientRect();\r\n if (scrollableParent !== d.body) {\r\n smoothScroll.call(this, scrollableParent, scrollableParent.scrollLeft + clientRects.left - parentRects.left, scrollableParent.scrollTop + clientRects.top - parentRects.top);\r\n if (w.getComputedStyle(scrollableParent).position !== 'fixed') {\r\n w.scrollBy({\r\n left: parentRects.left,\r\n top: parentRects.top,\r\n behavior: 'smooth',\r\n });\r\n }\r\n }\r\n else {\r\n w.scrollBy({\r\n left: clientRects.left,\r\n top: clientRects.top,\r\n behavior: 'smooth',\r\n });\r\n }\r\n };\r\n}\n\nexport { polyfill };\n","import { EventType, IncrementalSource } from '../../../types/dist/types.js';\n\nclass Timer {\r\n constructor(actions = [], config) {\r\n this.timeOffset = 0;\r\n this.raf = null;\r\n this.actions = actions;\r\n this.speed = config.speed;\r\n this.liveMode = config.liveMode;\r\n }\r\n addAction(action) {\r\n if (!this.actions.length ||\r\n this.actions[this.actions.length - 1].delay <= action.delay) {\r\n this.actions.push(action);\r\n return;\r\n }\r\n const index = this.findActionIndex(action);\r\n this.actions.splice(index, 0, action);\r\n }\r\n start() {\r\n this.timeOffset = 0;\r\n let lastTimestamp = performance.now();\r\n const check = () => {\r\n const time = performance.now();\r\n this.timeOffset += (time - lastTimestamp) * this.speed;\r\n lastTimestamp = time;\r\n while (this.actions.length) {\r\n const action = this.actions[0];\r\n if (this.timeOffset >= action.delay) {\r\n this.actions.shift();\r\n action.doAction();\r\n }\r\n else {\r\n break;\r\n }\r\n }\r\n if (this.actions.length > 0 || this.liveMode) {\r\n this.raf = requestAnimationFrame(check);\r\n }\r\n };\r\n this.raf = requestAnimationFrame(check);\r\n }\r\n clear() {\r\n if (this.raf) {\r\n cancelAnimationFrame(this.raf);\r\n this.raf = null;\r\n }\r\n this.actions.length = 0;\r\n }\r\n setSpeed(speed) {\r\n this.speed = speed;\r\n }\r\n toggleLiveMode(mode) {\r\n this.liveMode = mode;\r\n }\r\n isActive() {\r\n return this.raf !== null;\r\n }\r\n findActionIndex(action) {\r\n let start = 0;\r\n let end = this.actions.length - 1;\r\n while (start <= end) {\r\n const mid = Math.floor((start + end) / 2);\r\n if (this.actions[mid].delay < action.delay) {\r\n start = mid + 1;\r\n }\r\n else if (this.actions[mid].delay > action.delay) {\r\n end = mid - 1;\r\n }\r\n else {\r\n return mid + 1;\r\n }\r\n }\r\n return start;\r\n }\r\n}\r\nfunction addDelay(event, baselineTime) {\r\n if (event.type === EventType.IncrementalSnapshot &&\r\n event.data.source === IncrementalSource.MouseMove &&\r\n event.data.positions &&\r\n event.data.positions.length) {\r\n const firstOffset = event.data.positions[0].timeOffset;\r\n const firstTimestamp = event.timestamp + firstOffset;\r\n event.delay = firstTimestamp - baselineTime;\r\n return firstTimestamp - baselineTime;\r\n }\r\n event.delay = event.timestamp - baselineTime;\r\n return event.delay;\r\n}\n\nexport { Timer, addDelay };\n","/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nfunction t(t,n){var e=\"function\"==typeof Symbol&&t[Symbol.iterator];if(!e)return t;var r,o,i=e.call(t),a=[];try{for(;(void 0===n||n-- >0)&&!(r=i.next()).done;)a.push(r.value);}catch(t){o={error:t};}finally{try{r&&!r.done&&(e=i.return)&&e.call(i);}finally{if(o)throw o.error}}return a}var n;!function(t){t[t.NotStarted=0]=\"NotStarted\",t[t.Running=1]=\"Running\",t[t.Stopped=2]=\"Stopped\";}(n||(n={}));var e={type:\"xstate.init\"};function r(t){return void 0===t?[]:[].concat(t)}function o(t){return {type:\"xstate.assign\",assignment:t}}function i(t,n){return \"string\"==typeof(t=\"string\"==typeof t&&n&&n[t]?n[t]:t)?{type:t}:\"function\"==typeof t?{type:t.name,exec:t}:t}function a(t){return function(n){return t===n}}function u(t){return \"string\"==typeof t?{type:t}:t}function c(t,n){return {value:t,context:n,actions:[],changed:!1,matches:a(t)}}function f(t,n,e){var r=n,o=!1;return [t.filter((function(t){if(\"xstate.assign\"===t.type){o=!0;var n=Object.assign({},r);return \"function\"==typeof t.assignment?n=t.assignment(r,e):Object.keys(t.assignment).forEach((function(o){n[o]=\"function\"==typeof t.assignment[o]?t.assignment[o](r,e):t.assignment[o];})),r=n,!1}return !0})),r,o]}function s(n,o){void 0===o&&(o={});var s=t(f(r(n.states[n.initial].entry).map((function(t){return i(t,o.actions)})),n.context,e),2),l=s[0],v=s[1],y={config:n,_options:o,initialState:{value:n.initial,actions:l,context:v,matches:a(n.initial)},transition:function(e,o){var s,l,v=\"string\"==typeof e?{value:e,context:n.context}:e,p=v.value,g=v.context,d=u(o),x=n.states[p];if(x.on){var m=r(x.on[d.type]);try{for(var h=function(t){var n=\"function\"==typeof Symbol&&Symbol.iterator,e=n&&t[n],r=0;if(e)return e.call(t);if(t&&\"number\"==typeof t.length)return {next:function(){return t&&r>=t.length&&(t=void 0),{value:t&&t[r++],done:!t}}};throw new TypeError(n?\"Object is not iterable.\":\"Symbol.iterator is not defined.\")}(m),b=h.next();!b.done;b=h.next()){var S=b.value;if(void 0===S)return c(p,g);var w=\"string\"==typeof S?{target:S}:S,j=w.target,E=w.actions,R=void 0===E?[]:E,N=w.cond,O=void 0===N?function(){return !0}:N,_=void 0===j,k=null!=j?j:p,T=n.states[k];if(O(g,d)){var q=t(f((_?r(R):[].concat(x.exit,R,T.entry).filter((function(t){return t}))).map((function(t){return i(t,y._options.actions)})),g,d),3),z=q[0],A=q[1],B=q[2],C=null!=j?j:p;return {value:C,context:A,actions:z,changed:j!==p||z.length>0||B,matches:a(C)}}}}catch(t){s={error:t};}finally{try{b&&!b.done&&(l=h.return)&&l.call(h);}finally{if(s)throw s.error}}}return c(p,g)}};return y}var l=function(t,n){return t.actions.forEach((function(e){var r=e.exec;return r&&r(t.context,n)}))};function v(t){var r=t.initialState,o=n.NotStarted,i=new Set,c={_machine:t,send:function(e){o===n.Running&&(r=t.transition(r,e),l(r,u(e)),i.forEach((function(t){return t(r)})));},subscribe:function(t){return i.add(t),t(r),{unsubscribe:function(){return i.delete(t)}}},start:function(i){if(i){var u=\"object\"==typeof i?i:{context:t.config.context,value:i};r={value:u.value,actions:[],context:u.context,matches:a(u.value)};}return o=n.Running,l(r,e),c},stop:function(){return o=n.Stopped,i.clear(),c},get state(){return r},get status(){return o}};return c}\n\nexport { n as InterpreterStatus, o as assign, s as createMachine, v as interpret };\n","const rules = (blockClass) => [\r\n `.${blockClass} { background: currentColor }`,\r\n 'noscript { display: none !important; }',\r\n];\n\nexport { rules as default };\n","import { __awaiter } from './../../../../../ext/tslib/tslib.es6.js';\nimport { decode } from './../../../../../ext/base64-arraybuffer/dist/base64-arraybuffer.es5.js';\n\nconst webGLVarMap = new Map();\r\nfunction variableListFor(ctx, ctor) {\r\n let contextMap = webGLVarMap.get(ctx);\r\n if (!contextMap) {\r\n contextMap = new Map();\r\n webGLVarMap.set(ctx, contextMap);\r\n }\r\n if (!contextMap.has(ctor)) {\r\n contextMap.set(ctor, []);\r\n }\r\n return contextMap.get(ctor);\r\n}\r\nfunction deserializeArg(imageMap, ctx, preload) {\r\n return (arg) => __awaiter(this, void 0, void 0, function* () {\r\n if (arg && typeof arg === 'object' && 'rr_type' in arg) {\r\n if (preload)\r\n preload.isUnchanged = false;\r\n if (arg.rr_type === 'ImageBitmap' && 'args' in arg) {\r\n const args = yield deserializeArg(imageMap, ctx, preload)(arg.args);\r\n return yield createImageBitmap.apply(null, args);\r\n }\r\n else if ('index' in arg) {\r\n if (preload || ctx === null)\r\n return arg;\r\n const { rr_type: name, index } = arg;\r\n return variableListFor(ctx, name)[index];\r\n }\r\n else if ('args' in arg) {\r\n const { rr_type: name, args } = arg;\r\n const ctor = window[name];\r\n return new ctor(...(yield Promise.all(args.map(deserializeArg(imageMap, ctx, preload)))));\r\n }\r\n else if ('base64' in arg) {\r\n return decode(arg.base64);\r\n }\r\n else if ('src' in arg) {\r\n const image = imageMap.get(arg.src);\r\n if (image) {\r\n return image;\r\n }\r\n else {\r\n const image = new Image();\r\n image.src = arg.src;\r\n imageMap.set(arg.src, image);\r\n return image;\r\n }\r\n }\r\n else if ('data' in arg && arg.rr_type === 'Blob') {\r\n const blobContents = yield Promise.all(arg.data.map(deserializeArg(imageMap, ctx, preload)));\r\n const blob = new Blob(blobContents, {\r\n type: arg.type,\r\n });\r\n return blob;\r\n }\r\n }\r\n else if (Array.isArray(arg)) {\r\n const result = yield Promise.all(arg.map(deserializeArg(imageMap, ctx, preload)));\r\n return result;\r\n }\r\n return arg;\r\n });\r\n}\n\nexport { deserializeArg, variableListFor };\n","import { __awaiter } from './../../../../../ext/tslib/tslib.es6.js';\nimport { CanvasContext } from '../../../../types/dist/types.js';\nimport { deserializeArg, variableListFor } from './deserialize-args.js';\n\nfunction getContext(target, type) {\r\n try {\r\n if (type === CanvasContext.WebGL) {\r\n return (target.getContext('webgl') || target.getContext('experimental-webgl'));\r\n }\r\n return target.getContext('webgl2');\r\n }\r\n catch (e) {\r\n return null;\r\n }\r\n}\r\nconst WebGLVariableConstructorsNames = [\r\n 'WebGLActiveInfo',\r\n 'WebGLBuffer',\r\n 'WebGLFramebuffer',\r\n 'WebGLProgram',\r\n 'WebGLRenderbuffer',\r\n 'WebGLShader',\r\n 'WebGLShaderPrecisionFormat',\r\n 'WebGLTexture',\r\n 'WebGLUniformLocation',\r\n 'WebGLVertexArrayObject',\r\n];\r\nfunction saveToWebGLVarMap(ctx, result) {\r\n if (!(result === null || result === void 0 ? void 0 : result.constructor))\r\n return;\r\n const { name } = result.constructor;\r\n if (!WebGLVariableConstructorsNames.includes(name))\r\n return;\r\n const variables = variableListFor(ctx, name);\r\n if (!variables.includes(result))\r\n variables.push(result);\r\n}\r\nfunction webglMutation({ mutation, target, type, imageMap, errorHandler, }) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n const ctx = getContext(target, type);\r\n if (!ctx)\r\n return;\r\n if (mutation.setter) {\r\n ctx[mutation.property] = mutation.args[0];\r\n return;\r\n }\r\n const original = ctx[mutation.property];\r\n const args = yield Promise.all(mutation.args.map(deserializeArg(imageMap, ctx)));\r\n const result = original.apply(ctx, args);\r\n saveToWebGLVarMap(ctx, result);\r\n const debugMode = false;\r\n if (debugMode) ;\r\n }\r\n catch (error) {\r\n errorHandler(mutation, error);\r\n }\r\n });\r\n}\n\nexport { webglMutation as default };\n","import { __awaiter } from './../../../../../ext/tslib/tslib.es6.js';\nimport { deserializeArg } from './deserialize-args.js';\n\nfunction canvasMutation({ event, mutation, target, imageMap, errorHandler, }) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n const ctx = target.getContext('2d');\r\n if (mutation.setter) {\r\n ctx[mutation.property] =\r\n mutation.args[0];\r\n return;\r\n }\r\n const original = ctx[mutation.property];\r\n if (mutation.property === 'drawImage' &&\r\n typeof mutation.args[0] === 'string') {\r\n imageMap.get(event);\r\n original.apply(ctx, mutation.args);\r\n }\r\n else {\r\n const args = yield Promise.all(mutation.args.map(deserializeArg(imageMap, ctx)));\r\n original.apply(ctx, args);\r\n }\r\n }\r\n catch (error) {\r\n errorHandler(mutation, error);\r\n }\r\n });\r\n}\n\nexport { canvasMutation as default };\n","import { __awaiter } from './../../../../../ext/tslib/tslib.es6.js';\nimport { CanvasContext } from '../../../../types/dist/types.js';\nimport webglMutation from './webgl.js';\nimport canvasMutation$1 from './2d.js';\n\nfunction canvasMutation({ event, mutation, target, imageMap, canvasEventMap, errorHandler, }) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n try {\r\n const precomputedMutation = canvasEventMap.get(event) || mutation;\r\n const commands = 'commands' in precomputedMutation\r\n ? precomputedMutation.commands\r\n : [precomputedMutation];\r\n if ([CanvasContext.WebGL, CanvasContext.WebGL2].includes(mutation.type)) {\r\n for (let i = 0; i < commands.length; i++) {\r\n const command = commands[i];\r\n yield webglMutation({\r\n mutation: command,\r\n type: mutation.type,\r\n target,\r\n imageMap,\r\n errorHandler,\r\n });\r\n }\r\n return;\r\n }\r\n for (let i = 0; i < commands.length; i++) {\r\n const command = commands[i];\r\n yield canvasMutation$1({\r\n event,\r\n mutation: command,\r\n target,\r\n imageMap,\r\n errorHandler,\r\n });\r\n }\r\n }\r\n catch (error) {\r\n errorHandler(mutation, error);\r\n }\r\n });\r\n}\n\nexport { canvasMutation as default };\n","import { __awaiter } from './../../../../ext/tslib/tslib.es6.js';\nimport { createCache, createMirror, rebuild, buildNodeWithSN, NodeType } from '../../../rrweb-snapshot/es/rrweb-snapshot.js';\nimport { RRDocument, diff, createOrGetNode, getDefaultSN, buildFromDom, buildFromNode } from '../../../rrdom/es/rrdom.js';\nimport * as mitt$1 from './../../../../ext/mitt/dist/mitt.mjs.js';\nimport mitt$2 from './../../../../ext/mitt/dist/mitt.mjs.js';\nimport { polyfill } from './smoothscroll.js';\nimport { Timer } from './timer.js';\nimport { createPlayerService, createSpeedService } from './machine.js';\nimport { EventType, ReplayerEvents, IncrementalSource, MouseInteractions } from '../../../types/dist/types.js';\nimport { StyleSheetMirror, polyfill as polyfill$1, isSerializedIframe, hasShadowRoot, queueToResolveTrees, iterateResolveTree, uniqueTextMutations, getPositionsAndIndex, getNestedRule, getBaseDimension } from '../utils.js';\nimport rules from './styles/inject-style.js';\nimport canvasMutation from './canvas/index.js';\nimport { deserializeArg } from './canvas/deserialize-args.js';\n\nconst SKIP_TIME_THRESHOLD = 10 * 1000;\r\nconst SKIP_TIME_INTERVAL = 5 * 1000;\r\nconst mitt = mitt$2 || mitt$1;\r\nconst REPLAY_CONSOLE_PREFIX = '[replayer]';\r\nconst defaultMouseTailConfig = {\r\n duration: 500,\r\n lineCap: 'round',\r\n lineWidth: 3,\r\n strokeStyle: 'red',\r\n};\r\nfunction indicatesTouchDevice(e) {\r\n return (e.type == EventType.IncrementalSnapshot &&\r\n (e.data.source == IncrementalSource.TouchMove ||\r\n (e.data.source == IncrementalSource.MouseInteraction &&\r\n e.data.type == MouseInteractions.TouchStart)));\r\n}\r\nclass Replayer {\r\n constructor(events, config) {\r\n this.usingVirtualDom = false;\r\n this.virtualDom = new RRDocument();\r\n this.mouseTail = null;\r\n this.tailPositions = [];\r\n this.emitter = mitt();\r\n this.legacy_missingNodeRetryMap = {};\r\n this.cache = createCache();\r\n this.imageMap = new Map();\r\n this.canvasEventMap = new Map();\r\n this.mirror = createMirror();\r\n this.styleMirror = new StyleSheetMirror();\r\n this.firstFullSnapshot = null;\r\n this.newDocumentQueue = [];\r\n this.mousePos = null;\r\n this.touchActive = null;\r\n this.lastSelectionData = null;\r\n this.constructedStyleMutations = [];\r\n this.adoptedStyleSheets = [];\r\n this.handleResize = (dimension) => {\r\n this.iframe.style.display = 'inherit';\r\n for (const el of [this.mouseTail, this.iframe]) {\r\n if (!el) {\r\n continue;\r\n }\r\n el.setAttribute('width', String(dimension.width));\r\n el.setAttribute('height', String(dimension.height));\r\n }\r\n };\r\n this.applyEventsSynchronously = (events) => {\r\n for (const event of events) {\r\n switch (event.type) {\r\n case EventType.DomContentLoaded:\r\n case EventType.Load:\r\n case EventType.Custom:\r\n continue;\r\n case EventType.FullSnapshot:\r\n case EventType.Meta:\r\n case EventType.Plugin:\r\n case EventType.IncrementalSnapshot:\r\n break;\r\n }\r\n const castFn = this.getCastFn(event, true);\r\n castFn();\r\n }\r\n if (this.touchActive === true) {\r\n this.mouse.classList.add('touch-active');\r\n }\r\n else if (this.touchActive === false) {\r\n this.mouse.classList.remove('touch-active');\r\n }\r\n this.touchActive = null;\r\n };\r\n this.getCastFn = (event, isSync = false) => {\r\n let castFn;\r\n switch (event.type) {\r\n case EventType.DomContentLoaded:\r\n case EventType.Load:\r\n break;\r\n case EventType.Custom:\r\n castFn = () => {\r\n this.emitter.emit(ReplayerEvents.CustomEvent, event);\r\n };\r\n break;\r\n case EventType.Meta:\r\n castFn = () => this.emitter.emit(ReplayerEvents.Resize, {\r\n width: event.data.width,\r\n height: event.data.height,\r\n });\r\n break;\r\n case EventType.FullSnapshot:\r\n castFn = () => {\r\n var _a;\r\n if (this.firstFullSnapshot) {\r\n if (this.firstFullSnapshot === event) {\r\n this.firstFullSnapshot = true;\r\n return;\r\n }\r\n }\r\n else {\r\n this.firstFullSnapshot = true;\r\n }\r\n this.rebuildFullSnapshot(event, isSync);\r\n (_a = this.iframe.contentWindow) === null || _a === void 0 ? void 0 : _a.scrollTo(event.data.initialOffset);\r\n this.styleMirror.reset();\r\n };\r\n break;\r\n case EventType.IncrementalSnapshot:\r\n castFn = () => {\r\n this.applyIncremental(event, isSync);\r\n if (isSync) {\r\n return;\r\n }\r\n if (event === this.nextUserInteractionEvent) {\r\n this.nextUserInteractionEvent = null;\r\n this.backToNormal();\r\n }\r\n if (this.config.skipInactive && !this.nextUserInteractionEvent) {\r\n for (const _event of this.service.state.context.events) {\r\n if (_event.timestamp <= event.timestamp) {\r\n continue;\r\n }\r\n if (this.isUserInteraction(_event)) {\r\n if (_event.delay - event.delay >\r\n SKIP_TIME_THRESHOLD *\r\n this.speedService.state.context.timer.speed) {\r\n this.nextUserInteractionEvent = _event;\r\n }\r\n break;\r\n }\r\n }\r\n if (this.nextUserInteractionEvent) {\r\n const skipTime = this.nextUserInteractionEvent.delay - event.delay;\r\n const payload = {\r\n speed: Math.min(Math.round(skipTime / SKIP_TIME_INTERVAL), this.config.maxSpeed),\r\n };\r\n this.speedService.send({ type: 'FAST_FORWARD', payload });\r\n this.emitter.emit(ReplayerEvents.SkipStart, payload);\r\n }\r\n }\r\n };\r\n break;\r\n }\r\n const wrappedCastFn = () => {\r\n if (castFn) {\r\n castFn();\r\n }\r\n for (const plugin of this.config.plugins || []) {\r\n if (plugin.handler)\r\n plugin.handler(event, isSync, { replayer: this });\r\n }\r\n this.service.send({ type: 'CAST_EVENT', payload: { event } });\r\n const last_index = this.service.state.context.events.length - 1;\r\n if (event === this.service.state.context.events[last_index]) {\r\n const finish = () => {\r\n if (last_index < this.service.state.context.events.length - 1) {\r\n return;\r\n }\r\n this.backToNormal();\r\n this.service.send('END');\r\n this.emitter.emit(ReplayerEvents.Finish);\r\n };\r\n if (event.type === EventType.IncrementalSnapshot &&\r\n event.data.source === IncrementalSource.MouseMove &&\r\n event.data.positions.length) {\r\n setTimeout(() => {\r\n finish();\r\n }, Math.max(0, -event.data.positions[0].timeOffset + 50));\r\n }\r\n else {\r\n finish();\r\n }\r\n }\r\n this.emitter.emit(ReplayerEvents.EventCast, event);\r\n };\r\n return wrappedCastFn;\r\n };\r\n if (!(config === null || config === void 0 ? void 0 : config.liveMode) && events.length < 2) {\r\n throw new Error('Replayer need at least 2 events.');\r\n }\r\n const defaultConfig = {\r\n speed: 1,\r\n maxSpeed: 360,\r\n root: document.body,\r\n loadTimeout: 0,\r\n skipInactive: false,\r\n showWarning: true,\r\n showDebug: false,\r\n blockClass: 'rr-block',\r\n liveMode: false,\r\n insertStyleRules: [],\r\n triggerFocus: true,\r\n UNSAFE_replayCanvas: false,\r\n pauseAnimation: true,\r\n mouseTail: defaultMouseTailConfig,\r\n useVirtualDom: true,\r\n };\r\n this.config = Object.assign({}, defaultConfig, config);\r\n this.handleResize = this.handleResize.bind(this);\r\n this.getCastFn = this.getCastFn.bind(this);\r\n this.applyEventsSynchronously = this.applyEventsSynchronously.bind(this);\r\n this.emitter.on(ReplayerEvents.Resize, this.handleResize);\r\n this.setupDom();\r\n for (const plugin of this.config.plugins || []) {\r\n if (plugin.getMirror)\r\n plugin.getMirror({ nodeMirror: this.mirror });\r\n }\r\n this.emitter.on(ReplayerEvents.Flush, () => {\r\n if (this.usingVirtualDom) {\r\n const replayerHandler = {\r\n mirror: this.mirror,\r\n applyCanvas: (canvasEvent, canvasMutationData, target) => {\r\n void canvasMutation({\r\n event: canvasEvent,\r\n mutation: canvasMutationData,\r\n target,\r\n imageMap: this.imageMap,\r\n canvasEventMap: this.canvasEventMap,\r\n errorHandler: this.warnCanvasMutationFailed.bind(this),\r\n });\r\n },\r\n applyInput: this.applyInput.bind(this),\r\n applyScroll: this.applyScroll.bind(this),\r\n applyStyleSheetMutation: (data, styleSheet) => {\r\n if (data.source === IncrementalSource.StyleSheetRule)\r\n this.applyStyleSheetRule(data, styleSheet);\r\n else if (data.source === IncrementalSource.StyleDeclaration)\r\n this.applyStyleDeclaration(data, styleSheet);\r\n },\r\n };\r\n this.iframe.contentDocument &&\r\n diff(this.iframe.contentDocument, this.virtualDom, replayerHandler, this.virtualDom.mirror);\r\n this.virtualDom.destroyTree();\r\n this.usingVirtualDom = false;\r\n if (Object.keys(this.legacy_missingNodeRetryMap).length) {\r\n for (const key in this.legacy_missingNodeRetryMap) {\r\n try {\r\n const value = this.legacy_missingNodeRetryMap[key];\r\n const realNode = createOrGetNode(value.node, this.mirror, this.virtualDom.mirror);\r\n diff(realNode, value.node, replayerHandler, this.virtualDom.mirror);\r\n value.node = realNode;\r\n }\r\n catch (error) {\r\n if (this.config.showWarning) {\r\n console.warn(error);\r\n }\r\n }\r\n }\r\n }\r\n this.constructedStyleMutations.forEach((data) => {\r\n this.applyStyleSheetMutation(data);\r\n });\r\n this.constructedStyleMutations = [];\r\n this.adoptedStyleSheets.forEach((data) => {\r\n this.applyAdoptedStyleSheet(data);\r\n });\r\n this.adoptedStyleSheets = [];\r\n }\r\n if (this.mousePos) {\r\n this.moveAndHover(this.mousePos.x, this.mousePos.y, this.mousePos.id, true, this.mousePos.debugData);\r\n this.mousePos = null;\r\n }\r\n if (this.lastSelectionData) {\r\n this.applySelection(this.lastSelectionData);\r\n this.lastSelectionData = null;\r\n }\r\n });\r\n this.emitter.on(ReplayerEvents.PlayBack, () => {\r\n this.firstFullSnapshot = null;\r\n this.mirror.reset();\r\n this.styleMirror.reset();\r\n });\r\n const timer = new Timer([], {\r\n speed: this.config.speed,\r\n liveMode: this.config.liveMode,\r\n });\r\n this.service = createPlayerService({\r\n events: events\r\n .map((e) => {\r\n if (config && config.unpackFn) {\r\n return config.unpackFn(e);\r\n }\r\n return e;\r\n })\r\n .sort((a1, a2) => a1.timestamp - a2.timestamp),\r\n timer,\r\n timeOffset: 0,\r\n baselineTime: 0,\r\n lastPlayedEvent: null,\r\n }, {\r\n getCastFn: this.getCastFn,\r\n applyEventsSynchronously: this.applyEventsSynchronously,\r\n emitter: this.emitter,\r\n });\r\n this.service.start();\r\n this.service.subscribe((state) => {\r\n this.emitter.emit(ReplayerEvents.StateChange, {\r\n player: state,\r\n });\r\n });\r\n this.speedService = createSpeedService({\r\n normalSpeed: -1,\r\n timer,\r\n });\r\n this.speedService.start();\r\n this.speedService.subscribe((state) => {\r\n this.emitter.emit(ReplayerEvents.StateChange, {\r\n speed: state,\r\n });\r\n });\r\n const firstMeta = this.service.state.context.events.find((e) => e.type === EventType.Meta);\r\n const firstFullsnapshot = this.service.state.context.events.find((e) => e.type === EventType.FullSnapshot);\r\n if (firstMeta) {\r\n const { width, height } = firstMeta.data;\r\n setTimeout(() => {\r\n this.emitter.emit(ReplayerEvents.Resize, {\r\n width,\r\n height,\r\n });\r\n }, 0);\r\n }\r\n if (firstFullsnapshot) {\r\n setTimeout(() => {\r\n var _a;\r\n if (this.firstFullSnapshot) {\r\n return;\r\n }\r\n this.firstFullSnapshot = firstFullsnapshot;\r\n this.rebuildFullSnapshot(firstFullsnapshot);\r\n (_a = this.iframe.contentWindow) === null || _a === void 0 ? void 0 : _a.scrollTo(firstFullsnapshot.data.initialOffset);\r\n }, 1);\r\n }\r\n if (this.service.state.context.events.find(indicatesTouchDevice)) {\r\n this.mouse.classList.add('touch-device');\r\n }\r\n }\r\n get timer() {\r\n return this.service.state.context.timer;\r\n }\r\n on(event, handler) {\r\n this.emitter.on(event, handler);\r\n return this;\r\n }\r\n off(event, handler) {\r\n this.emitter.off(event, handler);\r\n return this;\r\n }\r\n setConfig(config) {\r\n Object.keys(config).forEach((key) => {\r\n config[key];\r\n this.config[key] = config[key];\r\n });\r\n if (!this.config.skipInactive) {\r\n this.backToNormal();\r\n }\r\n if (typeof config.speed !== 'undefined') {\r\n this.speedService.send({\r\n type: 'SET_SPEED',\r\n payload: {\r\n speed: config.speed,\r\n },\r\n });\r\n }\r\n if (typeof config.mouseTail !== 'undefined') {\r\n if (config.mouseTail === false) {\r\n if (this.mouseTail) {\r\n this.mouseTail.style.display = 'none';\r\n }\r\n }\r\n else {\r\n if (!this.mouseTail) {\r\n this.mouseTail = document.createElement('canvas');\r\n this.mouseTail.width = Number.parseFloat(this.iframe.width);\r\n this.mouseTail.height = Number.parseFloat(this.iframe.height);\r\n this.mouseTail.classList.add('replayer-mouse-tail');\r\n this.wrapper.insertBefore(this.mouseTail, this.iframe);\r\n }\r\n this.mouseTail.style.display = 'inherit';\r\n }\r\n }\r\n }\r\n getMetaData() {\r\n const firstEvent = this.service.state.context.events[0];\r\n const lastEvent = this.service.state.context.events[this.service.state.context.events.length - 1];\r\n return {\r\n startTime: firstEvent.timestamp,\r\n endTime: lastEvent.timestamp,\r\n totalTime: lastEvent.timestamp - firstEvent.timestamp,\r\n };\r\n }\r\n getCurrentTime() {\r\n return this.timer.timeOffset + this.getTimeOffset();\r\n }\r\n getTimeOffset() {\r\n const { baselineTime, events } = this.service.state.context;\r\n return baselineTime - events[0].timestamp;\r\n }\r\n getMirror() {\r\n return this.mirror;\r\n }\r\n play(timeOffset = 0) {\r\n var _a, _b;\r\n if (this.service.state.matches('paused')) {\r\n this.service.send({ type: 'PLAY', payload: { timeOffset } });\r\n }\r\n else {\r\n this.service.send({ type: 'PAUSE' });\r\n this.service.send({ type: 'PLAY', payload: { timeOffset } });\r\n }\r\n (_b = (_a = this.iframe.contentDocument) === null || _a === void 0 ? void 0 : _a.getElementsByTagName('html')[0]) === null || _b === void 0 ? void 0 : _b.classList.remove('rrweb-paused');\r\n this.emitter.emit(ReplayerEvents.Start);\r\n }\r\n pause(timeOffset) {\r\n var _a, _b;\r\n if (timeOffset === undefined && this.service.state.matches('playing')) {\r\n this.service.send({ type: 'PAUSE' });\r\n }\r\n if (typeof timeOffset === 'number') {\r\n this.play(timeOffset);\r\n this.service.send({ type: 'PAUSE' });\r\n }\r\n (_b = (_a = this.iframe.contentDocument) === null || _a === void 0 ? void 0 : _a.getElementsByTagName('html')[0]) === null || _b === void 0 ? void 0 : _b.classList.add('rrweb-paused');\r\n this.emitter.emit(ReplayerEvents.Pause);\r\n }\r\n resume(timeOffset = 0) {\r\n console.warn(`The 'resume' was deprecated in 1.0. Please use 'play' method which has the same interface.`);\r\n this.play(timeOffset);\r\n this.emitter.emit(ReplayerEvents.Resume);\r\n }\r\n destroy() {\r\n this.pause();\r\n this.config.root.removeChild(this.wrapper);\r\n this.emitter.emit(ReplayerEvents.Destroy);\r\n }\r\n startLive(baselineTime) {\r\n this.service.send({ type: 'TO_LIVE', payload: { baselineTime } });\r\n }\r\n addEvent(rawEvent) {\r\n const event = this.config.unpackFn\r\n ? this.config.unpackFn(rawEvent)\r\n : rawEvent;\r\n if (indicatesTouchDevice(event)) {\r\n this.mouse.classList.add('touch-device');\r\n }\r\n void Promise.resolve().then(() => this.service.send({ type: 'ADD_EVENT', payload: { event } }));\r\n }\r\n enableInteract() {\r\n this.iframe.setAttribute('scrolling', 'auto');\r\n this.iframe.style.pointerEvents = 'auto';\r\n }\r\n disableInteract() {\r\n this.iframe.setAttribute('scrolling', 'no');\r\n this.iframe.style.pointerEvents = 'none';\r\n }\r\n resetCache() {\r\n this.cache = createCache();\r\n }\r\n setupDom() {\r\n this.wrapper = document.createElement('div');\r\n this.wrapper.classList.add('replayer-wrapper');\r\n this.config.root.appendChild(this.wrapper);\r\n this.mouse = document.createElement('div');\r\n this.mouse.classList.add('replayer-mouse');\r\n this.wrapper.appendChild(this.mouse);\r\n if (this.config.mouseTail !== false) {\r\n this.mouseTail = document.createElement('canvas');\r\n this.mouseTail.classList.add('replayer-mouse-tail');\r\n this.mouseTail.style.display = 'inherit';\r\n this.wrapper.appendChild(this.mouseTail);\r\n }\r\n this.iframe = document.createElement('iframe');\r\n const attributes = ['allow-same-origin'];\r\n if (this.config.UNSAFE_replayCanvas) {\r\n attributes.push('allow-scripts');\r\n }\r\n this.iframe.style.display = 'none';\r\n this.iframe.setAttribute('sandbox', attributes.join(' '));\r\n this.disableInteract();\r\n this.wrapper.appendChild(this.iframe);\r\n if (this.iframe.contentWindow && this.iframe.contentDocument) {\r\n polyfill(this.iframe.contentWindow, this.iframe.contentDocument);\r\n polyfill$1(this.iframe.contentWindow);\r\n }\r\n }\r\n rebuildFullSnapshot(event, isSync = false) {\r\n if (!this.iframe.contentDocument) {\r\n return console.warn('Looks like your replayer has been destroyed.');\r\n }\r\n if (Object.keys(this.legacy_missingNodeRetryMap).length) {\r\n console.warn('Found unresolved missing node map', this.legacy_missingNodeRetryMap);\r\n }\r\n this.legacy_missingNodeRetryMap = {};\r\n const collected = [];\r\n const afterAppend = (builtNode, id) => {\r\n this.collectIframeAndAttachDocument(collected, builtNode);\r\n for (const plugin of this.config.plugins || []) {\r\n if (plugin.onBuild)\r\n plugin.onBuild(builtNode, {\r\n id,\r\n replayer: this,\r\n });\r\n }\r\n };\r\n rebuild(event.data.node, {\r\n doc: this.iframe.contentDocument,\r\n afterAppend,\r\n cache: this.cache,\r\n mirror: this.mirror,\r\n });\r\n afterAppend(this.iframe.contentDocument, event.data.node.id);\r\n for (const { mutationInQueue, builtNode } of collected) {\r\n this.attachDocumentToIframe(mutationInQueue, builtNode);\r\n this.newDocumentQueue = this.newDocumentQueue.filter((m) => m !== mutationInQueue);\r\n }\r\n const { documentElement, head } = this.iframe.contentDocument;\r\n this.insertStyleRules(documentElement, head);\r\n if (!this.service.state.matches('playing')) {\r\n this.iframe.contentDocument\r\n .getElementsByTagName('html')[0]\r\n .classList.add('rrweb-paused');\r\n }\r\n this.emitter.emit(ReplayerEvents.FullsnapshotRebuilded, event);\r\n if (!isSync) {\r\n this.waitForStylesheetLoad();\r\n }\r\n if (this.config.UNSAFE_replayCanvas) {\r\n void this.preloadAllImages();\r\n }\r\n }\r\n insertStyleRules(documentElement, head) {\r\n var _a;\r\n const injectStylesRules = rules(this.config.blockClass).concat(this.config.insertStyleRules);\r\n if (this.config.pauseAnimation) {\r\n injectStylesRules.push('html.rrweb-paused *, html.rrweb-paused *:before, html.rrweb-paused *:after { animation-play-state: paused !important; }');\r\n }\r\n if (this.usingVirtualDom) {\r\n const styleEl = this.virtualDom.createElement('style');\r\n this.virtualDom.mirror.add(styleEl, getDefaultSN(styleEl, this.virtualDom.unserializedId));\r\n documentElement.insertBefore(styleEl, head);\r\n styleEl.rules.push({\r\n source: IncrementalSource.StyleSheetRule,\r\n adds: injectStylesRules.map((cssText, index) => ({\r\n rule: cssText,\r\n index,\r\n })),\r\n });\r\n }\r\n else {\r\n const styleEl = document.createElement('style');\r\n documentElement.insertBefore(styleEl, head);\r\n for (let idx = 0; idx < injectStylesRules.length; idx++) {\r\n (_a = styleEl.sheet) === null || _a === void 0 ? void 0 : _a.insertRule(injectStylesRules[idx], idx);\r\n }\r\n }\r\n }\r\n attachDocumentToIframe(mutation, iframeEl) {\r\n const mirror = this.usingVirtualDom\r\n ? this.virtualDom.mirror\r\n : this.mirror;\r\n const collected = [];\r\n const afterAppend = (builtNode, id) => {\r\n this.collectIframeAndAttachDocument(collected, builtNode);\r\n const sn = mirror.getMeta(builtNode);\r\n if ((sn === null || sn === void 0 ? void 0 : sn.type) === NodeType.Element &&\r\n (sn === null || sn === void 0 ? void 0 : sn.tagName.toUpperCase()) === 'HTML') {\r\n const { documentElement, head } = iframeEl.contentDocument;\r\n this.insertStyleRules(documentElement, head);\r\n }\r\n for (const plugin of this.config.plugins || []) {\r\n if (plugin.onBuild)\r\n plugin.onBuild(builtNode, {\r\n id,\r\n replayer: this,\r\n });\r\n }\r\n };\r\n buildNodeWithSN(mutation.node, {\r\n doc: iframeEl.contentDocument,\r\n mirror: mirror,\r\n hackCss: true,\r\n skipChild: false,\r\n afterAppend,\r\n cache: this.cache,\r\n });\r\n afterAppend(iframeEl.contentDocument, mutation.node.id);\r\n for (const { mutationInQueue, builtNode } of collected) {\r\n this.attachDocumentToIframe(mutationInQueue, builtNode);\r\n this.newDocumentQueue = this.newDocumentQueue.filter((m) => m !== mutationInQueue);\r\n }\r\n }\r\n collectIframeAndAttachDocument(collected, builtNode) {\r\n if (isSerializedIframe(builtNode, this.mirror)) {\r\n const mutationInQueue = this.newDocumentQueue.find((m) => m.parentId === this.mirror.getId(builtNode));\r\n if (mutationInQueue) {\r\n collected.push({\r\n mutationInQueue,\r\n builtNode: builtNode,\r\n });\r\n }\r\n }\r\n }\r\n waitForStylesheetLoad() {\r\n var _a;\r\n const head = (_a = this.iframe.contentDocument) === null || _a === void 0 ? void 0 : _a.head;\r\n if (head) {\r\n const unloadSheets = new Set();\r\n let timer;\r\n let beforeLoadState = this.service.state;\r\n const stateHandler = () => {\r\n beforeLoadState = this.service.state;\r\n };\r\n this.emitter.on(ReplayerEvents.Start, stateHandler);\r\n this.emitter.on(ReplayerEvents.Pause, stateHandler);\r\n const unsubscribe = () => {\r\n this.emitter.off(ReplayerEvents.Start, stateHandler);\r\n this.emitter.off(ReplayerEvents.Pause, stateHandler);\r\n };\r\n head\r\n .querySelectorAll('link[rel=\"stylesheet\"]')\r\n .forEach((css) => {\r\n if (!css.sheet) {\r\n unloadSheets.add(css);\r\n css.addEventListener('load', () => {\r\n unloadSheets.delete(css);\r\n if (unloadSheets.size === 0 && timer !== -1) {\r\n if (beforeLoadState.matches('playing')) {\r\n this.play(this.getCurrentTime());\r\n }\r\n this.emitter.emit(ReplayerEvents.LoadStylesheetEnd);\r\n if (timer) {\r\n clearTimeout(timer);\r\n }\r\n unsubscribe();\r\n }\r\n });\r\n }\r\n });\r\n if (unloadSheets.size > 0) {\r\n this.service.send({ type: 'PAUSE' });\r\n this.emitter.emit(ReplayerEvents.LoadStylesheetStart);\r\n timer = setTimeout(() => {\r\n if (beforeLoadState.matches('playing')) {\r\n this.play(this.getCurrentTime());\r\n }\r\n timer = -1;\r\n unsubscribe();\r\n }, this.config.loadTimeout);\r\n }\r\n }\r\n }\r\n preloadAllImages() {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n this.service.state;\r\n const stateHandler = () => {\r\n this.service.state;\r\n };\r\n this.emitter.on(ReplayerEvents.Start, stateHandler);\r\n this.emitter.on(ReplayerEvents.Pause, stateHandler);\r\n const promises = [];\r\n for (const event of this.service.state.context.events) {\r\n if (event.type === EventType.IncrementalSnapshot &&\r\n event.data.source === IncrementalSource.CanvasMutation) {\r\n promises.push(this.deserializeAndPreloadCanvasEvents(event.data, event));\r\n const commands = 'commands' in event.data ? event.data.commands : [event.data];\r\n commands.forEach((c) => {\r\n this.preloadImages(c, event);\r\n });\r\n }\r\n }\r\n return Promise.all(promises);\r\n });\r\n }\r\n preloadImages(data, event) {\r\n if (data.property === 'drawImage' &&\r\n typeof data.args[0] === 'string' &&\r\n !this.imageMap.has(event)) {\r\n const canvas = document.createElement('canvas');\r\n const ctx = canvas.getContext('2d');\r\n const imgd = ctx === null || ctx === void 0 ? void 0 : ctx.createImageData(canvas.width, canvas.height);\r\n imgd === null || imgd === void 0 ? void 0 : imgd.data;\r\n JSON.parse(data.args[0]);\r\n ctx === null || ctx === void 0 ? void 0 : ctx.putImageData(imgd, 0, 0);\r\n }\r\n }\r\n deserializeAndPreloadCanvasEvents(data, event) {\r\n return __awaiter(this, void 0, void 0, function* () {\r\n if (!this.canvasEventMap.has(event)) {\r\n const status = {\r\n isUnchanged: true,\r\n };\r\n if ('commands' in data) {\r\n const commands = yield Promise.all(data.commands.map((c) => __awaiter(this, void 0, void 0, function* () {\r\n const args = yield Promise.all(c.args.map(deserializeArg(this.imageMap, null, status)));\r\n return Object.assign(Object.assign({}, c), { args });\r\n })));\r\n if (status.isUnchanged === false)\r\n this.canvasEventMap.set(event, Object.assign(Object.assign({}, data), { commands }));\r\n }\r\n else {\r\n const args = yield Promise.all(data.args.map(deserializeArg(this.imageMap, null, status)));\r\n if (status.isUnchanged === false)\r\n this.canvasEventMap.set(event, Object.assign(Object.assign({}, data), { args }));\r\n }\r\n }\r\n });\r\n }\r\n applyIncremental(e, isSync) {\r\n var _a, _b, _c;\r\n const { data: d } = e;\r\n switch (d.source) {\r\n case IncrementalSource.Mutation: {\r\n try {\r\n this.applyMutation(d, isSync);\r\n }\r\n catch (error) {\r\n this.warn(`Exception in mutation ${error.message || error}`, d);\r\n }\r\n break;\r\n }\r\n case IncrementalSource.Drag:\r\n case IncrementalSource.TouchMove:\r\n case IncrementalSource.MouseMove:\r\n if (isSync) {\r\n const lastPosition = d.positions[d.positions.length - 1];\r\n this.mousePos = {\r\n x: lastPosition.x,\r\n y: lastPosition.y,\r\n id: lastPosition.id,\r\n debugData: d,\r\n };\r\n }\r\n else {\r\n d.positions.forEach((p) => {\r\n const action = {\r\n doAction: () => {\r\n this.moveAndHover(p.x, p.y, p.id, isSync, d);\r\n },\r\n delay: p.timeOffset +\r\n e.timestamp -\r\n this.service.state.context.baselineTime,\r\n };\r\n this.timer.addAction(action);\r\n });\r\n this.timer.addAction({\r\n doAction() {\r\n },\r\n delay: e.delay - ((_a = d.positions[0]) === null || _a === void 0 ? void 0 : _a.timeOffset),\r\n });\r\n }\r\n break;\r\n case IncrementalSource.MouseInteraction: {\r\n if (d.id === -1 || isSync) {\r\n break;\r\n }\r\n const event = new Event(MouseInteractions[d.type].toLowerCase());\r\n const target = this.mirror.getNode(d.id);\r\n if (!target) {\r\n return this.debugNodeNotFound(d, d.id);\r\n }\r\n this.emitter.emit(ReplayerEvents.MouseInteraction, {\r\n type: d.type,\r\n target,\r\n });\r\n const { triggerFocus } = this.config;\r\n switch (d.type) {\r\n case MouseInteractions.Blur:\r\n if ('blur' in target) {\r\n target.blur();\r\n }\r\n break;\r\n case MouseInteractions.Focus:\r\n if (triggerFocus && target.focus) {\r\n target.focus({\r\n preventScroll: true,\r\n });\r\n }\r\n break;\r\n case MouseInteractions.Click:\r\n case MouseInteractions.TouchStart:\r\n case MouseInteractions.TouchEnd:\r\n if (isSync) {\r\n if (d.type === MouseInteractions.TouchStart) {\r\n this.touchActive = true;\r\n }\r\n else if (d.type === MouseInteractions.TouchEnd) {\r\n this.touchActive = false;\r\n }\r\n this.mousePos = {\r\n x: d.x,\r\n y: d.y,\r\n id: d.id,\r\n debugData: d,\r\n };\r\n }\r\n else {\r\n if (d.type === MouseInteractions.TouchStart) {\r\n this.tailPositions.length = 0;\r\n }\r\n this.moveAndHover(d.x, d.y, d.id, isSync, d);\r\n if (d.type === MouseInteractions.Click) {\r\n this.mouse.classList.remove('active');\r\n void this.mouse.offsetWidth;\r\n this.mouse.classList.add('active');\r\n }\r\n else if (d.type === MouseInteractions.TouchStart) {\r\n void this.mouse.offsetWidth;\r\n this.mouse.classList.add('touch-active');\r\n }\r\n else if (d.type === MouseInteractions.TouchEnd) {\r\n this.mouse.classList.remove('touch-active');\r\n }\r\n }\r\n break;\r\n case MouseInteractions.TouchCancel:\r\n if (isSync) {\r\n this.touchActive = false;\r\n }\r\n else {\r\n this.mouse.classList.remove('touch-active');\r\n }\r\n break;\r\n default:\r\n target.dispatchEvent(event);\r\n }\r\n break;\r\n }\r\n case IncrementalSource.Scroll: {\r\n if (d.id === -1) {\r\n break;\r\n }\r\n if (this.usingVirtualDom) {\r\n const target = this.virtualDom.mirror.getNode(d.id);\r\n if (!target) {\r\n return this.debugNodeNotFound(d, d.id);\r\n }\r\n target.scrollData = d;\r\n break;\r\n }\r\n this.applyScroll(d, isSync);\r\n break;\r\n }\r\n case IncrementalSource.ViewportResize:\r\n this.emitter.emit(ReplayerEvents.Resize, {\r\n width: d.width,\r\n height: d.height,\r\n });\r\n break;\r\n case IncrementalSource.Input: {\r\n if (d.id === -1) {\r\n break;\r\n }\r\n if (this.usingVirtualDom) {\r\n const target = this.virtualDom.mirror.getNode(d.id);\r\n if (!target) {\r\n return this.debugNodeNotFound(d, d.id);\r\n }\r\n target.inputData = d;\r\n break;\r\n }\r\n this.applyInput(d);\r\n break;\r\n }\r\n case IncrementalSource.MediaInteraction: {\r\n const target = this.usingVirtualDom\r\n ? this.virtualDom.mirror.getNode(d.id)\r\n : this.mirror.getNode(d.id);\r\n if (!target) {\r\n return this.debugNodeNotFound(d, d.id);\r\n }\r\n const mediaEl = target;\r\n try {\r\n if (d.currentTime) {\r\n mediaEl.currentTime = d.currentTime;\r\n }\r\n if (d.volume) {\r\n mediaEl.volume = d.volume;\r\n }\r\n if (d.muted) {\r\n mediaEl.muted = d.muted;\r\n }\r\n if (d.type === 1) {\r\n mediaEl.pause();\r\n }\r\n if (d.type === 0) {\r\n void mediaEl.play();\r\n }\r\n if (d.type === 4) {\r\n mediaEl.playbackRate = d.playbackRate;\r\n }\r\n }\r\n catch (error) {\r\n if (this.config.showWarning) {\r\n console.warn(`Failed to replay media interactions: ${error.message || error}`);\r\n }\r\n }\r\n break;\r\n }\r\n case IncrementalSource.StyleSheetRule:\r\n case IncrementalSource.StyleDeclaration: {\r\n if (this.usingVirtualDom) {\r\n if (d.styleId)\r\n this.constructedStyleMutations.push(d);\r\n else if (d.id)\r\n (_b = this.virtualDom.mirror.getNode(d.id)) === null || _b === void 0 ? void 0 : _b.rules.push(d);\r\n }\r\n else\r\n this.applyStyleSheetMutation(d);\r\n break;\r\n }\r\n case IncrementalSource.CanvasMutation: {\r\n if (!this.config.UNSAFE_replayCanvas) {\r\n return;\r\n }\r\n if (this.usingVirtualDom) {\r\n const target = this.virtualDom.mirror.getNode(d.id);\r\n if (!target) {\r\n return this.debugNodeNotFound(d, d.id);\r\n }\r\n target.canvasMutations.push({\r\n event: e,\r\n mutation: d,\r\n });\r\n }\r\n else {\r\n const target = this.mirror.getNode(d.id);\r\n if (!target) {\r\n return this.debugNodeNotFound(d, d.id);\r\n }\r\n void canvasMutation({\r\n event: e,\r\n mutation: d,\r\n target: target,\r\n imageMap: this.imageMap,\r\n canvasEventMap: this.canvasEventMap,\r\n errorHandler: this.warnCanvasMutationFailed.bind(this),\r\n });\r\n }\r\n break;\r\n }\r\n case IncrementalSource.Font: {\r\n try {\r\n const fontFace = new FontFace(d.family, d.buffer\r\n ? new Uint8Array(JSON.parse(d.fontSource))\r\n : d.fontSource, d.descriptors);\r\n (_c = this.iframe.contentDocument) === null || _c === void 0 ? void 0 : _c.fonts.add(fontFace);\r\n }\r\n catch (error) {\r\n if (this.config.showWarning) {\r\n console.warn(error);\r\n }\r\n }\r\n break;\r\n }\r\n case IncrementalSource.Selection: {\r\n if (isSync) {\r\n this.lastSelectionData = d;\r\n break;\r\n }\r\n this.applySelection(d);\r\n break;\r\n }\r\n case IncrementalSource.AdoptedStyleSheet: {\r\n if (this.usingVirtualDom)\r\n this.adoptedStyleSheets.push(d);\r\n else\r\n this.applyAdoptedStyleSheet(d);\r\n break;\r\n }\r\n }\r\n }\r\n applyMutation(d, isSync) {\r\n if (this.config.useVirtualDom && !this.usingVirtualDom && isSync) {\r\n this.usingVirtualDom = true;\r\n buildFromDom(this.iframe.contentDocument, this.mirror, this.virtualDom);\r\n if (Object.keys(this.legacy_missingNodeRetryMap).length) {\r\n for (const key in this.legacy_missingNodeRetryMap) {\r\n try {\r\n const value = this.legacy_missingNodeRetryMap[key];\r\n const virtualNode = buildFromNode(value.node, this.virtualDom, this.mirror);\r\n if (virtualNode)\r\n value.node = virtualNode;\r\n }\r\n catch (error) {\r\n if (this.config.showWarning) {\r\n console.warn(error);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n const mirror = this.usingVirtualDom ? this.virtualDom.mirror : this.mirror;\r\n d.removes.forEach((mutation) => {\r\n var _a;\r\n const target = mirror.getNode(mutation.id);\r\n if (!target) {\r\n if (d.removes.find((r) => r.id === mutation.parentId)) {\r\n return;\r\n }\r\n return this.warnNodeNotFound(d, mutation.id);\r\n }\r\n let parent = mirror.getNode(mutation.parentId);\r\n if (!parent) {\r\n return this.warnNodeNotFound(d, mutation.parentId);\r\n }\r\n if (mutation.isShadow && hasShadowRoot(parent)) {\r\n parent = parent.shadowRoot;\r\n }\r\n mirror.removeNodeFromMap(target);\r\n if (parent)\r\n try {\r\n parent.removeChild(target);\r\n if (this.usingVirtualDom &&\r\n target.nodeName === '#text' &&\r\n parent.nodeName === 'STYLE' &&\r\n ((_a = parent.rules) === null || _a === void 0 ? void 0 : _a.length) > 0)\r\n parent.rules = [];\r\n }\r\n catch (error) {\r\n if (error instanceof DOMException) {\r\n this.warn('parent could not remove child in mutation', parent, target, d);\r\n }\r\n else {\r\n throw error;\r\n }\r\n }\r\n });\r\n const legacy_missingNodeMap = Object.assign({}, this.legacy_missingNodeRetryMap);\r\n const queue = [];\r\n const nextNotInDOM = (mutation) => {\r\n let next = null;\r\n if (mutation.nextId) {\r\n next = mirror.getNode(mutation.nextId);\r\n }\r\n if (mutation.nextId !== null &&\r\n mutation.nextId !== undefined &&\r\n mutation.nextId !== -1 &&\r\n !next) {\r\n return true;\r\n }\r\n return false;\r\n };\r\n const appendNode = (mutation) => {\r\n var _a;\r\n if (!this.iframe.contentDocument) {\r\n return console.warn('Looks like your replayer has been destroyed.');\r\n }\r\n let parent = mirror.getNode(mutation.parentId);\r\n if (!parent) {\r\n if (mutation.node.type === NodeType.Document) {\r\n return this.newDocumentQueue.push(mutation);\r\n }\r\n return queue.push(mutation);\r\n }\r\n if (mutation.node.isShadow) {\r\n if (!hasShadowRoot(parent)) {\r\n parent.attachShadow({ mode: 'open' });\r\n parent = parent.shadowRoot;\r\n }\r\n else\r\n parent = parent.shadowRoot;\r\n }\r\n let previous = null;\r\n let next = null;\r\n if (mutation.previousId) {\r\n previous = mirror.getNode(mutation.previousId);\r\n }\r\n if (mutation.nextId) {\r\n next = mirror.getNode(mutation.nextId);\r\n }\r\n if (nextNotInDOM(mutation)) {\r\n return queue.push(mutation);\r\n }\r\n if (mutation.node.rootId && !mirror.getNode(mutation.node.rootId)) {\r\n return;\r\n }\r\n const targetDoc = mutation.node.rootId\r\n ? mirror.getNode(mutation.node.rootId)\r\n : this.usingVirtualDom\r\n ? this.virtualDom\r\n : this.iframe.contentDocument;\r\n if (isSerializedIframe(parent, mirror)) {\r\n this.attachDocumentToIframe(mutation, parent);\r\n return;\r\n }\r\n const afterAppend = (node, id) => {\r\n for (const plugin of this.config.plugins || []) {\r\n if (plugin.onBuild)\r\n plugin.onBuild(node, { id, replayer: this });\r\n }\r\n };\r\n const target = buildNodeWithSN(mutation.node, {\r\n doc: targetDoc,\r\n mirror: mirror,\r\n skipChild: true,\r\n hackCss: true,\r\n cache: this.cache,\r\n afterAppend,\r\n });\r\n if (mutation.previousId === -1 || mutation.nextId === -1) {\r\n legacy_missingNodeMap[mutation.node.id] = {\r\n node: target,\r\n mutation,\r\n };\r\n return;\r\n }\r\n const parentSn = mirror.getMeta(parent);\r\n if (parentSn &&\r\n parentSn.type === NodeType.Element &&\r\n parentSn.tagName === 'textarea' &&\r\n mutation.node.type === NodeType.Text) {\r\n const childNodeArray = Array.isArray(parent.childNodes)\r\n ? parent.childNodes\r\n : Array.from(parent.childNodes);\r\n for (const c of childNodeArray) {\r\n if (c.nodeType === parent.TEXT_NODE) {\r\n parent.removeChild(c);\r\n }\r\n }\r\n }\r\n if (previous && previous.nextSibling && previous.nextSibling.parentNode) {\r\n parent.insertBefore(target, previous.nextSibling);\r\n }\r\n else if (next && next.parentNode) {\r\n parent.contains(next)\r\n ? parent.insertBefore(target, next)\r\n : parent.insertBefore(target, null);\r\n }\r\n else {\r\n if (parent === targetDoc) {\r\n while (targetDoc.firstChild) {\r\n targetDoc.removeChild(targetDoc.firstChild);\r\n }\r\n }\r\n parent.appendChild(target);\r\n }\r\n afterAppend(target, mutation.node.id);\r\n if (this.usingVirtualDom &&\r\n target.nodeName === '#text' &&\r\n parent.nodeName === 'STYLE' &&\r\n ((_a = parent.rules) === null || _a === void 0 ? void 0 : _a.length) > 0)\r\n parent.rules = [];\r\n if (isSerializedIframe(target, this.mirror)) {\r\n const targetId = this.mirror.getId(target);\r\n const mutationInQueue = this.newDocumentQueue.find((m) => m.parentId === targetId);\r\n if (mutationInQueue) {\r\n this.attachDocumentToIframe(mutationInQueue, target);\r\n this.newDocumentQueue = this.newDocumentQueue.filter((m) => m !== mutationInQueue);\r\n }\r\n }\r\n if (mutation.previousId || mutation.nextId) {\r\n this.legacy_resolveMissingNode(legacy_missingNodeMap, parent, target, mutation);\r\n }\r\n };\r\n d.adds.forEach((mutation) => {\r\n appendNode(mutation);\r\n });\r\n const startTime = Date.now();\r\n while (queue.length) {\r\n const resolveTrees = queueToResolveTrees(queue);\r\n queue.length = 0;\r\n if (Date.now() - startTime > 500) {\r\n this.warn('Timeout in the loop, please check the resolve tree data:', resolveTrees);\r\n break;\r\n }\r\n for (const tree of resolveTrees) {\r\n const parent = mirror.getNode(tree.value.parentId);\r\n if (!parent) {\r\n this.debug('Drop resolve tree since there is no parent for the root node.', tree);\r\n }\r\n else {\r\n iterateResolveTree(tree, (mutation) => {\r\n appendNode(mutation);\r\n });\r\n }\r\n }\r\n }\r\n if (Object.keys(legacy_missingNodeMap).length) {\r\n Object.assign(this.legacy_missingNodeRetryMap, legacy_missingNodeMap);\r\n }\r\n uniqueTextMutations(d.texts).forEach((mutation) => {\r\n var _a;\r\n const target = mirror.getNode(mutation.id);\r\n if (!target) {\r\n if (d.removes.find((r) => r.id === mutation.id)) {\r\n return;\r\n }\r\n return this.warnNodeNotFound(d, mutation.id);\r\n }\r\n target.textContent = mutation.value;\r\n if (this.usingVirtualDom) {\r\n const parent = target.parentNode;\r\n if (((_a = parent === null || parent === void 0 ? void 0 : parent.rules) === null || _a === void 0 ? void 0 : _a.length) > 0)\r\n parent.rules = [];\r\n }\r\n });\r\n d.attributes.forEach((mutation) => {\r\n const target = mirror.getNode(mutation.id);\r\n if (!target) {\r\n if (d.removes.find((r) => r.id === mutation.id)) {\r\n return;\r\n }\r\n return this.warnNodeNotFound(d, mutation.id);\r\n }\r\n for (const attributeName in mutation.attributes) {\r\n if (typeof attributeName === 'string') {\r\n const value = mutation.attributes[attributeName];\r\n if (value === null) {\r\n target.removeAttribute(attributeName);\r\n }\r\n else if (typeof value === 'string') {\r\n try {\r\n if (attributeName === '_cssText' &&\r\n (target.nodeName === 'LINK' || target.nodeName === 'STYLE')) {\r\n try {\r\n const newSn = mirror.getMeta(target);\r\n Object.assign(newSn.attributes, mutation.attributes);\r\n const newNode = buildNodeWithSN(newSn, {\r\n doc: target.ownerDocument,\r\n mirror: mirror,\r\n skipChild: true,\r\n hackCss: true,\r\n cache: this.cache,\r\n });\r\n const siblingNode = target.nextSibling;\r\n const parentNode = target.parentNode;\r\n if (newNode && parentNode) {\r\n parentNode.removeChild(target);\r\n parentNode.insertBefore(newNode, siblingNode);\r\n mirror.replace(mutation.id, newNode);\r\n break;\r\n }\r\n }\r\n catch (e) {\r\n }\r\n }\r\n target.setAttribute(attributeName, value);\r\n }\r\n catch (error) {\r\n if (this.config.showWarning) {\r\n console.warn('An error occurred may due to the checkout feature.', error);\r\n }\r\n }\r\n }\r\n else if (attributeName === 'style') {\r\n const styleValues = value;\r\n const targetEl = target;\r\n for (const s in styleValues) {\r\n if (styleValues[s] === false) {\r\n targetEl.style.removeProperty(s);\r\n }\r\n else if (styleValues[s] instanceof Array) {\r\n const svp = styleValues[s];\r\n targetEl.style.setProperty(s, svp[0], svp[1]);\r\n }\r\n else {\r\n const svs = styleValues[s];\r\n targetEl.style.setProperty(s, svs);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n });\r\n }\r\n applyScroll(d, isSync) {\r\n var _a, _b;\r\n const target = this.mirror.getNode(d.id);\r\n if (!target) {\r\n return this.debugNodeNotFound(d, d.id);\r\n }\r\n const sn = this.mirror.getMeta(target);\r\n if (target === this.iframe.contentDocument) {\r\n (_a = this.iframe.contentWindow) === null || _a === void 0 ? void 0 : _a.scrollTo({\r\n top: d.y,\r\n left: d.x,\r\n behavior: isSync ? 'auto' : 'smooth',\r\n });\r\n }\r\n else if ((sn === null || sn === void 0 ? void 0 : sn.type) === NodeType.Document) {\r\n (_b = target.defaultView) === null || _b === void 0 ? void 0 : _b.scrollTo({\r\n top: d.y,\r\n left: d.x,\r\n behavior: isSync ? 'auto' : 'smooth',\r\n });\r\n }\r\n else {\r\n try {\r\n target.scrollTo({\r\n top: d.y,\r\n left: d.x,\r\n behavior: isSync ? 'auto' : 'smooth',\r\n });\r\n }\r\n catch (error) {\r\n }\r\n }\r\n }\r\n applyInput(d) {\r\n const target = this.mirror.getNode(d.id);\r\n if (!target) {\r\n return this.debugNodeNotFound(d, d.id);\r\n }\r\n try {\r\n target.checked = d.isChecked;\r\n target.value = d.text;\r\n }\r\n catch (error) {\r\n }\r\n }\r\n applySelection(d) {\r\n try {\r\n const selectionSet = new Set();\r\n const ranges = d.ranges.map(({ start, startOffset, end, endOffset }) => {\r\n const startContainer = this.mirror.getNode(start);\r\n const endContainer = this.mirror.getNode(end);\r\n if (!startContainer || !endContainer)\r\n return;\r\n const result = new Range();\r\n result.setStart(startContainer, startOffset);\r\n result.setEnd(endContainer, endOffset);\r\n const doc = startContainer.ownerDocument;\r\n const selection = doc === null || doc === void 0 ? void 0 : doc.getSelection();\r\n selection && selectionSet.add(selection);\r\n return {\r\n range: result,\r\n selection,\r\n };\r\n });\r\n selectionSet.forEach((s) => s.removeAllRanges());\r\n ranges.forEach((r) => { var _a; return r && ((_a = r.selection) === null || _a === void 0 ? void 0 : _a.addRange(r.range)); });\r\n }\r\n catch (error) {\r\n }\r\n }\r\n applyStyleSheetMutation(data) {\r\n var _a;\r\n let styleSheet = null;\r\n if (data.styleId)\r\n styleSheet = this.styleMirror.getStyle(data.styleId);\r\n else if (data.id)\r\n styleSheet =\r\n ((_a = this.mirror.getNode(data.id)) === null || _a === void 0 ? void 0 : _a.sheet) || null;\r\n if (!styleSheet)\r\n return;\r\n if (data.source === IncrementalSource.StyleSheetRule)\r\n this.applyStyleSheetRule(data, styleSheet);\r\n else if (data.source === IncrementalSource.StyleDeclaration)\r\n this.applyStyleDeclaration(data, styleSheet);\r\n }\r\n applyStyleSheetRule(data, styleSheet) {\r\n var _a, _b, _c, _d;\r\n (_a = data.adds) === null || _a === void 0 ? void 0 : _a.forEach(({ rule, index: nestedIndex }) => {\r\n try {\r\n if (Array.isArray(nestedIndex)) {\r\n const { positions, index } = getPositionsAndIndex(nestedIndex);\r\n const nestedRule = getNestedRule(styleSheet.cssRules, positions);\r\n nestedRule.insertRule(rule, index);\r\n }\r\n else {\r\n const index = nestedIndex === undefined\r\n ? undefined\r\n : Math.min(nestedIndex, styleSheet.cssRules.length);\r\n styleSheet === null || styleSheet === void 0 ? void 0 : styleSheet.insertRule(rule, index);\r\n }\r\n }\r\n catch (e) {\r\n }\r\n });\r\n (_b = data.removes) === null || _b === void 0 ? void 0 : _b.forEach(({ index: nestedIndex }) => {\r\n try {\r\n if (Array.isArray(nestedIndex)) {\r\n const { positions, index } = getPositionsAndIndex(nestedIndex);\r\n const nestedRule = getNestedRule(styleSheet.cssRules, positions);\r\n nestedRule.deleteRule(index || 0);\r\n }\r\n else {\r\n styleSheet === null || styleSheet === void 0 ? void 0 : styleSheet.deleteRule(nestedIndex);\r\n }\r\n }\r\n catch (e) {\r\n }\r\n });\r\n if (data.replace)\r\n try {\r\n void ((_c = styleSheet.replace) === null || _c === void 0 ? void 0 : _c.call(styleSheet, data.replace));\r\n }\r\n catch (e) {\r\n }\r\n if (data.replaceSync)\r\n try {\r\n (_d = styleSheet.replaceSync) === null || _d === void 0 ? void 0 : _d.call(styleSheet, data.replaceSync);\r\n }\r\n catch (e) {\r\n }\r\n }\r\n applyStyleDeclaration(data, styleSheet) {\r\n if (data.set) {\r\n const rule = getNestedRule(styleSheet.rules, data.index);\r\n rule.style.setProperty(data.set.property, data.set.value, data.set.priority);\r\n }\r\n if (data.remove) {\r\n const rule = getNestedRule(styleSheet.rules, data.index);\r\n rule.style.removeProperty(data.remove.property);\r\n }\r\n }\r\n applyAdoptedStyleSheet(data) {\r\n var _a;\r\n const targetHost = this.mirror.getNode(data.id);\r\n if (!targetHost)\r\n return;\r\n (_a = data.styles) === null || _a === void 0 ? void 0 : _a.forEach((style) => {\r\n var _a;\r\n let newStyleSheet = null;\r\n let hostWindow = null;\r\n if (hasShadowRoot(targetHost))\r\n hostWindow = ((_a = targetHost.ownerDocument) === null || _a === void 0 ? void 0 : _a.defaultView) || null;\r\n else if (targetHost.nodeName === '#document')\r\n hostWindow = targetHost.defaultView;\r\n if (!hostWindow)\r\n return;\r\n try {\r\n newStyleSheet = new hostWindow.CSSStyleSheet();\r\n this.styleMirror.add(newStyleSheet, style.styleId);\r\n this.applyStyleSheetRule({\r\n source: IncrementalSource.StyleSheetRule,\r\n adds: style.rules,\r\n }, newStyleSheet);\r\n }\r\n catch (e) {\r\n }\r\n });\r\n const MAX_RETRY_TIME = 10;\r\n let count = 0;\r\n const adoptStyleSheets = (targetHost, styleIds) => {\r\n const stylesToAdopt = styleIds\r\n .map((styleId) => this.styleMirror.getStyle(styleId))\r\n .filter((style) => style !== null);\r\n if (hasShadowRoot(targetHost))\r\n targetHost.shadowRoot.adoptedStyleSheets = stylesToAdopt;\r\n else if (targetHost.nodeName === '#document')\r\n targetHost.adoptedStyleSheets = stylesToAdopt;\r\n if (stylesToAdopt.length !== styleIds.length && count < MAX_RETRY_TIME) {\r\n setTimeout(() => adoptStyleSheets(targetHost, styleIds), 0 + 100 * count);\r\n count++;\r\n }\r\n };\r\n adoptStyleSheets(targetHost, data.styleIds);\r\n }\r\n legacy_resolveMissingNode(map, parent, target, targetMutation) {\r\n const { previousId, nextId } = targetMutation;\r\n const previousInMap = previousId && map[previousId];\r\n const nextInMap = nextId && map[nextId];\r\n if (previousInMap) {\r\n const { node, mutation } = previousInMap;\r\n parent.insertBefore(node, target);\r\n delete map[mutation.node.id];\r\n delete this.legacy_missingNodeRetryMap[mutation.node.id];\r\n if (mutation.previousId || mutation.nextId) {\r\n this.legacy_resolveMissingNode(map, parent, node, mutation);\r\n }\r\n }\r\n if (nextInMap) {\r\n const { node, mutation } = nextInMap;\r\n parent.insertBefore(node, target.nextSibling);\r\n delete map[mutation.node.id];\r\n delete this.legacy_missingNodeRetryMap[mutation.node.id];\r\n if (mutation.previousId || mutation.nextId) {\r\n this.legacy_resolveMissingNode(map, parent, node, mutation);\r\n }\r\n }\r\n }\r\n moveAndHover(x, y, id, isSync, debugData) {\r\n const target = this.mirror.getNode(id);\r\n if (!target) {\r\n return this.debugNodeNotFound(debugData, id);\r\n }\r\n const base = getBaseDimension(target, this.iframe);\r\n const _x = x * base.absoluteScale + base.x;\r\n const _y = y * base.absoluteScale + base.y;\r\n this.mouse.style.left = `${_x}px`;\r\n this.mouse.style.top = `${_y}px`;\r\n if (!isSync) {\r\n this.drawMouseTail({ x: _x, y: _y });\r\n }\r\n this.hoverElements(target);\r\n }\r\n drawMouseTail(position) {\r\n if (!this.mouseTail) {\r\n return;\r\n }\r\n const { lineCap, lineWidth, strokeStyle, duration } = this.config.mouseTail === true\r\n ? defaultMouseTailConfig\r\n : Object.assign({}, defaultMouseTailConfig, this.config.mouseTail);\r\n const draw = () => {\r\n if (!this.mouseTail) {\r\n return;\r\n }\r\n const ctx = this.mouseTail.getContext('2d');\r\n if (!ctx || !this.tailPositions.length) {\r\n return;\r\n }\r\n ctx.clearRect(0, 0, this.mouseTail.width, this.mouseTail.height);\r\n ctx.beginPath();\r\n ctx.lineWidth = lineWidth;\r\n ctx.lineCap = lineCap;\r\n ctx.strokeStyle = strokeStyle;\r\n ctx.moveTo(this.tailPositions[0].x, this.tailPositions[0].y);\r\n this.tailPositions.forEach((p) => ctx.lineTo(p.x, p.y));\r\n ctx.stroke();\r\n };\r\n this.tailPositions.push(position);\r\n draw();\r\n setTimeout(() => {\r\n this.tailPositions = this.tailPositions.filter((p) => p !== position);\r\n draw();\r\n }, duration / this.speedService.state.context.timer.speed);\r\n }\r\n hoverElements(el) {\r\n var _a;\r\n (_a = this.iframe.contentDocument) === null || _a === void 0 ? void 0 : _a.querySelectorAll('.\\\\:hover').forEach((hoveredEl) => {\r\n hoveredEl.classList.remove(':hover');\r\n });\r\n let currentEl = el;\r\n while (currentEl) {\r\n if (currentEl.classList) {\r\n currentEl.classList.add(':hover');\r\n }\r\n currentEl = currentEl.parentElement;\r\n }\r\n }\r\n isUserInteraction(event) {\r\n if (event.type !== EventType.IncrementalSnapshot) {\r\n return false;\r\n }\r\n return (event.data.source > IncrementalSource.Mutation &&\r\n event.data.source <= IncrementalSource.Input);\r\n }\r\n backToNormal() {\r\n this.nextUserInteractionEvent = null;\r\n if (this.speedService.state.matches('normal')) {\r\n return;\r\n }\r\n this.speedService.send({ type: 'BACK_TO_NORMAL' });\r\n this.emitter.emit(ReplayerEvents.SkipEnd, {\r\n speed: this.speedService.state.context.normalSpeed,\r\n });\r\n }\r\n warnNodeNotFound(d, id) {\r\n this.warn(`Node with id '${id}' not found. `, d);\r\n }\r\n warnCanvasMutationFailed(d, error) {\r\n this.warn(`Has error on canvas update`, error, 'canvas mutation:', d);\r\n }\r\n debugNodeNotFound(d, id) {\r\n this.debug(REPLAY_CONSOLE_PREFIX, `Node with id '${id}' not found. `, d);\r\n }\r\n warn(...args) {\r\n if (!this.config.showWarning) {\r\n return;\r\n }\r\n console.warn(REPLAY_CONSOLE_PREFIX, ...args);\r\n }\r\n debug(...args) {\r\n if (!this.config.showDebug) {\r\n return;\r\n }\r\n console.log(REPLAY_CONSOLE_PREFIX, ...args);\r\n }\r\n}\n\nexport { Replayer };\n","import { interpret as v, createMachine as s, assign as o } from './../../../../ext/@xstate/fsm/es/index.js';\nimport { EventType, IncrementalSource, ReplayerEvents } from '../../../types/dist/types.js';\nimport { addDelay } from './timer.js';\n\nfunction discardPriorSnapshots(events, baselineTime) {\r\n for (let idx = events.length - 1; idx >= 0; idx--) {\r\n const event = events[idx];\r\n if (event.type === EventType.Meta) {\r\n if (event.timestamp <= baselineTime) {\r\n return events.slice(idx);\r\n }\r\n }\r\n }\r\n return events;\r\n}\r\nfunction createPlayerService(context, { getCastFn, applyEventsSynchronously, emitter }) {\r\n const playerMachine = s({\r\n id: 'player',\r\n context,\r\n initial: 'paused',\r\n states: {\r\n playing: {\r\n on: {\r\n PAUSE: {\r\n target: 'paused',\r\n actions: ['pause'],\r\n },\r\n CAST_EVENT: {\r\n target: 'playing',\r\n actions: 'castEvent',\r\n },\r\n END: {\r\n target: 'paused',\r\n actions: ['resetLastPlayedEvent', 'pause'],\r\n },\r\n ADD_EVENT: {\r\n target: 'playing',\r\n actions: ['addEvent'],\r\n },\r\n },\r\n },\r\n paused: {\r\n on: {\r\n PLAY: {\r\n target: 'playing',\r\n actions: ['recordTimeOffset', 'play'],\r\n },\r\n CAST_EVENT: {\r\n target: 'paused',\r\n actions: 'castEvent',\r\n },\r\n TO_LIVE: {\r\n target: 'live',\r\n actions: ['startLive'],\r\n },\r\n ADD_EVENT: {\r\n target: 'paused',\r\n actions: ['addEvent'],\r\n },\r\n },\r\n },\r\n live: {\r\n on: {\r\n ADD_EVENT: {\r\n target: 'live',\r\n actions: ['addEvent'],\r\n },\r\n CAST_EVENT: {\r\n target: 'live',\r\n actions: ['castEvent'],\r\n },\r\n },\r\n },\r\n },\r\n }, {\r\n actions: {\r\n castEvent: o({\r\n lastPlayedEvent: (ctx, event) => {\r\n if (event.type === 'CAST_EVENT') {\r\n return event.payload.event;\r\n }\r\n return ctx.lastPlayedEvent;\r\n },\r\n }),\r\n recordTimeOffset: o((ctx, event) => {\r\n let timeOffset = ctx.timeOffset;\r\n if ('payload' in event && 'timeOffset' in event.payload) {\r\n timeOffset = event.payload.timeOffset;\r\n }\r\n return Object.assign(Object.assign({}, ctx), { timeOffset, baselineTime: ctx.events[0].timestamp + timeOffset });\r\n }),\r\n play(ctx) {\r\n var _a;\r\n const { timer, events, baselineTime, lastPlayedEvent } = ctx;\r\n timer.clear();\r\n for (const event of events) {\r\n addDelay(event, baselineTime);\r\n }\r\n const neededEvents = discardPriorSnapshots(events, baselineTime);\r\n let lastPlayedTimestamp = lastPlayedEvent === null || lastPlayedEvent === void 0 ? void 0 : lastPlayedEvent.timestamp;\r\n if ((lastPlayedEvent === null || lastPlayedEvent === void 0 ? void 0 : lastPlayedEvent.type) === EventType.IncrementalSnapshot &&\r\n lastPlayedEvent.data.source === IncrementalSource.MouseMove) {\r\n lastPlayedTimestamp =\r\n lastPlayedEvent.timestamp +\r\n ((_a = lastPlayedEvent.data.positions[0]) === null || _a === void 0 ? void 0 : _a.timeOffset);\r\n }\r\n if (baselineTime < (lastPlayedTimestamp || 0)) {\r\n emitter.emit(ReplayerEvents.PlayBack);\r\n }\r\n const syncEvents = new Array();\r\n for (const event of neededEvents) {\r\n if (lastPlayedTimestamp &&\r\n lastPlayedTimestamp < baselineTime &&\r\n (event.timestamp <= lastPlayedTimestamp ||\r\n event === lastPlayedEvent)) {\r\n continue;\r\n }\r\n if (event.timestamp < baselineTime) {\r\n syncEvents.push(event);\r\n }\r\n else {\r\n const castFn = getCastFn(event, false);\r\n timer.addAction({\r\n doAction: () => {\r\n castFn();\r\n },\r\n delay: event.delay,\r\n });\r\n }\r\n }\r\n applyEventsSynchronously(syncEvents);\r\n emitter.emit(ReplayerEvents.Flush);\r\n timer.start();\r\n },\r\n pause(ctx) {\r\n ctx.timer.clear();\r\n },\r\n resetLastPlayedEvent: o((ctx) => {\r\n return Object.assign(Object.assign({}, ctx), { lastPlayedEvent: null });\r\n }),\r\n startLive: o({\r\n baselineTime: (ctx, event) => {\r\n ctx.timer.toggleLiveMode(true);\r\n ctx.timer.start();\r\n if (event.type === 'TO_LIVE' && event.payload.baselineTime) {\r\n return event.payload.baselineTime;\r\n }\r\n return Date.now();\r\n },\r\n }),\r\n addEvent: o((ctx, machineEvent) => {\r\n const { baselineTime, timer, events } = ctx;\r\n if (machineEvent.type === 'ADD_EVENT') {\r\n const { event } = machineEvent.payload;\r\n addDelay(event, baselineTime);\r\n let end = events.length - 1;\r\n if (!events[end] || events[end].timestamp <= event.timestamp) {\r\n events.push(event);\r\n }\r\n else {\r\n let insertionIndex = -1;\r\n let start = 0;\r\n while (start <= end) {\r\n const mid = Math.floor((start + end) / 2);\r\n if (events[mid].timestamp <= event.timestamp) {\r\n start = mid + 1;\r\n }\r\n else {\r\n end = mid - 1;\r\n }\r\n }\r\n if (insertionIndex === -1) {\r\n insertionIndex = start;\r\n }\r\n events.splice(insertionIndex, 0, event);\r\n }\r\n const isSync = event.timestamp < baselineTime;\r\n const castFn = getCastFn(event, isSync);\r\n if (isSync) {\r\n castFn();\r\n }\r\n else if (timer.isActive()) {\r\n timer.addAction({\r\n doAction: () => {\r\n castFn();\r\n },\r\n delay: event.delay,\r\n });\r\n }\r\n }\r\n return Object.assign(Object.assign({}, ctx), { events });\r\n }),\r\n },\r\n });\r\n return v(playerMachine);\r\n}\r\nfunction createSpeedService(context) {\r\n const speedMachine = s({\r\n id: 'speed',\r\n context,\r\n initial: 'normal',\r\n states: {\r\n normal: {\r\n on: {\r\n FAST_FORWARD: {\r\n target: 'skipping',\r\n actions: ['recordSpeed', 'setSpeed'],\r\n },\r\n SET_SPEED: {\r\n target: 'normal',\r\n actions: ['setSpeed'],\r\n },\r\n },\r\n },\r\n skipping: {\r\n on: {\r\n BACK_TO_NORMAL: {\r\n target: 'normal',\r\n actions: ['restoreSpeed'],\r\n },\r\n SET_SPEED: {\r\n target: 'normal',\r\n actions: ['setSpeed'],\r\n },\r\n },\r\n },\r\n },\r\n }, {\r\n actions: {\r\n setSpeed: (ctx, event) => {\r\n if ('payload' in event) {\r\n ctx.timer.setSpeed(event.payload.speed);\r\n }\r\n },\r\n recordSpeed: o({\r\n normalSpeed: (ctx) => ctx.timer.speed,\r\n }),\r\n restoreSpeed: (ctx) => {\r\n ctx.timer.setSpeed(ctx.normalSpeed);\r\n },\r\n },\r\n });\r\n return v(speedMachine);\r\n}\n\nexport { createPlayerService, createSpeedService, discardPriorSnapshots };\n"],"names":["NodeType","isElement","n","nodeType","ELEMENT_NODE","isShadowRoot","host","Boolean","shadowRoot","isNativeShadowDom","Object","prototype","toString","call","getCssRulesString","s","rules","cssRules","cssText","Array","from","map","getCssRuleString","join","includes","replace","error","rule","cssStringified","isCSSImportRule","styleSheet","_a","Mirror","this","idNodeMap","Map","nodeMetaMap","WeakMap","getId","id","getMeta","getNode","get","getIds","keys","removeNodeFromMap","_this","childNodes","forEach","childNode","has","hasNode","node","add","meta","set","oldNode","reset","createMirror","maskInputValue","maskInputOptions","tagName","type","value","maskInputFn","text","toLowerCase","repeat","length","canvasService","canvasCtx","ORIGINAL_ATTRIBUTE_NAME","_id","tagNameRegex","RegExp","genId","URL_IN_CSS_REF","RELATIVE_PATH","DATA_URI","absoluteToStylesheet","href","origin","quote1","path1","quote2","path2","path3","url","filePath","maybeQuote","test","concat","indexOf","split","slice","stack","parts","pop","_i","parts_1","part","push","SRCSET_NOT_SPACES","SRCSET_COMMAS_OR_SPACES","absoluteToDoc","doc","attributeValue","trim","a","createElement","getHref","document","transformAttribute","name","pos","collectCharacters","regEx","chars","match","exec","substring","output","descriptorsStr","inParens","c","charAt","getAbsoluteSrcsetString","classMatchesRegex","regex","checkAncestors","parentNode","eIndex","classList","className","needMaskingText","maskTextClass","maskTextSelector","el","parentElement","contains","closest","matches","lowerIfExists","maybeAttr","undefined","serializeNodeWithId","options","mirror","blockClass","blockSelector","skipChild","_b","inlineStylesheet","_c","maskTextFn","slimDOMOptions","_d","dataURLOptions","_e","inlineImages","_f","recordCanvas","onSerialize","onIframeLoad","_g","iframeLoadTimeout","onStylesheetLoad","_h","stylesheetLoadTimeout","_j","keepIframeSrcFn","_k","newlyAddedElement","_l","preserveWhiteSpace","_serializedNode","rootId","docId","getRootId","DOCUMENT_NODE","compatMode","Document","DOCUMENT_TYPE_NODE","DocumentType","publicId","systemId","needBlock","element","_isBlockedElement","HTMLFormElement","processedTagName","getValidTagName","attributes","len","i","attr","stylesheet","styleSheets","find","rel","_cssText","sheet","innerText","textContent","checked","selected","__context","canvas","ctx","getContext","x","width","y","height","getImageData","originalGetImageData","Uint32Array","Math","min","data","buffer","some","pixel","is2DCanvasBlank","rr_dataURL","toDataURL","quality","canvasDataURL","blankCanvas","image_1","oldValue_1","crossOrigin","recordInlineImage","naturalWidth","naturalHeight","drawImage","err","console","warn","currentSrc","removeAttribute","complete","onload","rr_mediaState","paused","rr_mediaCurrentTime","currentTime","scrollLeft","rr_scrollLeft","scrollTop","rr_scrollTop","getBoundingClientRect","rr_width","rr_height","src","contentDocument","rr_src","Element","isSVG","ownerSVGElement","serializeElementNode","TEXT_NODE","parentTagName","isStyle","isScript","nextSibling","previousSibling","Text","serializeTextNode","CDATA_SECTION_NODE","CDATA","COMMENT_NODE","Comment","serializeNode","sn","comment","script","as","endsWith","headFavicon","headMetaDescKeywords","headMetaSocial","property","headMetaRobots","headMetaHttpEquiv","headMetaAuthorship","headMetaVerification","slimDOMExcluded","serializedNode","assign","recordChild","isShadowHost","headWhitespace","bypassOptions","_m","serializedChildNode","_o","_p","isShadow","iframeEl","listener","win","contentWindow","readyState","fired","blankUrl","location","setTimeout","addEventListener","timer_1","clearTimeout","onceIframeLoaded","iframeDoc","serializedIframeNode","link","styleSheetLoadTimeout","styleSheetLoaded","timer","onceStylesheetLoaded","serializedLinkNode","commentre","parse","css","lineno","column","updatePosition","str","lines","lastIndexOf","position","start","line","Position","whitespace","end","source","content","errorsList","msg","Error","reason","filename","silent","open","close","comments","atrule","re","m","selector","declaration","propMatch","prop","val","ret","declarations","decl","decls","keyframe","vals","values","rulesList","atimport","_compileAtrule","atcharset","atnamespace","vendor","frame","frames","keyframes","atkeyframes","media","style","atmedia","atcustommedia","supports","atsupports","atdocument","sel","selectors","atpage","athost","atfontface","addParent","parsingErrors","obj","parent","isNode","childParent","isArray","v","defineProperty","configurable","writable","enumerable","tagMap","altglyph","altglyphdef","altglyphitem","animatecolor","animatemotion","animatetransform","clippath","feblend","fecolormatrix","fecomponenttransfer","fecomposite","feconvolvematrix","fediffuselighting","fedisplacementmap","fedistantlight","fedropshadow","feflood","fefunca","fefuncb","fefuncg","fefuncr","fegaussianblur","feimage","femerge","femergenode","femorphology","feoffset","fepointlight","fespecularlighting","fespotlight","fetile","feturbulence","foreignobject","glyphref","lineargradient","radialgradient","HOVER_SELECTOR","HOVER_SELECTOR_GLOBAL","addHoverClass","cache","cachedStyle","stylesWithHoverClass","ast","selectorMatcher","filter","index","sort","b","result","newSelector","createCache","buildNodeWithSN","hackCss","afterAppend","implementation","createDocument","createDocumentType","node_1","getTagName","createElementNS","specialAttributes","name_1","hasOwnProperty","startsWith","isTextarea","isRemoteOrDynamicCss","setAttributeNS","setAttribute","srcset","child","createTextNode","removeChild","appendChild","_loop_1","name_2","RRNodeType","image","play","e","pause","firstChild","attachShadow","mode","createCDATASection","createComment","buildNode","xmlns","write","childN","on","fn","target","capture","passive","removeEventListener","DEPARTED_MIRROR_ACCESS_WARNING","_mirror","throttle","func","wait","timeout","previous","args","now","Date","leading","remaining","context","apply","trailing","hookSetter","key","d","isRevoked","window","original","getOwnPropertyDescriptor","patch","replacement","wrapped","defineProperties","__rrweb_original__","getWindowHeight","innerHeight","documentElement","clientHeight","body","getWindowWidth","innerWidth","clientWidth","isBlocked","isSerialized","isIgnored","isAncestorRemoved","isTouchEvent","event","changedTouches","polyfill","NodeList","DOMTokenList","Node","TypeError","queueToResolveTrees","queue","queueNodeMap","putIntoMap","nodeInTree","children","queueNodeTrees","mutation","nextId","parentId","nextInTree","idx","splice","parentInTree","iterateResolveTree","tree","cb","isSerializedIframe","nodeName","isSerializedStylesheet","getAttribute","getBaseDimension","rootIframe","frameElement","ownerDocument","defaultView","relativeScale","absoluteScale","frameDimension","frameBaseDimension","hasShadowRoot","getNestedRule","getPositionsAndIndex","nestedIndex","positions","uniqueTextMutations","mutations","idSet","Set","uniqueMutations","Proxy","Reflect","receiver","StyleSheetMirror","constructor","styleIDMap","idStyleMap","newId","getStyle","generateId","EventType","EventType2","IncrementalSource","IncrementalSource2","MouseInteractions","MouseInteractions2","CanvasContext","CanvasContext2","ReplayerEvents","ReplayerEvents2","isNodeInLinkedList","DoubleLinkedList","head","current","next","addNode","__ln","removeNode","moveKey","MutationBuffer","frozen","locked","texts","removes","mapRemoves","movedMap","addedSet","movedSet","droppedSet","processMutations","processMutation","emit","adds","addList","getNextId","ns","pushAdd","shadowHost","getRootNode","DOCUMENT_FRAGMENT_NODE","rootShadowHost","notInDoc","currentN","iframeManager","addIframe","stylesheetManager","trackLinkElement","shadowDomManager","addShadowRoot","iframe","childSn","attachIframe","observeAttachShadow","attachLinkElement","shift","isParentRemoved","isAncestorInSet","candidate","_node","unhandledNode","payload","attribute","mutationCb","oldValue","attributeName","item","old","styleObj","pname","newValue","getPropertyValue","newPriority","getPropertyPriority","addedNodes","genAdds","removedNodes","nodeId","deepDelete","targetId","delete","init","freeze","canvasManager","unfreeze","isFrozen","lock","unlock","addsSet","_isParentRemoved","r","size","_isAncestorInSet","mutationBuffers","isCSSGroupingRuleSupported","CSSGroupingRule","isCSSMediaRuleSupported","CSSMediaRule","isCSSSupportsRuleSupported","CSSSupportsRule","isCSSConditionRuleSupported","CSSConditionRule","getEventTarget","path","composedPath","initMutationObserver","rootEl","mutationBuffer","mutationObserverCtor","MutationObserver","__rrMutationObserver","angularZoneSymbol","Zone","__symbol__","observer","bind","observe","attributeOldValue","characterData","characterDataOldValue","childList","subtree","initScrollObserver","scrollCb","sampling","evt","scrollEl","scrollingElement","scroll","wrapEventWithUserTriggeredFlag","enable","userTriggered","INPUT_TAGS","lastInputValueMap","getNestedCSSRulePositions","childRule","parentRule","unshift","parentStyleSheet","recurse","getIdAndStyleId","styleMirror","styleId","ownerNode","initAdoptedStyleSheetObserver","hostId","patchTarget","ShadowRoot","originalPropertyDescriptor","sheets","adoptStyleSheets","initObservers","o","hooks","currentWindow","mousemoveCb","mouseInteractionCb","viewportResizeCb","inputCb","mediaInteractionCb","styleSheetRuleCb","styleDeclarationCb","canvasMutationCb","fontCb","selectionCb","p","mousemove","mouseInteraction","viewportResize","input","mediaInteaction","styleSheetRule","styleDeclaration","canvasMutation","font","selection","mergeHooks","mutationObserver","mousemoveHandler","threshold","callbackThreshold","mousemoveCallback","timeBaseline","wrappedCb","totalOffset","timeOffset","clientX","clientY","DragEvent","Drag","MouseEvent","MouseMove","TouchMove","handlers","h","initMoveObserver","mouseInteractionHandler","disableMap","Number","isNaN","eventKey","eventName","handler","getHandler","initMouseInteractionObserver","scrollHandler","viewportResizeHandler","lastH","lastW","initViewportResizeObserver","inputHandler","ignoreClass","userTriggeredOnInput","eventHandler","isTrusted","isChecked","cbWithDedup","querySelectorAll","lastInputValue","propertyDescriptor","HTMLInputElement","hookProperties","HTMLSelectElement","HTMLTextAreaElement","HTMLOptionElement","initInputObserver","mediaInteractionHandler","volume","muted","playbackRate","initMediaInteractionObserver","styleSheetObserver","insertRule","CSSStyleSheet","deleteRule","replaceSync","supportedNestedCSSRuleTypes","unmodifiedFunctions","entries","typeKey","initStyleSheetObserver","adoptedStyleSheetObserver","styleDeclarationObserver","ignoreCSSAttributes","setProperty","CSSStyleDeclaration","priority","removeProperty","remove","initStyleDeclarationObserver","fontObserver","collectFonts","fontMap","originalFontFace","FontFace","family","descriptors","fontFace","fontSource","JSON","stringify","Uint8Array","restoreHandler","fonts","initFontObserver","selectionObserver","param","collapsed","updateSelection","getSelection","isCollapsed","ranges","count","rangeCount","range","getRangeAt","startContainer","startOffset","endContainer","endOffset","initSelectionObserver","pluginHandlers","plugin","plugins","callback","disconnect","CrossOriginIframeMirror","generateIdFn","iframeIdToRemoteIdMap","iframeRemoteIdToIdMap","remoteId","idToRemoteMap","remoteToIdMap","idToRemoteIdMap","getIdToRemoteIdMap","remoteIdToIdMap","getRemoteIdToIdMap","getRemoteId","getRemoteIds","ids","IframeManager","iframes","crossOriginIframeMap","crossOriginIframeMirror","wrappedEmit","recordCrossOriginIframes","crossOriginIframeStyleMirror","handleMessage","addLoadListener","loadListener","isAttachIframe","adoptedStyleSheets","message","transformedEvent","transformCrossOriginEvent","isCheckout","FullSnapshot","replaceIdOnNode","timestamp","IncrementalSnapshot","Mutation","Meta","Load","DomContentLoaded","Plugin","Custom","replaceIds","ViewportResize","MediaInteraction","MouseInteraction","Scroll","CanvasMutation","Input","StyleSheetRule","StyleDeclaration","replaceStyleIds","Font","Selection","AdoptedStyleSheet","styles","iframeMirror","ShadowDomManager","shadowDoms","WeakSet","restorePatches","manager","option","iframeElement","HTMLElement","restorePatch","__awaiter","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","step","rejected","done","then","lookup","charCodeAt","canvasVarMap","saveWebGLVar","isInstanceOfWebGLObject","list","ctor","contextMap","variableListFor","serializeArg","arg","Float32Array","Float64Array","Int32Array","Uint16Array","Int16Array","Int8Array","Uint8ClampedArray","rr_type","ArrayBuffer","base64","arraybuffer","bytes","encode","DataView","byteOffset","byteLength","HTMLImageElement","HTMLCanvasElement","ImageData","serializeArgs","supportedWebGLConstructorNames","initCanvasContextObserver","contextType","patchGLPrototype","props","getOwnPropertyNames","recordArgs","hookHandler","setter","WorkerClass","WorkerThreads","module","require","Worker","enableUnicodeArg","WorkerFactory","process","sourcemapArg","sourcemap","enableUnicode","Buffer","decodeBase64","eval","createBase64WorkerFactory","binaryString","atob","binaryView","String","fromCharCode","blob","Blob","URL","createObjectURL","createURL","CanvasManager","pendingCanvasMutations","rafStamps","latestId","invokeId","initCanvasMutationObserver","initCanvasFPSObserver","clear","resetObservers","fps","canvasContextReset","snapshotInProgressMap","worker","onmessage","commands","timeBetweenSnapshots","rafId","lastSnapshotTime","takeCanvasSnapshots","matchedCanvas","getCanvas","getContextAttributes","preserveDrawingBuffer","COLOR_BUFFER_BIT","bitmap","createImageBitmap","postMessage","requestAnimationFrame","cancelAnimationFrame","startRAFTimestamping","startPendingCanvasMutationFlusher","canvas2DReset","props2D","CanvasRenderingContext2D","initCanvas2DMutationObserver","canvasWebGL1and2Reset","WebGLRenderingContext","WebGL","WebGL2RenderingContext","WebGL2","initCanvasWebGLMutationObserver","flushPendingCanvasMutations","setLatestRAFTimestamp","flushPendingCanvasMutationFor","valuesWithType","rest","t","getOwnPropertySymbols","propertyIsEnumerable","__rest","StylesheetManager","trackedLinkElements","adoptedStyleSheetCb","linkEl","trackStylesheetInLinkElement","adoptedStyleSheetData","styleIds","CSSRule","wrapEvent","takeFullSnapshot","recording","record","checkoutEveryNms","checkoutEveryNth","maskAllInputs","_maskInputOptions","_slimDOMOptions","packFn","mousemoveWait","inEmittingFrame","passEmitsToParent","color","date","email","month","number","search","tel","time","week","textarea","select","password","lastFullSnapshotEvent","incrementalSnapshotCount","eventProcessor","buf","exceedCount","exceedTime","wrappedMutationEmit","wrappedScrollEmit","wrappedCanvasMutationEmit","getMirror","nodeMirror","slimDOM","snapshot","initialOffset","left","pageXOffset","top","pageYOffset","addCustomEvent","tag","freezePage","u8","u16","u32","fleb","fdeb","clim","freb","eb","j","fl","revfl","fd","revfd","rev","hMap","cd","mb","l","co","le","rvb","sv","r_1","flt","fdt","flm","flrm","fdm","fdrm","max","bits","bits16","shft","slc","subarray","wbits","wbits16","hTree","f","t2","i0","i1","i2","maxSym","tr","mbt","ln","dt","lft","cst","i2_1","i2_2","i2_3","lc","cl","cli","cln","cls","w","clen","cf","wfblk","out","dat","wblk","final","syms","lf","df","li","bs","bl","dlt","mlb","ddt","mdb","lclt","nlc","lcdt","ndc","lcfreq","lct","mlcb","nlcc","lm","ll","dm","dl","flen","ftlen","dtlen","llm","lcts","it","clct","dst","deo","et","zlibSync","opts","adler","opt","pre","post","st","lvl","plvl","lst","floor","msk_1","prev","bs1_1","ceil","bs2_1","hsh","lc_1","wi","hv","imod","pimod","rem","ch_1","dif","maxn","maxd","ml","nl","mmd","md","ti","lin","din","dflt","level","mem","log","lv","zlh","wbytes","strToU8","latin1","TextEncoder","ar","ai","strFromU8","TextDecoder","decode","MARK","pack","unpack","raw","sl","noBuf","noSt","cbuf","nbuf","bt","lbt","dbt","tbts","hLit","hcLen","tl","ldt","clt","clb","clbmsk","clm","lt","lms","dms","mxa","sym","dsym","inflt","zlv","StackFrame","fileName","functionName","lineNumber","columnNumber","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","ErrorStackParser","stacktrace","parseOpera","parseV8OrIE","parseFFOrSafari","extractLocation","urlLike","sanitizedLine","tokens","locationParts","functionNameRegex","parseOpera9","parseOpera11","parseOpera10","lineRE","parseFloat","pathToSelector","outerHTML","localName","domSiblings","sibling","isObject","isObjTooDeep","limit","stringifyOptions","numOfKeysLimit","depthOfLimit","thisPos","Infinity","_obj","stringLengthLimit","Event","eventResult","eventValue","defaultLogOptions","lengthThreshold","logger","initLogObserver","logOptions","loggerType","logCount","cancelHandlers","errorHandler","trace","stackFrame","levelType","_logger","PLUGIN_NAME","getRecordConsolePlugin","defaultLogConfig","replayLogger","LogReplayPlugin","config","getConsoleLogger","formatMessage","stackPrefix","getReplayConsolePlugin","_isSync","logData","Log","replayer","showWarning","NodeType$1","Mirror$1","toCSSText","properties","normalizedName","hyphenate","camelizeRE","CUSTOM_PROPERTY_REGEX","camelize","_","toUpperCase","hyphenateRE","BaseRRNode","_args","lastChild","siblings","_newChild","insertBefore","_refChild","BaseRRDocumentTypeImpl","RRNodeClass","qualifiedName","super","BaseRRElementImpl","ClassList","class","newClassName","res","propertyDelimiter","tmp","parseCSSText","_namespace","newChild","refChild","childIndex","indexOfChild","_init","dispatchEvent","_event","attributeString","BaseRRTextImpl","BaseRRCommentImpl","BaseRRCDATASectionImpl","classText","onChange","classes","classNames","NAMESPACES","svg","SVGTagMap","diff","oldTree","newTree","rrnodeMirror","oldChildren","newChildren","diffChildren","inputDataToApply","scrollDataToApply","scrollData","oldElement","newRRElement","oldAttributes","newAttributes","diffProps","inputData","oldMediaElement","newMediaRRElement","rrCanvasElement","canvasMutations","applyCanvas","applyStyleSheetMutation","applyScroll","applyInput","oldContentDocument","newIFrameElement","oldIdToIndex","indexInOld","oldStartIndex","oldEndIndex","newStartIndex","newEndIndex","oldStartNode","oldEndNode","newStartNode","newEndNode","oldStartId","oldEndId","newStartId","newEndId","oldChild","nodeToMove","newNode","createOrGetNode","referenceRRNode","referenceNode","rrNode","domMirror","RRDocument","BaseRRDocument","arguments","firstElementChild","doctype","_qualifiedName","_doctype","_namespaceURI","CDATASection","BaseRRDocumentImpl","UNSERIALIZED_STARTING_ID","_unserializedId","unserializedId","documentTypeNode","RRDocumentType","upperTagName","RRMediaElement","RRIFrameElement","RRCanvasElement","RRStyleElement","RRElement","commentNode","RRComment","sectionNode","RRCDATASection","textNode","RRText","destroyTree","RRElementClass","BaseRRMediaElementImpl","buildFromNode","rrdom","parentRRNode","documentType","elementNode","rrElement","getDefaultSN","mitt","all","off","__forceSmoothScrollPolyfill__","scrollTo","scrollBy","elementScroll","scrollElement","scrollIntoView","performance","ROUNDING_TOLERANCE","userAgent","navigator","shouldBailOut","firstArg","behavior","hasScrollableSpace","axis","scrollHeight","scrollWidth","canOverflow","overflowValue","getComputedStyle","isScrollable","isScrollableY","isScrollableX","currentX","currentY","elapsed","startTime","k","cos","PI","startX","startY","method","scrollable","smoothScroll","scrollX","scrollY","SyntaxError","scrollableParent","findScrollableParent","parentRects","clientRects","Timer","actions","raf","speed","liveMode","addAction","action","delay","findActionIndex","lastTimestamp","check","doAction","setSpeed","toggleLiveMode","isActive","mid","addDelay","baselineTime","firstOffset","firstTimestamp","Symbol","iterator","return","NotStarted","Running","Stopped","assignment","u","changed","states","initial","entry","_options","initialState","transition","g","S","E","R","N","cond","O","T","q","exit","z","A","B","C","_machine","send","subscribe","unsubscribe","stop","state","status","webGLVarMap","deserializeArg","imageMap","preload","isUnchanged","encoded1","encoded2","encoded3","encoded4","bufferLength","Image","blobContents","WebGLVariableConstructorsNames","webglMutation","variables","saveToWebGLVarMap","canvasEventMap","precomputedMutation","command","REPLAY_CONSOLE_PREFIX","defaultMouseTailConfig","duration","lineCap","lineWidth","strokeStyle","indicatesTouchDevice","TouchStart","Replayer","events","usingVirtualDom","virtualDom","mouseTail","tailPositions","emitter","legacy_missingNodeRetryMap","firstFullSnapshot","newDocumentQueue","mousePos","touchActive","lastSelectionData","constructedStyleMutations","handleResize","dimension","display","applyEventsSynchronously","getCastFn","castFn","mouse","isSync","CustomEvent","Resize","rebuildFullSnapshot","applyIncremental","nextUserInteractionEvent","backToNormal","skipInactive","service","isUserInteraction","speedService","skipTime","round","maxSpeed","SkipStart","last_index","finish","Finish","EventCast","defaultConfig","root","loadTimeout","showDebug","insertStyleRules","triggerFocus","UNSAFE_replayCanvas","pauseAnimation","useVirtualDom","setupDom","Flush","replayerHandler","canvasEvent","canvasMutationData","warnCanvasMutationFailed","applyStyleSheetRule","applyStyleDeclaration","realNode","applyAdoptedStyleSheet","moveAndHover","debugData","applySelection","PlayBack","playerMachine","playing","PAUSE","CAST_EVENT","END","ADD_EVENT","PLAY","TO_LIVE","live","castEvent","lastPlayedEvent","recordTimeOffset","neededEvents","discardPriorSnapshots","lastPlayedTimestamp","syncEvents","resetLastPlayedEvent","startLive","addEvent","machineEvent","insertionIndex","createPlayerService","unpackFn","a1","a2","StateChange","player","normalSpeed","normal","FAST_FORWARD","SET_SPEED","skipping","BACK_TO_NORMAL","recordSpeed","restoreSpeed","firstMeta","firstFullsnapshot","setConfig","wrapper","getMetaData","firstEvent","lastEvent","endTime","totalTime","getCurrentTime","getTimeOffset","getElementsByTagName","Start","Pause","resume","Resume","destroy","Destroy","rawEvent","enableInteract","pointerEvents","disableInteract","resetCache","collected","builtNode","collectIframeAndAttachDocument","onBuild","onVisit","walk","visit","visitedNode","name_3","handleScroll","rebuild","mutationInQueue","attachDocumentToIframe","FullsnapshotRebuilded","waitForStylesheetLoad","preloadAllImages","injectStylesRules","styleEl","unloadSheets","beforeLoadState","stateHandler","LoadStylesheetEnd","LoadStylesheetStart","promises","deserializeAndPreloadCanvasEvents","preloadImages","imgd","createImageData","putImageData","applyMutation","lastPosition","debugNodeNotFound","Blur","blur","Focus","focus","preventScroll","Click","TouchEnd","offsetWidth","TouchCancel","mediaEl","dom","createMirror$1","buildFromDom","virtualNode","warnNodeNotFound","DOMException","legacy_missingNodeMap","appendNode","previousId","nextNotInDOM","targetDoc","parentSn","childNodeArray","legacy_resolveMissingNode","resolveTrees","debug","newSn","siblingNode","styleValues","targetEl","svp","svs","selectionSet","Range","setStart","setEnd","removeAllRanges","addRange","targetHost","newStyleSheet","hostWindow","stylesToAdopt","targetMutation","previousInMap","nextInMap","base","_x","_y","drawMouseTail","hoverElements","draw","clearRect","beginPath","moveTo","lineTo","stroke","hoveredEl","currentEl","SkipEnd"],"sourceRoot":""}
|