@randyd45/web-behavior-tracker
Version:
A framework-agnostic package for tracking user behavior on web forms
51 lines • 1.68 kB
JavaScript
import { TrackingUtils } from './utils.js';
/**
* Handles clipboard events like copy, paste, and cut
*/
export class ClipboardEventHandler {
constructor(options) {
this.options = options;
}
/**
* Handles clipboard events (copy, paste, cut)
*/
handleClipboardEvent(event, onEventCreated) {
if (!this.options.trackCopyPaste)
return;
const target = event.target;
if (!target)
return;
// Check if the element is a form element or has a form-related role
const isFormElement = TrackingUtils.isFormElement(target);
if (!isFormElement)
return;
// Get clipboard data if available
let clipboardData;
if (event.clipboardData) {
const types = Array.from(event.clipboardData.types);
const data = event.clipboardData.getData('text/plain');
clipboardData = { types, data };
}
const behaviorEvent = TrackingUtils.createBehaviorEvent(event.type, target, TrackingUtils.getElementValue(target), { clipboardData });
onEventCreated(behaviorEvent);
}
/**
* Handles copy events specifically
*/
handleCopyEvent(event, onEventCreated) {
this.handleClipboardEvent(event, onEventCreated);
}
/**
* Handles paste events specifically
*/
handlePasteEvent(event, onEventCreated) {
this.handleClipboardEvent(event, onEventCreated);
}
/**
* Handles cut events specifically
*/
handleCutEvent(event, onEventCreated) {
this.handleClipboardEvent(event, onEventCreated);
}
}
//# sourceMappingURL=ClipboardEventHandler.js.map