UNPKG

@funnelenvy-npm/fe-dev-utils

Version:

Helper function to build client side A/B tests

39 lines (38 loc) 1.42 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const on_error_1 = __importDefault(require("../on-error")); const observeDom = ({ selector, callback, config, activity = null, errorHandler = null, }) => { const defaultConfig = { childList: true, subtree: true, attributes: true, }; const mergedConfig = { ...defaultConfig, ...config }; try { const target = document.querySelector(selector); if (!target) { throw new Error(`Target element "${selector}" not found.`); } const observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { callback(mutation); }); }); observer.observe(target, mergedConfig); // Return a function to disconnect the observer return () => { observer.disconnect(); }; } catch (err) { const handleOnError = errorHandler || on_error_1.default; // Ensure the error is of type `Error` const error = err instanceof Error ? err : new Error('An unknown error occurred'); handleOnError({ activity: activity || 'Unknown Activity', error }); return null; } }; exports.default = observeDom;