PageSourceSearch

https://www.americasbest.com/scripts/acdl/adobe-client-data-layer.min.js

js americasbest.com collected 2026-09-24 19:23:38 UTC 10,348 bytes, 345 lines download raw bytes

1(() => {
2  var e = {},
3    t = {};
4  t = {
5    get: function (e, t, n) {
6      let r = Array.isArray(t) ? t : t.split('.'),
7        a = e;
8      for (let e of r) if (void 0 === (a = a[e])) return n;
9      return a;
10    },
11    has: function (e, t) {
12      let n = Array.isArray(t) ? t : t.split('.'),
13        r = e;
14      for (let e of n) {
15        if (!r?.hasOwnProperty(e)) return !1;
16        r = r[e];
17      }
18      return !0;
19    },
20  };
21  var n = JSON.parse('{"version":"2.0.2"}').version,
22    r = {},
23    a = {};
24  a = function (e, t) {
25    let n = Object.keys(t).find(n => {
26      let r = t[n].type,
27        a = n && t[n].values,
28        i = !t[n].optional,
29        o = e[n],
30        l = typeof o,
31        c = r && l !== r,
32        f = a && !a.includes(o);
33      return i ? !o || c || f : o && (c || f);
34    });
35    return void 0 === n;
36  };
37  var i = {};
38  i = {
39    event: { event: { type: 'string' }, eventInfo: { optional: !0 } },
40    listenerOn: {
41      on: { type: 'string' },
42      handler: { type: 'function' },
43      scope: { type: 'string', values: ['past', 'future', 'all'], optional: !0 },
44      path: { type: 'string', optional: !0 },
45    },
46    listenerOff: {
47      off: { type: 'string' },
48      handler: { type: 'function', optional: !0 },
49      scope: { type: 'string', values: ['past', 'future', 'all'], optional: !0 },
50      path: { type: 'string', optional: !0 },
51    },
52  };
53  var o = {};
54  o = {
55    itemType: {
56      DATA: 'data',
57      FCTN: 'fctn',
58      EVENT: 'event',
59      LISTENER_ON: 'listenerOn',
60      LISTENER_OFF: 'listenerOff',
61    },
62    dataLayerEvent: { CHANGE: 'adobeDataLayer:change', EVENT: 'adobeDataLayer:event' },
63    listenerScope: { PAST: 'past', FUTURE: 'future', ALL: 'all' },
64  };
65  let l = e => [Object, Array].includes((e || {}).constructor) && !Object.entries(e || {}).length;
66  r = function (e, t) {
67    let n =
68        Object.keys(i).find(t => a(e, i[t])) ||
69        ('function' == typeof e && o.itemType.FCTN) ||
70        ((function (e) {
71          if ('object' != typeof e || null === e) return !1;
72          let t = e;
73          for (; null !== Object.getPrototypeOf(t); ) t = Object.getPrototypeOf(t);
74          return Object.getPrototypeOf(e) === t;
75        })(e) &&
76          o.itemType.DATA),
77      r = (function () {
78        let t = Object.keys(e)
79          .filter(e => !Object.keys(i.event).includes(e))
80          .reduce((t, n) => ((t[n] = e[n]), t), {});
81        if (!l(t)) return t;
82      })();
83    return { config: e, type: n, data: r, valid: !!n, index: t };
84  };
85  var c = {};
86  c = function (e) {
87    let t = e.config.on || e.config.off,
88      n = e.config.handler || null,
89      r = e.config.scope || (e.config.on && o.listenerScope.ALL) || null,
90      a = e.config.path || null;
91    return { event: t, handler: n, scope: r, path: a };
92  };
93  var f = {},
94    s = {};
95  s = {
96    mergeWith: function e(t, n, r) {
97      if (n)
98        return (
99          t || (t = {}),
100          Object.keys(n).forEach(a => {
101            let i = r ? r(t[a], n[a], a, t) : void 0;
102            (void 0 === i &&
103              (i =
104                n[a] === Object(n[a]) && a in t && !Array.isArray(n[a]) ? e(t[a], n[a], r) : n[a]),
105              (t[a] = i));
106          }),
107          t
108        );
109    },
110    cloneDeepWith: function e(t, n) {
111      let r = n ? n(t) : void 0;
112      if (void 0 === r) {
113        if (t === Object(t) && !Array.isArray(t)) {
114          r = {};
115          let a = Object.keys(t);
116          for (let i = 0; i < a.length; i++) {
117            let o = a[i];
118            r[o] = e(t[o], n);
119          }
120        }
121        r = structuredClone(t);
122      }
123      return r;
124    },
125  };
126  var u = {},
127    p = {};
128  function y(e, n) {
129    return !n.data || !e.path || (0, t.has)(n.data, e.path) || p(n.data, e.path);
130  }
131  ((p = function (e, n) {
132    let r = n.substring(0, n.lastIndexOf('.'));
133    for (; r; ) {
134      if ((0, t.has)(e, r)) {
135        let n = (0, t.get)(e, r);
136        if (null == n) return !0;
137      }
138      r = r.substring(0, r.lastIndexOf('.'));
139    }
140    return !1;
141  }),
142    (u = function (e, t) {
143      let n = e.event,
144        r = t.config,
145        a = !1;
146      return (
147        t.type === o.itemType.DATA
148          ? n === o.dataLayerEvent.CHANGE && (a = y(e, t))
149          : t.type === o.itemType.EVENT &&
150            ((n === o.dataLayerEvent.EVENT || n === r.event) && (a = y(e, t)),
151            t.data && n === o.dataLayerEvent.CHANGE && (a = y(e, t))),
152        a
153      );
154    }));
155  var d = {};
156  ((d = function (e, t) {
157    let n = t.event;
158    if (Object.prototype.hasOwnProperty.call(e, n)) {
159      for (let [r, a] of e[n].entries()) if (a.handler === t.handler) return r;
160    }
161    return -1;
162  }),
163    (f = function (e) {
164      let t = {},
165        n = d.bind(null, t);
166      function r(t, n) {
167        if (u(t, n)) {
168          let r = [(0, s.cloneDeepWith)(n.config)];
169          t.handler.apply(e.getDataLayer(), r);
170        }
171      }
172      return {
173        register: function (e) {
174          let r = e.event;
175          return Object.prototype.hasOwnProperty.call(t, r)
176            ? -1 === n(e) && (t[e.event].push(e), !0)
177            : ((t[e.event] = [e]), !0);
178        },
179        unregister: function (e) {
180          let r = e.event;
181          if (Object.prototype.hasOwnProperty.call(t, r)) {
182            if (e.handler || e.scope || e.path) {
183              let a = n(e);
184              a > -1 && t[r].splice(a, 1);
185            } else t[r] = [];
186          }
187        },
188        triggerListeners: function (e) {
189          let n = (function (e) {
190            let t = [];
191            switch (e.type) {
192              case o.itemType.DATA:
193                t.push(o.dataLayerEvent.CHANGE);
194                break;
195              case o.itemType.EVENT:
196                (t.push(o.dataLayerEvent.EVENT),
197                  e.data && t.push(o.dataLayerEvent.CHANGE),
198                  e.config.event !== o.dataLayerEvent.CHANGE && t.push(e.config.event));
199            }
200            return t;
201          })(e);
202          n.forEach(function (n) {
203            if (Object.prototype.hasOwnProperty.call(t, n)) for (let a of t[n]) r(a, e);
204          });
205        },
206        triggerListener: function (e, t) {
207          r(e, t);
208        },
209      };
210    }));
211  var g = {},
212    h = s.cloneDeepWith,
213    v = s.mergeWith;
214  ((g = function (e, t) {
215    return (
216      v(e, t, function (e, t) {
217        if (null == t) return null;
218      }),
219      (e = (function (e, t = e => !e) {
220        return h(e, function e(n) {
221          if (n === Object(n)) {
222            if (Array.isArray(n)) return n.filter(e => !t(e)).map(t => h(t, e));
223            let r = {};
224            for (let a of Object.keys(n)) t(n[a]) || (r[a] = h(n[a], e));
225            return r;
226          }
227        });
228      })(e, e => null == e))
229    );
230  }),
231    (e = function (e) {
232      let a;
233      let i = e || {},
234        l = [],
235        s = [],
236        u = {},
237        p = {
238          getState: function () {
239            return u;
240          },
241          getDataLayer: function () {
242            return l;
243          },
244        };
245      function y(e) {
246        u = g(u, e.data);
247      }
248      function d(e) {
249        if (!e.valid) {
250          h(e);
251          return;
252        }
253        function t(e) {
254          return 0 === l.length || e.index > l.length - 1 ? [] : l.slice(0, e.index).map(e => r(e));
255        }
256        ({
257          data: function (e) {
258            (y(e), a.triggerListeners(e));
259          },
260          fctn: function (e) {
261            e.config.call(l, l);
262          },
263          event: function (e) {
264            (e.data && y(e), a.triggerListeners(e));
265          },
266          listenerOn: function (e) {
267            let n = c(e);
268            switch (n.scope) {
269              case o.listenerScope.PAST:
270                for (let r of t(e)) a.triggerListener(n, r);
271                break;
272              case o.listenerScope.FUTURE:
273                a.register(n);
274                break;
275              case o.listenerScope.ALL: {
276                let r = a.register(n);
277                if (r) for (let r of t(e)) a.triggerListener(n, r);
278              }
279            }
280          },
281          listenerOff: function (e) {
282            a.unregister(c(e));
283          },
284        })[e.type](e);
285      }
286      function h(e) {
287        let t =
288          'The following item cannot be handled by the data layer because it does not have a valid format: ' +
289          JSON.stringify(e.config);
290        console.error(t);
291      }
292      return (
293        Array.isArray(i.dataLayer) || (i.dataLayer = []),
294        (s = i.dataLayer.splice(0, i.dataLayer.length)),
295        ((l = i.dataLayer).version = n),
296        (u = {}),
297        (a = f(p)),
298        (l.push = function (...e) {
299          if (
300            (Object.keys(e).forEach(function (t) {
301              let n = e[t],
302                a = r(n);
303              switch ((a.valid || (h(a), delete e[t]), a.type)) {
304                case o.itemType.DATA:
305                case o.itemType.EVENT:
306                  d(a);
307                  break;
308                case o.itemType.FCTN:
309                  (delete e[t], d(a));
310                  break;
311                case o.itemType.LISTENER_ON:
312                case o.itemType.LISTENER_OFF:
313                  delete e[t];
314              }
315            }),
316            e[0])
317          )
318            return Array.prototype.push.apply(this, e);
319        }),
320        (l.getState = function (e) {
321          return e ? (0, t.get)(structuredClone(u), e) : structuredClone(u);
322        }),
323        (l.addEventListener = function (e, t, n) {
324          let a = r({ on: e, handler: t, scope: n && n.scope, path: n && n.path });
325          d(a);
326        }),
327        (l.removeEventListener = function (e, t) {
328          let n = r({ off: e, handler: t });
329          d(n);
330        }),
331        (function () {
332          for (let e = 0; e < s.length; e++) l.push(s[e]);
333        })(),
334        p
335      );
336    }));
337  let E = { Manager: e };
338  ((window.adobeDataLayer = window.adobeDataLayer || []),
339    window.adobeDataLayer.version
340      ? console.warn(
341          `Adobe Client Data Layer v${window.adobeDataLayer.version} has already been imported/initialized on this page. You may be erroneously loading it a second time.`
342        )
343      : E.Manager({ dataLayer: window.adobeDataLayer }));
344})();
345//# sourceMappingURL=adobe-client-data-layer.min.js.map

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.