@vouchfor/embeds 0.0.0-experiment.4ea86a2 → 0.0.0-experiment.4eb5f06
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/dist/es/components/Embed/controllers/tracking.d.ts +0 -2
- package/dist/es/embeds.js +44 -55
- package/dist/es/embeds.js.map +1 -1
- package/dist/iife/embeds.iife.js +2 -2
- package/dist/iife/embeds.iife.js.map +1 -1
- package/package.json +2 -2
- package/src/components/Embed/controllers/tracking.ts +9 -34
    
        package/package.json
    CHANGED
    
    | @@ -1,6 +1,6 @@ | |
| 1 1 | 
             
            {
         | 
| 2 2 | 
             
              "name": "@vouchfor/embeds",
         | 
| 3 | 
            -
              "version": "0.0.0-experiment. | 
| 3 | 
            +
              "version": "0.0.0-experiment.4eb5f06",
         | 
| 4 4 | 
             
              "license": "MIT",
         | 
| 5 5 | 
             
              "author": "Aaron Williams",
         | 
| 6 6 | 
             
              "main": "dist/es/embeds.js",
         | 
| @@ -36,7 +36,7 @@ | |
| 36 36 | 
             
              },
         | 
| 37 37 | 
             
              "dependencies": {
         | 
| 38 38 | 
             
                "@lit/task": "^1.0.0",
         | 
| 39 | 
            -
                "@vouchfor/media-player": "0.0.0-experiment. | 
| 39 | 
            +
                "@vouchfor/media-player": "0.0.0-experiment.4eb5f06",
         | 
| 40 40 | 
             
                "uuid": "^9.0.1"
         | 
| 41 41 | 
             
              },
         | 
