@zaplier/sdk 1.6.8 → 1.6.9

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/sdk.js CHANGED
@@ -19278,7 +19278,10 @@
19278
19278
  this.scrollThrottle = now;
19279
19279
  const scrollElements = document.querySelectorAll('[data-track-scroll]');
19280
19280
  if (this.config.debug && scrollElements.length > 0) {
19281
- console.log(`[AutoTracker] Checking ${scrollElements.length} scroll elements`);
19281
+ console.log(`[AutoTracker] Checking ${scrollElements.length} scroll elements`, {
19282
+ scrollY: window.scrollY,
19283
+ innerHeight: window.innerHeight
19284
+ });
19282
19285
  }
19283
19286
  scrollElements.forEach((element) => {
19284
19287
  let hasTriggered = element.getAttribute('data-scroll-triggered') === 'true';
@@ -19322,6 +19325,28 @@
19322
19325
  }
19323
19326
  });
19324
19327
  };
19328
+ this.handleClick = (event) => {
19329
+ if (!this.config.trackClicks)
19330
+ return;
19331
+ const target = event.target;
19332
+ if (!target || !target.hasAttribute("data-track-click"))
19333
+ return;
19334
+ const eventName = target.getAttribute("data-track-click");
19335
+ if (!eventName)
19336
+ return;
19337
+ const metadata = this.extractMetadata(target);
19338
+ this.trackEvent(eventName, {
19339
+ type: "click",
19340
+ element: target.tagName.toLowerCase(),
19341
+ ...metadata,
19342
+ });
19343
+ if (this.config.debug) {
19344
+ console.log(`[AutoTracker] Click tracked: ${eventName}`, {
19345
+ element: target.tagName.toLowerCase(),
19346
+ ...metadata
19347
+ });
19348
+ }
19349
+ };
19325
19350
  this.sdkInstance = sdkInstance;
19326
19351
  this.config = {
19327
19352
  enabled: true,
@@ -19349,6 +19374,28 @@
19349
19374
  trackHovers: this.config.trackHovers,
19350
19375
  trackForms: this.config.trackForms
19351
19376
  });
19377
+ // Log elementos existentes encontrados
19378
+ setTimeout(() => {
19379
+ const clickElements = document.querySelectorAll('[data-track-click]');
19380
+ const scrollElements = document.querySelectorAll('[data-track-scroll]');
19381
+ const viewElements = document.querySelectorAll('[data-track-view]');
19382
+ const hoverElements = document.querySelectorAll('[data-track-hover]');
19383
+ const formElements = document.querySelectorAll('[data-track-form]');
19384
+ console.log("[Zaplier AutoTracker] Elementos encontrados:", {
19385
+ clickElements: clickElements.length,
19386
+ scrollElements: scrollElements.length,
19387
+ viewElements: viewElements.length,
19388
+ hoverElements: hoverElements.length,
19389
+ formElements: formElements.length
19390
+ });
19391
+ if (scrollElements.length > 0) {
19392
+ console.log("[Zaplier AutoTracker] Elementos de scroll:", Array.from(scrollElements).map(el => ({
19393
+ tagName: el.tagName,
19394
+ trackEvent: el.getAttribute('data-track-scroll'),
19395
+ threshold: el.getAttribute('data-scroll-threshold') || '0.5'
19396
+ })));
19397
+ }
19398
+ }, 100);
19352
19399
  }
19353
19400
  // Observer para novos elementos no DOM
19354
19401
  this.observeDOM();
@@ -19359,6 +19406,9 @@
19359
19406
  this.setupViewTracking();
19360
19407
  }
19361
19408
  // Setup global event listeners
19409
+ if (this.config.trackClicks) {
19410
+ document.addEventListener("click", this.handleClick, { passive: true });
19411
+ }
19362
19412
  if (this.config.trackScrolls) {
19363
19413
  document.addEventListener("scroll", this.handleScroll, { passive: true });
19364
19414
  }
@@ -19367,6 +19417,7 @@
19367
19417
  * Parar auto tracking
19368
19418
  */
19369
19419
  stop() {
19420
+ document.removeEventListener("click", this.handleClick);
19370
19421
  document.removeEventListener("scroll", this.handleScroll);
19371
19422
  if (this.intersectionObserver) {
19372
19423
  this.intersectionObserver.disconnect();
@@ -19405,14 +19456,8 @@
19405
19456
  * Processar um elemento específico
19406
19457
  */
19407
19458
  processElement(element) {
19408
- // Click tracking
19409
- if (this.config.trackClicks && element.hasAttribute("data-track-click")) {
19410
- this.setupClickTracking(element);
19411
- }
19412
- // Scroll tracking
19413
- if (this.config.trackScrolls && element.hasAttribute("data-track-scroll")) {
19414
- this.setupScrollTracking(element);
19415
- }
19459
+ // Click tracking - handled by global listener
19460
+ // Scroll tracking - handled by global listener
19416
19461
  // View tracking
19417
19462
  if (this.config.trackViews && element.hasAttribute("data-track-view")) {
19418
19463
  this.setupElementViewTracking(element);
@@ -19426,60 +19471,6 @@
19426
19471
  this.setupFormTracking(element);
19427
19472
  }
19428
19473
  }
19429
- /**
19430
- * Setup click tracking
19431
- */
19432
- setupClickTracking(element) {
19433
- element.addEventListener("click", (event) => {
19434
- const eventName = element.getAttribute("data-track-click");
19435
- if (!eventName)
19436
- return;
19437
- const metadata = this.extractMetadata(element);
19438
- this.trackEvent(eventName, {
19439
- type: "click",
19440
- element: element.tagName.toLowerCase(),
19441
- ...metadata,
19442
- });
19443
- if (this.config.debug) {
19444
- console.log(`[AutoTracker] Click tracked: ${eventName}`, metadata);
19445
- }
19446
- });
19447
- }
19448
- /**
19449
- * Setup scroll tracking
19450
- */
19451
- setupScrollTracking(element) {
19452
- let hasTriggered = false;
19453
- const threshold = parseFloat(element.getAttribute("data-scroll-threshold") || "0.5");
19454
- const handleScroll = () => {
19455
- if (hasTriggered)
19456
- return;
19457
- const rect = element.getBoundingClientRect();
19458
- const elementHeight = rect.height;
19459
- const visibleHeight = Math.min(rect.bottom, window.innerHeight) - Math.max(rect.top, 0);
19460
- const visibilityRatio = Math.max(0, visibleHeight) / elementHeight;
19461
- if (visibilityRatio >= threshold) {
19462
- hasTriggered = true;
19463
- const eventName = element.getAttribute("data-track-scroll");
19464
- if (!eventName)
19465
- return;
19466
- const metadata = this.extractMetadata(element);
19467
- this.trackEvent(eventName, {
19468
- type: "scroll",
19469
- element: element.tagName.toLowerCase(),
19470
- threshold,
19471
- scrollDepth: window.scrollY,
19472
- ...metadata,
19473
- });
19474
- if (this.config.debug) {
19475
- console.log(`[AutoTracker] Scroll tracked: ${eventName}`, metadata);
19476
- }
19477
- }
19478
- };
19479
- document.addEventListener("scroll", handleScroll, { passive: true });
19480
- // Check immediately in case element is already in view
19481
- setTimeout(handleScroll, 100);
19482
- }
19483
19474
  /**
19484
19475
  * Setup view tracking usando Intersection Observer
19485
19476
  */