PageSourceSearch

https://childadv.net/_/js/c/436e2dbf20fa3855f8d3f042c5ee44e4419bd72a.js?_n=m6abbfc84739d29.74249668

js childadv.net collected 2026-09-30 05:07:14 UTC 59,938 bytes, 906 lines download raw bytes

1
2/* cached asset-dump98e6a8b281a9cba7430393cd9c2d0c670ee2c0fd: */
3var forge = forge || {};
4forge.blockCallback = function(block, action, callbackFunc) {
5    var obj = {
6        id: block.id,
7        action: action,
8        uri: block.callbackUri + "/" + action,
9        requestPath:  window.location.pathname
10    };
11    return callbackFunc.apply(obj);
12};
13forge.requestData = function(data) {
14    data = data || {};
15    data.userId      = forge.user ? forge.user.id : null;
16    data.pageId      = forge.page ? forge.page.id : null;
17    data.requestPath = window.location.pathname;
18    return data;
19};
20/* cached asset-dump3a6b47b928e4d08a23a7352f39ccff16dfd93e58: */
21"use strict";
22
23function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
24function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
25function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
26function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
27function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
28function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } }
vendor: 14,395 bytes, lines 28-37
28 }; }
29function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
30function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
31function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
32function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
33function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
34function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
35function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
36function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
37function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
38function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
39(function () {
40  var __data_block_id = 11679817;
41  var __block_id = "djfUg";
42  var foundBlockNode = document.getElementsByClassName("f_" + __block_id).length > 0;
43  if (!foundBlockNode) {
44    var templates = document.querySelectorAll('template');
45    for (var i = 0; i < templates.length; i++) {
46      if (templates[i].content.querySelector('.f_' + __block_id)) {
47        foundBlockNode = true;
48        break;
49      }
50    }
51  }
52  if (foundBlockNode) {
53    var ready = function ready(counter) {
54      if (!('__forgePageBlockData' in window) || !(__data_block_id in __forgePageBlockData)) {
55        if (counter == 10) {
56          throw Error("Giving up waiting for block data");
57          return;
58        }
59        return setTimeout(function () {
60          ready(counter + 1);
61        }, 250);
62      }
63      if (typeof __forgePageBlockData[__data_block_id] == 'number') {
64        __forgePageBlockData[__data_block_id] = __forgePageBlockData[__forgePageBlockData[__data_block_id]] || {};
65      }
66      var useCaptcha = __forgePageBlockData[__data_block_id].useCaptcha;
67      var objectModelMap = __forgePageBlockData[__data_block_id].objectModelMap;
68      var form = __forgePageBlockData[__data_block_id].form;
69      var form_id = __forgePageBlockData[__data_block_id].form_id;
70      var form_settings = __forgePageBlockData[__data_block_id].form_settings;
71      var form_fields = __forgePageBlockData[__data_block_id].form_fields;
72      var form_structure = __forgePageBlockData[__data_block_id].form_structure;
73      var form_google_maps_enabled = __forgePageBlockData[__data_block_id].form_google_maps_enabled;
74      var form_has_google_maps_api_key = __forgePageBlockData[__data_block_id].form_has_google_maps_api_key;
75      var conversion_meta = __forgePageBlockData[__data_block_id].conversion_meta;
76      var button = __forgePageBlockData[__data_block_id].button;
77      var centerButtons = __forgePageBlockData[__data_block_id].centerButtons;
78      var buttonColumnSpan = __forgePageBlockData[__data_block_id].buttonColumnSpan;
79      var prevPageButton = __forgePageBlockData[__data_block_id].prevPageButton;
80      var nextPageButton = __forgePageBlockData[__data_block_id].nextPageButton;
81      var showLabels = __forgePageBlockData[__data_block_id].showLabels;
82      var showPlaceholders = __forgePageBlockData[__data_block_id].showPlaceholders;
83      var showPageNumbers = __forgePageBlockData[__data_block_id].showPageNumbers;
84      var _block = __forgePageBlockData[__data_block_id]._block;
85      var _page = __forgePageBlockData[__data_block_id]._page;
86      var _ts = __forgePageBlockData[__data_block_id]._ts;
87      var _elements = __forgePageBlockData[__data_block_id]._elements;
88      var block = {
89        id: "11679817",
90        callbackUri: "/_/b/11679817"
91      };
92      var call = function call(action, callbackFunc) {
93        return forge.blockCallback(block, action, callbackFunc);
94      };
95      var callback = function callback(action, data) {
96        return call(action, function () {
97          data = withData(data || {});
98
99          // check if any of the formData is a File or Blob
100          var isFile = false;
101          for (var key in data) {
102            if (!isFile && data[key]) {
103              var arr = Array.isArray(data[key]) ? data[key] : [data[key]];
104              for (var i = 0; i < arr.length; i++) {
105                if (arr[i] === Object(arr[i]) && (arr[i].constructor == File || arr[i].constructor === Blob)) {
106                  isFile = true;
107                  break;
108                }
109              }
110            }
111          }
112          if (isFile) {
113            var formData = new FormData();
114            for (var key in data) {
115              if (data[key] && (Array.isArray(data[key]) || data[key] === Object(data[key])) && data[key].constructor !== File && data[key].constructor !== Blob) {
116                for (var idx in data[key]) {
117                  formData.append(key + '[' + idx + ']', data[key][idx]);
118                }
119              } else {
120                formData.append(key, data[key]);
121              }
122            }
123            return axios.post(this.uri, formData, {
124              headers: {
125                'Content-Type': 'multipart/form-data',
126                'X-Lazy-Load': 'off'
127              }
128            });
129          } else {
130            return axios.post(this.uri, data, {
131              headers: {
132                'X-Lazy-Load': 'off'
133              }
134            });
135          }
136        });
137      };
138      var withData = function withData(data) {
139        return forge.requestData(data);
140      };
141
142      /**
143       * This script relies on the BladeScript functionality which is scoped automatically (providing form_id, form_fields and optionally conversion_meta)
144       */
145
146      //window.forgeForms = window.forgeForms || {}
147
148      // Wrap in IIFE to handle both pre-Alpine and post-Alpine loading scenarios
149      (function () {
150        var form = function form() {
151          return {
152            formInitilized: new Date().getTime(),
153            timeoutCounter: 0,
154            autocompleteTimeoutCounter: 0,
155            input: form_fields,
156            successMessage: "",
157            successRedirect: "",
158            errorMessage: "",
159            sending: false,
160            recaptchaWidgetId: null,
161            currentPage: 1,
162            numberOfPages: _typeof(form_settings) === 'object' && form_settings && 'pages' in form_settings ? form_settings.pages : 1,
163            formStructure: typeof form_structure !== 'undefined' ? form_structure : {},
164            init: function init() {
165              var _this = this;
166              this.$nextTick(function () {
167                _this.initializeAddressFields();
168                _this.initializeGoogleAutocomplete();
169                setTimeout(function () {
170                  if (_this.$refs.captchaButton) {
171                    if (!_this.recaptchaScriptExists()) {
172                      _this.loadRecaptcha();
173                    }
174                    _this.initRecaptcha();
175                  }
176                }, 3000);
177              });
178            },
179            initializeAddressFields: function initializeAddressFields() {
180              var _this2 = this;
181              if (!this.formStructure) return;
182              Object.entries(this.formStructure).forEach(function (_ref) {
183                var _ref2 = _slicedToArray(_ref, 2),
184                  slug = _ref2[0],
185                  type = _ref2[1];
186                if (type === 'address') {
187                  if (!_this2.input[slug] || _typeof(_this2.input[slug]) !== 'object') {
188                    _this2.input[slug] = {
189                      line1: '',
190                      line2: '',
191                      city: '',
192                      state: '',
193                      postalCode: '',
194                      country: '',
195                      fullAddress: ''
196                    };
197                  } else {
198                    // Ensure fullAddress is present if object exists but incomplete
199                    if (!('fullAddress' in _this2.input[slug])) {
200                      _this2.input[slug].fullAddress = '';
201                    }
202                  }
203                }
204              });
205            },
206            initializeGoogleAutocomplete: function initializeGoogleAutocomplete() {
207              var _this3 = this,
208                _this$$refs$addressAu,
209                _this$$refs$addressAu2,
210                _this$$refs$addressAu3;
211              this.autocompleteTimeoutCounter++;
212
213              // Give up after 120 attempts (60 seconds at 500ms intervals)
214              if (this.autocompleteTimeoutCounter > 120) {
215                console.warn('Google Maps API not available for address autocomplete');
216                return;
217              }
218
219              // Check if Google Maps API is loaded
220              if (typeof google === 'undefined' || typeof google.maps === 'undefined' || typeof google.maps.places === 'undefined') {
221                setTimeout(function () {
222                  _this3.initializeGoogleAutocomplete();
223                }, 500);
224                return;
225              }
226
227              // Find all address input fields in this form
228              var addressInputs = this.$el.querySelectorAll('input[data-address="true"]');
229
230              // Capture the Alpine component context
231              var alpineComponent = this;
232
233              // Get style templates
234              var dropdownStyles = ((_this$$refs$addressAu = this.$refs.addressAutocompleteDropdownStyles) === null || _this$$refs$addressAu === void 0 ? void 0 : _this$$refs$addressAu.classList) || null;
235              var itemStyles = ((_this$$refs$addressAu2 = this.$refs.addressAutocompleteItemStyles) === null || _this$$refs$addressAu2 === void 0 ? void 0 : _this$$refs$addressAu2.classList) || null;
236              var itemSelectedStyles = ((_this$$refs$addressAu3 = this.$refs.addressAutocompleteItemSelectedStyles) === null || _this$$refs$addressAu3 === void 0 ? void 0 : _this$$refs$addressAu3.classList) || null;
237              addressInputs.forEach(function (input) {
238                var slug = input.dataset.slug;
239                if (!slug) return;
240
241                // Create dropdown container for suggestions
242                var dropdown = document.createElement('div');
243                // Apply classes from template or fallback to defaults
244                if (dropdownStyles) {
245                  dropdown.className = Array.from(dropdownStyles).join(' ') + ' hidden';
246                } else {
247                  dropdown.className = 'absolute z-50 w-full mt-1 bg-white border border-gray-300 rounded-md shadow-lg max-h-60 overflow-auto hidden';
248                }
249                dropdown.setAttribute('role', 'listbox');
250
251                // Position dropdown relative to input's parent
252                var parent = input.parentElement;
253                if (parent && window.getComputedStyle(parent).position === 'static') {
254                  parent.style.position = 'relative';
255                }
256                parent.appendChild(dropdown);
257                var debounceTimer;
258                var currentSuggestions = [];
259                var selectedIndex = -1;
260
261                // Handle input changes
262                input.addEventListener('input', /*#__PURE__*/function () {
263                  var _ref3 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee3(e) {
264                    var value;
265                    return _regeneratorRuntime().wrap(function _callee3$(_context3) {
266                      while (1) {
267                        switch (_context3.prev = _context3.next) {
268                          case 0:
269                            value = e.target.value; // Clear previous timer
270                            clearTimeout(debounceTimer);
271                            if (!(!value || value.length < 3)) {
272                              _context3.next = 7;
273                              break;
274                            }
275                            dropdown.classList.add('hidden');
276                            currentSuggestions = [];
277                            selectedIndex = -1;
278                            return _context3.abrupt("return");
279                          case 7:
280                            // Debounce the API call
281                            debounceTimer = setTimeout( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
282                              var request, _yield$google$maps$pl, suggestions;
283                              return _regeneratorRuntime().wrap(function _callee2$(_context2) {
284                                while (1) {
285                                  switch (_context2.prev = _context2.next) {
286                                    case 0:
287                                      _context2.prev = 0;
288                                      request = {
289                                        input: value,
290                                        includedPrimaryTypes: ['geocode'],
291                                        language: 'en'
292                                      };
293                                      _context2.next = 4;
294                                      return google.maps.places.AutocompleteSuggestion.fetchAutocompleteSuggestions(request);
295                                    case 4:
296                                      _yield$google$maps$pl = _context2.sent;
297                                      suggestions = _yield$google$maps$pl.suggestions;
298                                      currentSuggestions = suggestions || [];
299                                      selectedIndex = -1;
300                                      if (currentSuggestions.length) {
301                                        _context2.next = 11;
302                                        break;
303                                      }
304                                      dropdown.classList.add('hidden');
305                                      return _context2.abrupt("return");
306                                    case 11:
307                                      // Build dropdown UI with classes from templates
308                                      dropdown.innerHTML = '';
309                                      currentSuggestions.forEach(function (suggestion, index) {
310                                        var item = document.createElement('div');
311                                        // Apply classes from template or fallback to defaults
312                                        if (itemStyles) {
313                                          item.className = Array.from(itemStyles).join(' ');
314                                        } else {
315                                          item.className = 'px-4 py-3 cursor-pointer hover:bg-gray-100 border-b border-gray-100 last:border-b-0';
316                                        }
317                                        item.setAttribute('role', 'option');
318                                        item.setAttribute('data-index', index);
319                                        item.textContent = suggestion.placePrediction.text.toString();
320
321                                        // Handle click selection
322                                        item.addEventListener('click', /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
323                                          return _regeneratorRuntime().wrap(function _callee$(_context) {
324                                            while (1) {
325                                              switch (_context.prev = _context.next) {
326                                                case 0:
327                                                  _context.next = 2;
328                                                  return handlePlaceSelection(suggestion.placePrediction);
329                                                case 2:
330                                                case "end":
331                                                  return _context.stop();
332                                              }
333                                            }
334                                          }, _callee);
335                                        })));
336                                        dropdown.appendChild(item);
337                                      });
338                                      dropdown.classList.remove('hidden');
339                                      _context2.next = 20;
340                                      break;
341                                    case 16:
342                                      _context2.prev = 16;
343                                      _context2.t0 = _context2["catch"](0);
344                                      console.error('Error fetching autocomplete suggestions:', _context2.t0);
345                                      dropdown.classList.add('hidden');
346                                    case 20:
347                                    case "end":
348                                      return _context2.stop();
349                                  }
350                                }
351                              }, _callee2, null, [[0, 16]]);
352                            })), 300);
353                          case 8:
354                          case "end":
355                            return _context3.stop();
356                        }
357                      }
358                    }, _callee3);
359                  }));
360                  return function (_x2) {
361                    return _ref3.apply(this, arguments);
362                  };
363                }());
364
365                // Handle keyboard navigation
366                input.addEventListener('keydown', /*#__PURE__*/function () {
367                  var _ref6 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee4(e) {
368                    var items;
369                    return _regeneratorRuntime().wrap(function _callee4$(_context4) {
370                      while (1) {
371                        switch (_context4.prev = _context4.next) {
372                          case 0:
373                            items = dropdown.querySelectorAll('[role="option"]');
374                            if (!(e.key === 'ArrowDown')) {
375                              _context4.next = 7;
376                              break;
377                            }
378                            e.preventDefault();
379                            selectedIndex = Math.min(selectedIndex + 1, currentSuggestions.length - 1);
380                            updateSelectedItem(items, selectedIndex);
381                            _context4.next = 21;
382                            break;
383                          case 7:
384                            if (!(e.key === 'ArrowUp')) {
385                              _context4.next = 13;
386                              break;
387                            }
388                            e.preventDefault();
389                            selectedIndex = Math.max(selectedIndex - 1, -1);
390                            updateSelectedItem(items, selectedIndex);
391                            _context4.next = 21;
392                            break;
393                          case 13:
394                            if (!(e.key === 'Enter' && selectedIndex >= 0)) {
395                              _context4.next = 20;
396                              break;
397                            }
398                            e.preventDefault();
399                            if (!currentSuggestions[selectedIndex]) {
400                              _context4.next = 18;
401                              break;
402                            }
403                            _context4.next = 18;
404                            return handlePlaceSelection(currentSuggestions[selectedIndex].placePrediction);
405                          case 18:
406                            _context4.next = 21;
407                            break;
408                          case 20:
409                            if (e.key === 'Escape') {
410                              dropdown.classList.add('hidden');
411                              selectedIndex = -1;
412                            }
413                          case 21:
414                          case "end":
415                            return _context4.stop();
416                        }
417                      }
418                    }, _callee4);
419                  }));
420                  return function (_x3) {
421                    return _ref6.apply(this, arguments);
422                  };
423                }());
424
425                // Update visual selection
426                var updateSelectedItem = function updateSelectedItem(items, index) {
427                  items.forEach(function (item, i) {
428                    if (i === index) {
429                      // Apply selected state classes from template
430                      if (itemSelectedStyles) {
431                        item.className = Array.from(itemSelectedStyles).join(' ');
432                      } else {
433                        // Fallback: just add bg-gray-100 to existing classes
434                        item.classList.add('bg-gray-100');
435                      }
436                      item.scrollIntoView({
437                        block: 'nearest'
438                      });
439                    } else {
440                      // Apply normal state classes from template
441                      if (itemStyles) {
442                        item.className = Array.from(itemStyles).join(' ');
443                      } else {
444                        // Fallback: remove bg-gray-100
445                        item.classList.remove('bg-gray-100');
446                      }
447                    }
448                  });
449                };
450
451                // Handle place selection
452                var handlePlaceSelection = /*#__PURE__*/function () {
453                  var _ref7 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee5(placePrediction) {
454                    var place, addressComponents, addressData;
455                    return _regeneratorRuntime().wrap(function _callee5$(_context5) {
456                      while (1) {
457                        switch (_context5.prev = _context5.next) {
458                          case 0:
459                            _context5.prev = 0;
460                            // Convert prediction to Place object
461                            place = placePrediction.toPlace(); // Fetch place details including address components
462                            _context5.next = 4;
463                            return place.fetchFields({
464                              fields: ['addressComponents', 'formattedAddress']
465                            });
466                          case 4:
467                            addressComponents = place.addressComponents;
468                            if (addressComponents) {
469                              _context5.next = 7;
470                              break;
471                            }
472                            return _context5.abrupt("return");
473                          case 7:
474                            // Parse address components
475                            addressData = {
476                              line1: '',
477                              line2: '',
478                              city: '',
479                              state: '',
480                              postalCode: '',
481                              country: '',
482                              fullAddress: place.formattedAddress || ''
483                            }; // Extract address components
484                            addressComponents.forEach(function (component) {
485                              var types = component.types;
486                              if (types.includes('street_number')) {
487                                addressData.line1 = component.longText + ' ' + addressData.line1;
488                              } else if (types.includes('route')) {
489                                addressData.line1 += component.longText;
490                              } else if (types.includes('locality')) {
491                                addressData.city = component.longText;
492                              } else if (types.includes('administrative_area_level_1')) {
493                                addressData.state = component.shortText;
494                              } else if (types.includes('postal_code')) {
495                                addressData.postalCode = component.longText;
496                              } else if (types.includes('country')) {
497                                addressData.country = component.longText;
498                              }
499                            });
500
501                            // Trim line1
502                            addressData.line1 = addressData.line1.trim();
503
504                            // Update the input field display with full address
505                            input.value = addressData.fullAddress;
506
507                            // Update the Alpine data
508                            alpineComponent.input[slug].line1 = addressData.line1;
509                            alpineComponent.input[slug].line2 = addressData.line2;
510                            alpineComponent.input[slug].city = addressData.city;
511                            alpineComponent.input[slug].state = addressData.state;
512                            alpineComponent.input[slug].postalCode = addressData.postalCode;
513                            alpineComponent.input[slug].country = addressData.country;
514                            alpineComponent.input[slug].fullAddress = addressData.fullAddress;
515
516                            // Hide dropdown
517                            dropdown.classList.add('hidden');
518                            currentSuggestions = [];
519                            selectedIndex = -1;
520                            _context5.next = 26;
521                            break;
522                          case 23:
523                            _context5.prev = 23;
524                            _context5.t0 = _context5["catch"](0);
525                            console.error('Error fetching place details:', _context5.t0);
526                          case 26:
527                          case "end":
528                            return _context5.stop();
529                        }
530                      }
531                    }, _callee5, null, [[0, 23]]);
532                  }));
533                  return function handlePlaceSelection(_x4) {
534                    return _ref7.apply(this, arguments);
535                  };
536                }();
537
538                // Hide dropdown when clicking outside
539                document.addEventListener('click', function (e) {
540                  if (!input.contains(e.target) && !dropdown.contains(e.target)) {
541                    dropdown.classList.add('hidden');
542                    selectedIndex = -1;
543                  }
544                });
545              });
546            },
547            prevPage: function prevPage() {
548              this.currentPage--;
549              if (typeof gtag !== "undefined") {
550                gtag("event", "form_prev_page", {
551                  'page': this.currentPage,
552                  'form': form_id
553                });
554              }
555            },
556            nextPage: function nextPage() {
557              this.currentPage++;
558              if (typeof gtag !== "undefined") {
559                gtag("event", "form_next_page", {
560                  'page': this.currentPage,
561                  'form': form_id
562                });
563              }
564            },
565            recaptchaScriptExists: function recaptchaScriptExists() {
566              var url = "https://www.google.com/recaptcha/api.js?render=explicit";
567              var scripts = document.getElementsByTagName("script");
568              for (var i = scripts.length; i--;) {
569                if (scripts[i].src == url) {
570                  return true;
571                }
572              }
573              return false;
574            },
575            getNextSibling: function getNextSibling(elem, selector) {
576              // Get the next sibling element
577              try {
578                var sibling = elem.nextElementSibling;
579                if (!sibling) return;
580                // If there's no selector, return the first sibling
581                if (!selector) return sibling;
582                // If the sibling matches our selector, use it
583                // If not, jump to the next sibling and continue the loop
584                while (sibling) {
585                  if (sibling.matches(selector)) return sibling;
586                  sibling = sibling.nextElementSibling;
587                }
588                return sibling;
589              } catch (error) {}
590            },
591            loadRecaptcha: function loadRecaptcha() {
592              // Only init recaptcha if we have a recaptcha button ref
593              if (!this.$refs.captchaButton) {
594                return;
595              }
596              var recaptchaScript = document.createElement("script");
597              recaptchaScript.async = true;
598              recaptchaScript.type = "text/javascript";
599              recaptchaScript.setAttribute("src", "https://www.google.com/recaptcha/api.js?render=explicit");
600              document.head.appendChild(recaptchaScript);
601            },
602            initRecaptcha: function initRecaptcha() {
603              var _this4 = this;
604              // Only init recaptcha if we have a recaptcha button ref
605              if (!this.$refs.captchaButton) {
606                return;
607              }
608              this.timeoutCounter++;
609              if (this.timeoutCounter === 120) {
610                console.log("Giving up on recaptcha");
611                return;
612              }
613              var submitBtn = this.$refs.captchaButton;
614              try {
615                setTimeout(function () {
616                  if (typeof grecaptcha === "undefined" || typeof grecaptcha.render === "undefined") {
617                    _this4.initRecaptcha();
618                  } else {
619                    var _this4$$refs$captchaB;
620                    _this4.recaptchaWidgetId = grecaptcha.render(submitBtn.getAttribute("id"), {
621                      sitekey: (_this4$$refs$captchaB = _this4.$refs.captchaButton.dataset.sitekey) !== null && _this4$$refs$captchaB !== void 0 ? _this4$$refs$captchaB : "",
622                      badge: "bottomleft",
623                      size: "invisible",
624                      callback: _this4.recaptchaPassed.bind(_this4),
625                      errorCallback: console.error,
626                      expiredCallback: console.error
627                    });
628                  }
629                }, 500);
630                var checkForBadge = setInterval(function () {
631                  var badge = document.querySelector(".grecaptcha-badge");
632                  if (badge) {
633                    document.body.append(badge);
634                    clearInterval(checkForBadge);
635                  }
636                }, 50);
637              } catch (error) {}
638            },
639            usingRecaptcha: function usingRecaptcha() {
640              return this.$refs.captchaButton || typeof this.input["g-recaptcha-response"] !== "undefined";
641            },
642            recaptchaPassed: function recaptchaPassed(code) {
643              this.input["g-recaptcha-response"] = code;
644              grecaptcha.reset(this.recaptchaWidgetId);
645              this.submit();
646            },
647            submit: function submit(cb, skip) {
648              var _this5 = this;
649              // Manually update the inputs from the form itself in case the user used auto-fill and
650              // the browser didn't behave correctly or something.
651              if (!skip) {
652                var inputs = document.querySelectorAll("[x-data='".concat(form_id, "'] [x-model]"));
653                var foundAutofill = false;
654                for (var i = 0; i < inputs.length; i++) {
655                  // Wrap this in a try/catch because non webkit browsers will log errors on this pseudo element
656                  try {
657                    if (inputs[i].matches(':-webkit-autofill')) {
658                      inputs[i].dispatchEvent(new Event("input"));
659                      foundAutofill = true;
660                    }
661                  } catch (error) {}
662                }
663                if (foundAutofill) {
664                  // Wait a beat to let alpine catch the change events
665                  setTimeout(function () {
666                    _this5.submit(cb, true);
667                  }, 100);
668                  return false;
669                }
670              }
671
672              // If captcha is required (ref exists) and didn't pass
673              if (this.usingRecaptcha() && !this.input["g-recaptcha-response"]) {
674                // get outta here
675                console.log('Recaptcha required. Double check you have both a x-ref="captchaButton" and a field named "g-recaptcha-response" in your PHP.');
676                alert("Oops, it looks like the form isn't quite ready yet. Please wait a few seconds and try again.");
677                cb && typeof cb === "function" && cb(false);
678                return false;
679              }
680
681              // Update form state
682              this.sending = true;
683              this.input.form_submitted_in = new Date().getTime() - this.formInitilized;
684              // Submit the submit callback
685              callback("submit", this.input).then(function (res) {
686                console.log("Form submitted at " + new Date().getTime());
687                try {
688                  setTimeout(function () {
689                    var node = document.getElementById(form_id);
690                    if (node && 'scrollIntoView' in node) {
691                      console.log("Form scrolling to Success Message at " + new Date().getTime());
692                      node.scrollIntoView({
693                        block: "start",
694                        behavior: "smooth"
695                      });
696                    }
697                  }, 100);
698
699                  // If we don't get a success message back, something went from (even if it's a 200 code)
700                  if (!res.data || !res.data.message && !res.data.redirect) {
701                    // Show error and reset form
702                    _this5.successMessage = null;
703                    _this5.errorMessage = "An unknown error occurred. Please use another method to get in touch and report this issue.";
704                    _this5.sending = false;
705                    cb && typeof cb === "function" && cb(false);
706                    return; // get out of here
707                  }
708
709                  // SUCCESS
710                  console.log("Form conversion recorded at " + new Date().getTime());
711                  _this5.recordConversion();
712                  if (res.data.redirect) {
713                    // wait a second to let the conversion fire
714                    setTimeout(function () {
715                      window.location.href = res.data.redirect;
716                    }, 1000);
717                  } else {
718                    _this5.successMessage = res.data.message;
719                  }
720
721                  // Reset form state
722                  _this5.errorMessage = null;
723                  _this5.sending = false;
724                  cb && typeof cb === "function" && cb(true);
725                } catch (e) {
726                  console.log(e);
727                }
728              })["catch"](function (_ref8) {
729                var response = _ref8.response;
730                var node = document.getElementById(form_id);
731                if (node && 'scrollIntoView' in node) {
732                  node.scrollIntoView({
733                    block: "start",
734                    behavior: "smooth"
735                  });
736                }
737
738                // Reset form fields and error message
739                var message = "";
740                var invalids = _this5.$el.getElementsByClassName("is-invalid");
741                var _iterator = _createForOfIteratorHelper(invalids),
742                  _step;
743                try {
744                  for (_iterator.s(); !(_step = _iterator.n()).done;) {
745                    var element = _step.value;
746                    element.classList.remove("is-invalid");
747                  }
748
749                  // If errors weren't sent, something else went wrong but we want to give some feedback
750                } catch (err) {
751                  _iterator.e(err);
752                } finally {
753                  _iterator.f();
754                }
755                if (!response.data || !response.data.errors) {
756                  message = "An unknown error occurred. Please use another method to get in touch and report this issue.";
757                  // We have errors
758                } else {
759                  // If a string
760                  if (typeof response.data.errors === "string") {
761                    // Single error (likely not field related) set message to error
762                    message = response.data.errors;
763                    // If it's an array
764                  } else {
765                    // Append each to the message
766                    for (var _i2 = 0, _Object$entries = Object.entries(response.data.errors); _i2 < _Object$entries.length; _i2++) {
767                      var _this5$getNextSibling;
768                      var _Object$entries$_i = _slicedToArray(_Object$entries[_i2], 2),
769                        field = _Object$entries$_i[0],
770                        msg = _Object$entries$_i[1];
771                      var input = _this5.$el.querySelector(".input\\:" + field);
772                      var feedback = (_this5$getNextSibling = _this5.getNextSibling(input, ".invalid-feedback")) !== null && _this5$getNextSibling !== void 0 ? _this5$getNextSibling : null;
773
774                      // If we have a feedback div specifically for this input
775                      if (input && feedback) {
776                        // Send message there
777                        feedback.innerHTML = msg;
778                      } else {
779                        var m = Array.isArray(msg) ? msg.join("<br>") : msg;
780                        //  Otherwise send to the primary error message area
781                        message += message !== "" ? "<br>" + m : m;
782                      }
783                      if (input) {
784                        // Also mark field invalid
785                        input.classList.add("is-invalid");
786                      }
787                    }
788                  }
789                }
790                // Reset form state
791                _this5.successMessage = null;
792                _this5.currentPage = 1;
793                _this5.errorMessage = message;
794                _this5.sending = false;
795                cb && typeof cb === "function" && cb(false);
796              });
797            },
798            recordConversion: function recordConversion() {
799              if ('disableConversions' in window) {
800                return;
801              }
802              var cm = typeof conversion_meta !== "undefined" ? conversion_meta : false;
803              var eventAction = cm && cm.action ? cm.action : "submit";
804              var eventCategory = cm && cm.category ? cm.category : "form";
805              var eventLabel = cm && cm.label ? cm.label : location.pathname;
806              var includeInAnalytics = cm && cm.includeInAnalytics ? cm.includeInAnalytics : [];
807              var analyticsData = {};
808              var _iterator2 = _createForOfIteratorHelper(includeInAnalytics),
809                _step2;
810              try {
811                for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
812                  var aKey = _step2.value;
813                  analyticsData[aKey] = aKey in this.input ? this.input[aKey] : null;
814                }
815
816                // Analytics is configured
817              } catch (err) {
818                _iterator2.e(err);
819              } finally {
820                _iterator2.f();
821              }
822              if (typeof gtag !== "undefined") {
823                var eventDetails = _objectSpread({
824                  event_category: eventCategory,
825                  event_label: eventLabel
826                }, analyticsData);
827                // Send event
828                gtag("event", eventAction, eventDetails);
829                console.log("Conversion event sent to Google Tag Manager", {
830                  eventAction: eventAction,
831                  eventDetails: eventDetails
832                });
833              }
834              window.dataLayer = window.dataLayer || [];
835              window.dataLayer.push({
836                'event': 'generate_lead',
837                'form_submission': eventLabel,
838                'form_data': analyticsData
839              });
840              try {
841                window.dispatchEvent(new CustomEvent('generate_lead', {
842                  detail: {
843                    action_type: eventAction || 'Form Submission',
844                    category: eventCategory || 'Form',
845                    label: eventLabel || window.location.href,
846                    form_id: form_id,
847                    page_url: window.location.href
848                  }
849                }));
850              } catch (error) {
851                // just in case :)
852                console.error('Error dispatching generate_lead event', error);
853              }
854            }
855          };
856        };
857
858        // Track registered forms globally
859        if (!window.__registeredForms) {
860          window.__registeredForms = {};
861        }
862
863        // Register component - must happen before Alpine walks the DOM
864        function registerComponent() {
865          if (!window.__registeredForms[form_id]) {
866            Alpine.data(form_id, form);
867            window.__registeredForms[form_id] = true;
868
869            // Only register "mosaicForm" once for backwards compatibility
870            // This will point to the FIRST form on the page
871            if (!window.__registeredForms['mosaicForm']) {
872              Alpine.data("mosaicForm", form);
873              window.__registeredForms['mosaicForm'] = true;
874            }
875          }
876        }
877
878        // Use alpine:init to ensure we register before Alpine processes the DOM
879        document.addEventListener('alpine:init', function () {
880          registerComponent();
881        });
882
883        // Also register immediately if Alpine has already initialized
884        // This handles the case where scripts load after Alpine has started
885        if (window.Alpine && window.Alpine.version) {
886          registerComponent();
887
888          // If Alpine has already processed the DOM, manually initialize this form
889          // Use requestAnimationFrame to ensure DOM is ready
890          requestAnimationFrame(function () {
891            var formElement = document.querySelector("[x-data=\"".concat(form_id, "\"]"));
892            if (formElement && !formElement._x_dataStack) {
893              // Element exists but hasn't been initialized by Alpine yet
894              try {
895                Alpine.initTree(formElement);
896              } catch (e) {
897                console.warn('Failed to initialize form', form_id, e);
898              }
899            }
900          });
901        }
902      })();
903    };
904    ready(0);
905  }
906})();

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.