| 42 42 | 
             
              "peerDependencies": {
         | 
| @@ -7,7 +7,8 @@ import type { ReactiveController, ReactiveControllerHost } from 'lit'; | |
| 7 7 |  | 
| 8 8 | 
             
            import { getEnvUrls } from '~/utils/env';
         | 
| 9 9 |  | 
| 10 | 
            -
             | 
| 10 | 
            +
            // In seconds due to checking against node.currentTime
         | 
| 11 | 
            +
            const STREAMED_THROTTLE = 10;
         | 
| 11 12 |  | 
| 12 13 | 
             
            type EmbedHost = ReactiveControllerHost & Embed;
         | 
| 13 14 |  | 
| @@ -39,7 +40,6 @@ class TrackingController implements ReactiveController { | |
| 39 40 | 
             
              private _answersViewed: BooleanMap = {};
         | 
| 40 41 | 
             
              private _streamedTime: TimeMap = {};
         | 
| 41 42 | 
             
              private _streamLatestTime: TimeMap = {};
         | 
| 42 | 
            -
              private _streamedPrevTimestamp: TimeMap = {};
         | 
| 43 43 |  | 
| 44 44 | 
             
              constructor(host: EmbedHost) {
         | 
| 45 45 | 
             
                this.host = host;
         | 
| @@ -203,28 +203,6 @@ class TrackingController implements ReactiveController { | |
| 203 203 |  | 
| 204 204 | 
             
                this._streamedTime[key] = node.currentTime;
         | 
| 205 205 | 
             
                this._streamLatestTime[key] = node.currentTime;
         | 
| 206 | 
            -
                this._streamedPrevTimestamp[key] = Date.now();
         | 
| 207 | 
            -
              };
         | 
| 208 | 
            -
             | 
| 209 | 
            -
              private _handleVideoSeeking = ({ detail: { id, key } }: CustomEvent<VideoEventDetail>) => {
         | 
| 210 | 
            -
                const vouchId = this._findVouchId();
         | 
| 211 | 
            -
             | 
| 212 | 
            -
                if (!vouchId) {
         | 
| 213 | 
            -
                  return;
         | 
| 214 | 
            -
                }
         | 
| 215 | 
            -
             | 
| 216 | 
            -
                if (this._streamLatestTime[key]) {
         | 
| 217 | 
            -
                  this._sendTrackingEvent('VIDEO_STREAMED', {
         | 
| 218 | 
            -
                    vouchId,
         | 
| 219 | 
            -
                    answerId: id,
         | 
| 220 | 
            -
                    streamStart: this._streamedTime[key],
         | 
| 221 | 
            -
                    streamEnd: this._streamLatestTime[key]
         | 
| 222 | 
            -
                  });
         | 
| 223 | 
            -
                }
         | 
| 224 | 
            -
             | 
| 225 | 
            -
                delete this._streamedTime[key];
         | 
| 226 | 
            -
                delete this._streamLatestTime[key];
         | 
| 227 | 
            -
                delete this._streamedPrevTimestamp[key];
         | 
| 228 206 | 
             
              };
         | 
| 229 207 |  | 
| 230 208 | 
             
              private _handleVideoTimeUpdate = ({ detail: { id, key, node } }: CustomEvent<VideoEventDetail>) => {
         | 
| @@ -234,7 +212,6 @@ class TrackingController implements ReactiveController { | |
| 234 212 | 
             
                  return;
         | 
| 235 213 | 
             
                }
         | 
| 236 214 |  | 
| 237 | 
            -
                const currentTimestamp = Date.now();
         | 
| 238 215 | 
             
                if (
         | 
| 239 216 | 
             
                  node.currentTime &&
         | 
| 240 217 | 
             
                  !node.paused &&
         | 
| @@ -242,7 +219,7 @@ class TrackingController implements ReactiveController { | |
| 242 219 | 
             
                  // Only fire the video seeked event when this video is the active one
         | 
| 243 220 | 
             
                  id === this.host.scene?.video?.id &&
         | 
| 244 221 | 
             
                  // Throttle the frequency that we send streamed events while playing
         | 
| 245 | 
            -
                   | 
| 222 | 
            +
                  node.currentTime - this._streamedTime[key] > STREAMED_THROTTLE
         | 
| 246 223 | 
             
                ) {
         | 
| 247 224 | 
             
                  this._sendTrackingEvent('VIDEO_STREAMED', {
         | 
| 248 225 | 
             
                    vouchId,
         | 
| @@ -251,13 +228,14 @@ class TrackingController implements ReactiveController { | |
| 251 228 | 
             
                    streamEnd: node.currentTime
         | 
| 252 229 | 
             
                  });
         | 
| 253 230 | 
             
                  this._streamedTime[key] = node.currentTime;
         | 
| 254 | 
            -
                  this._streamedPrevTimestamp[key] = currentTimestamp;
         | 
| 255 231 | 
             
                }
         | 
| 256 232 |  | 
| 257 | 
            -
                this. | 
| 233 | 
            +
                if (!this.host.paused) {
         | 
| 234 | 
            +
                  this._streamLatestTime[key] = node.currentTime;
         | 
| 235 | 
            +
                }
         | 
| 258 236 | 
             
              };
         | 
| 259 237 |  | 
| 260 | 
            -
              private _handleVideoPause = ({ detail: { id, key | 
| 238 | 
            +
              private _handleVideoPause = ({ detail: { id, key } }: CustomEvent<VideoEventDetail>) => {
         | 
| 261 239 | 
             
                const vouchId = this._findVouchId();
         | 
| 262 240 |  | 
| 263 241 | 
             
                if (!vouchId) {
         | 
| @@ -265,7 +243,7 @@ class TrackingController implements ReactiveController { | |
| 265 243 | 
             
                }
         | 
| 266 244 |  | 
| 267 245 | 
             
                // Don't send a tracking event if the video pauses when seeking backwards
         | 
| 268 | 
            -
                if ( | 
| 246 | 
            +
                if (this._streamLatestTime[key] > this._streamedTime[key] + 0.5) {
         | 
| 269 247 | 
             
                  // Send a video streamed event any time the video pauses then reset the streamed state
         | 
| 270 248 | 
             
                  // We do this to capture the last bit of time that the video was played between the previous
         | 
| 271 249 | 
             
                  // stream event and the video being paused manually or stopping because it ended
         | 
| @@ -273,13 +251,12 @@ class TrackingController implements ReactiveController { | |
| 273 251 | 
             
                    vouchId,
         | 
| 274 252 | 
             
                    answerId: id,
         | 
| 275 253 | 
             
                    streamStart: this._streamedTime[key],
         | 
| 276 | 
            -
                    streamEnd:  | 
| 254 | 
            +
                    streamEnd: this._streamLatestTime[key]
         | 
| 277 255 | 
             
                  });
         | 
| 278 256 | 
             
                }
         | 
| 279 257 |  | 
| 280 258 | 
             
                delete this._streamedTime[key];
         | 
| 281 259 | 
             
                delete this._streamLatestTime[key];
         | 
| 282 | 
            -
                delete this._streamedPrevTimestamp[key];
         | 
| 283 260 | 
             
              };
         | 
| 284 261 |  | 
| 285 262 | 
             
              hostConnected() {
         | 
| @@ -287,7 +264,6 @@ class TrackingController implements ReactiveController { | |
| 287 264 | 
             
                  this.host.addEventListener('vouch:loaded', this._handleVouchLoaded);
         | 
| 288 265 | 
             
                  this.host.mediaPlayer?.addEventListener('play', this._handlePlay);
         | 
| 289 266 | 
             
                  this.host.mediaPlayer?.addEventListener('video:play', this._handleVideoPlay);
         | 
| 290 | 
            -
                  this.host.mediaPlayer?.addEventListener('video:seeking', this._handleVideoSeeking);
         | 
| 291 267 | 
             
                  this.host.mediaPlayer?.addEventListener('video:pause', this._handleVideoPause);
         | 
| 292 268 | 
             
                  this.host.mediaPlayer?.addEventListener('video:timeupdate', this._handleVideoTimeUpdate);
         | 
| 293 269 | 
             
                });
         | 
| @@ -297,7 +273,6 @@ class TrackingController implements ReactiveController { | |
| 297 273 | 
             
                this.host.removeEventListener('vouch:loaded', this._handleVouchLoaded);
         | 
| 298 274 | 
             
                this.host.mediaPlayer?.removeEventListener('play', this._handlePlay);
         | 
| 299 275 | 
             
                this.host.mediaPlayer?.removeEventListener('video:play', this._handleVideoPlay);
         | 
| 300 | 
            -
                this.host.mediaPlayer?.removeEventListener('video:seeking', this._handleVideoSeeking);
         | 
| 301 276 | 
             
                this.host.mediaPlayer?.removeEventListener('video:pause', this._handleVideoPause);
         | 
| 302 277 | 
             
                this.host.mediaPlayer?.removeEventListener('video:timeupdate', this._handleVideoTimeUpdate);
         | 
| 303 278 | 
             
              }
         |