zar 0.2.0 → 0.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/dist/zar.es.js CHANGED
@@ -1349,7 +1349,7 @@ function dbg() {
1349
1349
  return;
1350
1350
  console.debug(...arguments);
1351
1351
  }
1352
- function warning(msg) {
1352
+ function warn(msg) {
1353
1353
  console.warn(msg);
1354
1354
  if (window.Rollbar) {
1355
1355
  window.Rollbar.warning(msg);
@@ -1488,7 +1488,7 @@ function postBeacon(_0) {
1488
1488
  }
1489
1489
  return false;
1490
1490
  } catch (e2) {
1491
- warning("postBeacon:");
1491
+ warn("postBeacon:");
1492
1492
  return false;
1493
1493
  }
1494
1494
  }
@@ -1527,6 +1527,7 @@ var NUMBER_POOL_RENEWAL_TIME_MS = 30 * 1e3;
1527
1527
  var getNumberFailureCount = 0;
1528
1528
  var MAX_GET_NUMBER_FAILURES = 3;
1529
1529
  var poolIntervals = {};
1530
+ window.zarPoolData = null;
1530
1531
  var numberOverlayMap = /* @__PURE__ */ new Map();
1531
1532
  function generateVisitId() {
1532
1533
  return Date.now().toString(36) + "." + Math.random().toString(36).substring(2);
@@ -1590,7 +1591,7 @@ function extractPhoneNumber({ elem }) {
1590
1591
  }
1591
1592
  return { text, html, numberText, href, number };
1592
1593
  }
1593
- function overlayPhoneNumber({ elems, number }) {
1594
+ function overlayPhoneNumber({ elems, number, force = false }) {
1594
1595
  var origNum;
1595
1596
  var overlayNum = number;
1596
1597
  if (!number.startsWith("+1")) {
@@ -1598,17 +1599,23 @@ function overlayPhoneNumber({ elems, number }) {
1598
1599
  }
1599
1600
  for (var i2 = 0; i2 < elems.length; i2++) {
1600
1601
  if (numberOverlayMap.has(elems[i2])) {
1601
- dbg("element already in overlay map:", elems[i2]);
1602
- continue;
1602
+ if (force) {
1603
+ origNum = numberOverlayMap.get(elems[i2]);
1604
+ } else {
1605
+ dbg("element already in overlay map:", elems[i2]);
1606
+ continue;
1607
+ }
1603
1608
  }
1604
1609
  var elemNum = extractPhoneNumber({ elem: elems[i2] });
1605
1610
  if (!origNum) {
1606
1611
  origNum = elemNum;
1607
- } else if (elemNum.number && origNum.number && origNum.number !== elemNum.number) {
1608
- warning("overlaying multiple numbers with a single number", origNum.number, elemNum.number);
1612
+ } else if (!force && (elemNum.number && origNum.number) && origNum.number !== elemNum.number) {
1613
+ warn("overlaying multiple numbers with a single number", origNum.number, elemNum.number);
1609
1614
  }
1610
1615
  dbg("overlaying", overlayNum, "on", elems[i2]);
1611
- numberOverlayMap.set(elems[i2], elemNum);
1616
+ if (!numberOverlayMap.has(elems[i2])) {
1617
+ numberOverlayMap.set(elems[i2], elemNum);
1618
+ }
1612
1619
  if (elemNum.href) {
1613
1620
  elems[i2].href = "tel:" + overlayNum;
1614
1621
  }
@@ -1687,8 +1694,6 @@ function getPoolStats(_0) {
1687
1694
  }
1688
1695
  function renewTrackingPool() {
1689
1696
  return __async(this, arguments, function* ({
1690
- poolId,
1691
- number,
1692
1697
  overlayElements,
1693
1698
  apiUrl = getDefaultApiUrl(),
1694
1699
  contextCallback = null
@@ -1697,14 +1702,16 @@ function renewTrackingPool() {
1697
1702
  if (contextCallback) {
1698
1703
  context = contextCallback() || {};
1699
1704
  }
1705
+ const poolId = window.zarPoolData.pool_id;
1706
+ const number = window.zarPoolData.number;
1700
1707
  try {
1701
1708
  var resp = yield getPoolNumber({ poolId, apiUrl, number, context });
1702
1709
  } catch (e2) {
1703
1710
  var msg = "error getting number: " + JSON.stringify(e2);
1704
- warning(msg);
1711
+ warn(msg);
1705
1712
  getNumberFailureCount++;
1706
1713
  if (getNumberFailureCount >= MAX_GET_NUMBER_FAILURES) {
1707
- warning("max failures, stopping pool");
1714
+ warn("max failures, stopping pool");
1708
1715
  clearPoolIntervals();
1709
1716
  if (overlayElements) {
1710
1717
  revertOverlayNumbers({ elems: overlayElements });
@@ -1713,8 +1720,14 @@ function renewTrackingPool() {
1713
1720
  return { status: NUMBER_POOL_ERROR, msg };
1714
1721
  }
1715
1722
  if (resp.status === NUMBER_POOL_SUCCESS && resp.number) {
1723
+ var force = false;
1724
+ if (resp.number !== window.zarPoolData.number) {
1725
+ warn("number changed from " + window.zarPoolData.number + " to " + resp.number);
1726
+ window.zarPoolData.number = resp.number;
1727
+ force = true;
1728
+ }
1716
1729
  if (overlayElements) {
1717
- overlayPhoneNumber({ elems: overlayElements, number: resp.number });
1730
+ overlayPhoneNumber({ elems: overlayElements, number: resp.number, force });
1718
1731
  }
1719
1732
  } else {
1720
1733
  if (overlayElements) {
@@ -1738,7 +1751,7 @@ function initTrackingPool() {
1738
1751
  var msg;
1739
1752
  if (!poolConfig || !poolConfig.poolId || !poolConfig.overlayQuerySelector || !apiUrl) {
1740
1753
  msg = "missing pool config: " + JSON.stringify(poolConfig);
1741
- warning(msg);
1754
+ warn(msg);
1742
1755
  if (poolConfig.initCallback) {
1743
1756
  poolConfig.initCallback({ status: NUMBER_POOL_ERROR, msg });
1744
1757
  }
@@ -1751,7 +1764,7 @@ function initTrackingPool() {
1751
1764
  var poolId = getPoolId(poolConfig.poolId);
1752
1765
  if (!poolId) {
1753
1766
  msg = "no pool ID";
1754
- warning(msg);
1767
+ warn(msg);
1755
1768
  if (poolConfig.initCallback) {
1756
1769
  poolConfig.initCallback({ status: NUMBER_POOL_ERROR, msg });
1757
1770
  }
@@ -1762,19 +1775,20 @@ function initTrackingPool() {
1762
1775
  poolData = yield getPoolNumber({ poolId, apiUrl, number: null, context });
1763
1776
  } catch (e2) {
1764
1777
  msg = "error getting number on init: " + JSON.stringify(e2);
1765
- warning(msg);
1778
+ warn(msg);
1766
1779
  if (poolConfig.initCallback) {
1767
1780
  poolConfig.initCallback({ status: NUMBER_POOL_ERROR, msg });
1768
1781
  }
1769
1782
  return poolIntervals;
1770
1783
  }
1771
1784
  }
1785
+ window.zarPoolData = poolData;
1772
1786
  if (poolData && poolData.status === NUMBER_POOL_SUCCESS && poolData.number) {
1773
1787
  afterDOMContentLoaded(function() {
1774
1788
  var overlayElements = document.querySelectorAll(poolConfig.overlayQuerySelector);
1775
1789
  if (!overlayElements) {
1776
1790
  var msg2 = "No elems found for:" + poolConfig.overlayQuerySelector;
1777
- warning(msg2);
1791
+ warn(msg2);
1778
1792
  if (poolConfig.initCallback) {
1779
1793
  poolConfig.initCallback({ status: NUMBER_POOL_ERROR, msg: msg2 });
1780
1794
  }
@@ -1784,15 +1798,13 @@ function initTrackingPool() {
1784
1798
  var interval = setInterval(function() {
1785
1799
  try {
1786
1800
  renewTrackingPool({
1787
- poolId: poolData.pool_id,
1788
- number: poolData.number,
1789
1801
  overlayElements,
1790
1802
  apiUrl,
1791
1803
  contextCallback: poolConfig.contextCallback
1792
1804
  });
1793
1805
  } catch (e2) {
1794
1806
  var msg3 = "error on interval: " + JSON.stringify(e2);
1795
- warning(msg3);
1807
+ warn(msg3);
1796
1808
  }
1797
1809
  }, poolConfig.renewalInterval || NUMBER_POOL_RENEWAL_TIME_MS);
1798
1810
  poolIntervals[poolData.pool_id] = interval;
@@ -1836,7 +1848,7 @@ function zar({ apiUrl, poolConfig }) {
1836
1848
  }
1837
1849
  }
1838
1850
  } catch (e2) {
1839
- warning("error getting pool id: " + JSON.stringify(e2));
1851
+ warn("error getting pool id: " + JSON.stringify(e2));
1840
1852
  }
1841
1853
  return payload;
1842
1854
  },
@@ -1853,7 +1865,7 @@ function zar({ apiUrl, poolConfig }) {
1853
1865
  } catch (e2) {
1854
1866
  tries++;
1855
1867
  if (tries >= maxTries) {
1856
- warning("error posting page: " + JSON.stringify(e2));
1868
+ warn("error posting page: " + JSON.stringify(e2));
1857
1869
  throw e2;
1858
1870
  }
1859
1871
  yield new Promise((r2) => setTimeout(r2, 1e3));