/******/ (function(modules) { // webpackBootstrap
/******/ 	// The module cache
/******/ 	var installedModules = {};
/******/
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/
/******/ 		// Check if module is in cache
/******/ 		if(installedModules[moduleId]) {
/******/ 			return installedModules[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = installedModules[moduleId] = {
/******/ 			i: moduleId,
/******/ 			l: false,
/******/ 			exports: {}
/******/ 		};
/******/
/******/ 		// Execute the module function
/******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ 		// Flag the module as loaded
/******/ 		module.l = true;
/******/
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/
/******/
/******/ 	// expose the modules object (__webpack_modules__)
/******/ 	__webpack_require__.m = modules;
/******/
/******/ 	// expose the module cache
/******/ 	__webpack_require__.c = installedModules;
/******/
/******/ 	// define getter function for harmony exports
/******/ 	__webpack_require__.d = function(exports, name, getter) {
/******/ 		if(!__webpack_require__.o(exports, name)) {
/******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
/******/ 		}
/******/ 	};
/******/
/******/ 	// define __esModule on exports
/******/ 	__webpack_require__.r = function(exports) {
/******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
/******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
/******/ 		}
/******/ 		Object.defineProperty(exports, '__esModule', { value: true });
/******/ 	};
/******/
/******/ 	// create a fake namespace object
/******/ 	// mode & 1: value is a module id, require it
/******/ 	// mode & 2: merge all properties of value into the ns
/******/ 	// mode & 4: return value when already ns object
/******/ 	// mode & 8|1: behave like require
/******/ 	__webpack_require__.t = function(value, mode) {
/******/ 		if(mode & 1) value = __webpack_require__(value);
/******/ 		if(mode & 8) return value;
/******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
/******/ 		var ns = Object.create(null);
/******/ 		__webpack_require__.r(ns);
/******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
/******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
/******/ 		return ns;
/******/ 	};
/******/
/******/ 	// getDefaultExport function for compatibility with non-harmony modules
/******/ 	__webpack_require__.n = function(module) {
/******/ 		var getter = module && module.__esModule ?
/******/ 			function getDefault() { return module['default']; } :
/******/ 			function getModuleExports() { return module; };
/******/ 		__webpack_require__.d(getter, 'a', getter);
/******/ 		return getter;
/******/ 	};
/******/
/******/ 	// Object.prototype.hasOwnProperty.call
/******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ 	// __webpack_public_path__
/******/ 	__webpack_require__.p = "";
/******/
/******/
/******/ 	// Load entry module and return exports
/******/ 	return __webpack_require__(__webpack_require__.s = "./js/event-providers/contact-form-7.js");
/******/ })
/************************************************************************/
/******/ ({

/***/ "../node_modules/webpack/buildin/global.js":
/*!*************************************************!*\
  !*** ../node_modules/webpack/buildin/global.js ***!
  \*************************************************/
/*! no static exports found */
/*! ModuleConcatenation bailout: Module is not an ECMAScript module */
/***/ (function(module, exports) {

eval("var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vbm9kZV9tb2R1bGVzL3dlYnBhY2svYnVpbGRpbi9nbG9iYWwuanMuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi4vbm9kZV9tb2R1bGVzL3dlYnBhY2svYnVpbGRpbi9nbG9iYWwuanM/YTQyYiJdLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Iiwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../node_modules/webpack/buildin/global.js\n");

/***/ }),

/***/ "./js/event-providers/contact-form-7.js":
/*!**********************************************!*\
  !*** ./js/event-providers/contact-form-7.js ***!
  \**********************************************/
/*! no exports provided */
/*! ModuleConcatenation bailout: Module uses injected variables (global) */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils */ \"./js/event-providers/utils.js\");\n/**\n * Site Kit by Google, Copyright 2024 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Internal dependencies\n */\n\nglobal.document.addEventListener('wpcf7mailsent', event => {\n  var _global$_googlesiteki, _global$_googlesiteki2, _global$_googlesiteki3;\n  const gtagUserDataEnabled = (_global$_googlesiteki = global._googlesitekit) === null || _global$_googlesiteki === void 0 ? void 0 : _global$_googlesiteki.gtagUserData;\n  const userData = gtagUserDataEnabled ? getUserDataFromForm(event.target) : null;\n  (_global$_googlesiteki2 = global._googlesitekit) === null || _global$_googlesiteki2 === void 0 ? void 0 : (_global$_googlesiteki3 = _global$_googlesiteki2.gtagEvent) === null || _global$_googlesiteki3 === void 0 ? void 0 : _global$_googlesiteki3.call(_global$_googlesiteki2, 'contact', {\n    // eslint-disable-next-line sitekit/acronym-case\n    event_category: event.detail.contactFormId,\n    event_label: event.detail.unitTag,\n    ...(userData ? {\n      user_data: userData\n    } : {})\n  });\n});\n\n/**\n * Extracts and classifies user data from a Contact Form 7 form submission.\n *\n * @since n.e.x.t\n * @since n.e.x.t Renamed to `getUserDataFromForm` because `getUserData` was extracted into a generic utility function.\n *\n * @param {HTMLFormElement} form The submitted form element.\n * @return {Object|undefined} A user_data object containing detected PII (address, email, phone_number), or undefined if no PII found.\n */\nfunction getUserDataFromForm(form) {\n  // eslint-disable-next-line sitekit/acronym-case\n  if (!form || !(form instanceof HTMLFormElement)) {\n    return undefined;\n  }\n  const formData = new FormData(form);\n  const detectedFields = Array.from(formData.entries()).map(([name, value]) => {\n    var _form$querySelector;\n    const input = form.querySelector(`[name='${name}']`);\n    const type = input === null || input === void 0 ? void 0 : input.type;\n\n    // Skip hidden fields and submit buttons that don't contain user data.\n    if (type === 'hidden' || type === 'submit') {\n      return null;\n    }\n    const label = (input === null || input === void 0 ? void 0 : input.id) ? (_form$querySelector = form.querySelector(`label[for='${input === null || input === void 0 ? void 0 : input.id}']`)) === null || _form$querySelector === void 0 ? void 0 : _form$querySelector.textContent : undefined;\n    return Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"classifyPII\"])({\n      type,\n      label,\n      name,\n      value\n    });\n  }).filter(Boolean);\n  return Object(_utils__WEBPACK_IMPORTED_MODULE_0__[\"getUserData\"])(detectedFields);\n}\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../node_modules/webpack/buildin/global.js */ \"../node_modules/webpack/buildin/global.js\")))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64, \n//# sourceURL=webpack-internal:///./js/event-providers/contact-form-7.js\n");

/***/ }),

/***/ "./js/event-providers/utils.js":
/*!*************************************!*\
  !*** ./js/event-providers/utils.js ***!
  \*************************************/
/*! exports provided: PII_TYPE, PII_INDICATORS, normalizeValue, normalizeLabel, normalizeEmail, hasPhoneLikePattern, normalizePhone, isLikelyEmail, isLikelyPhone, classifyPII, getAddress, getEmail, getPhoneNumber, getUserData */
/***/ (function(module, __webpack_exports__, __webpack_require__) {

"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PII_TYPE\", function() { return PII_TYPE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PII_INDICATORS\", function() { return PII_INDICATORS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeValue\", function() { return normalizeValue; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeLabel\", function() { return normalizeLabel; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeEmail\", function() { return normalizeEmail; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hasPhoneLikePattern\", function() { return hasPhoneLikePattern; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizePhone\", function() { return normalizePhone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLikelyEmail\", function() { return isLikelyEmail; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isLikelyPhone\", function() { return isLikelyPhone; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"classifyPII\", function() { return classifyPII; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAddress\", function() { return getAddress; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEmail\", function() { return getEmail; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getPhoneNumber\", function() { return getPhoneNumber; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getUserData\", function() { return getUserData; });\n/**\n * Utilities for conversion tracking event providers.\n *\n * Site Kit by Google, Copyright 2025 Google LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *     https://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// PII types for classification.\nconst PII_TYPE = {\n  EMAIL: 'email',\n  PHONE: 'phone',\n  NAME: 'name'\n};\n\n// Indicators for identifying PII fields.\nconst PII_INDICATORS = {\n  [PII_TYPE.EMAIL]: ['email', 'e-mail', 'mail', 'email address'],\n  [PII_TYPE.PHONE]: ['phone', 'tel', 'mobile', 'cell', 'telephone', 'phone number'],\n  [PII_TYPE.NAME]: ['name', 'full-name', 'full name', 'full_name', 'fullname', 'first-name', 'first name', 'first_name', 'firstname', 'last-name', 'last name', 'last_name', 'lastname', 'given-name', 'given name', 'given_name', 'givenname', 'family-name', 'family name', 'family_name', 'familyname', 'fname', 'lname', 'first', 'last', 'your-name', 'your name']\n};\nconst PHONE_MIN_DIGIT_COUNT = 7;\n\n/**\n * Normalizes a value for use in conversion tracking.\n *\n * @since 1.161.0\n *\n * @param {string} value The value to normalize.\n * @return {string} The normalized value.\n */\nfunction normalizeValue(value) {\n  if (!value || typeof value !== 'string') {\n    return '';\n  }\n  return value.trim().toLowerCase();\n}\n\n/**\n * Normalizes a label by removing common form suffixes and prefixes.\n *\n * @since n.e.x.t\n *\n * @param {string} label The label to normalize.\n * @return {string} The normalized label.\n */\nfunction normalizeLabel(label) {\n  if (!label || typeof label !== 'string') {\n    return '';\n  }\n  return label.trim().toLowerCase()\n  // Remove common required field indicators\n  .replace(/\\s*\\*+\\s*$/, '') // \"Name *\" → \"Name\"\n  .replace(/\\s*\\(required\\)\\s*$/i, '') // \"Name (Required)\" → \"Name\"\n  .replace(/\\s*:\\s*$/, '') // \"Name:\" → \"Name\"\n  .trim();\n}\n\n/**\n * Normalizes an email address for conversion tracking.\n *\n * @since 1.161.0\n *\n * @param {string} email The email address to normalize.\n * @return {string} The normalized email address.\n */\nfunction normalizeEmail(email) {\n  const normalizedEmail = normalizeValue(email);\n  const atIndex = normalizedEmail.lastIndexOf('@');\n\n  // If there is no '@' in the email, return it as is.\n  if (atIndex === -1) {\n    return normalizedEmail;\n  }\n  const domain = normalizedEmail.slice(atIndex + 1);\n\n  // Check if it is a 'gmail.com' or 'googlemail.com' address.\n  if (['gmail.com', 'googlemail.com'].includes(domain)) {\n    const prefix = normalizedEmail.slice(0, atIndex);\n\n    // Remove dots from the prefix.\n    const normalizedPrefix = prefix.replace(/\\./g, '');\n    return `${normalizedPrefix}@${domain}`;\n  }\n  return normalizedEmail;\n}\n\n/**\n * Determines if a string has a phone-like pattern.\n *\n * @since n.e.x.t\n *\n * @param {string} value The string to validate.\n * @return {boolean} Whether the string passed has a phone-like pattern or not.\n */\nfunction hasPhoneLikePattern(value) {\n  const digits = value.replace(/\\D/g, '');\n  if (digits.length < PHONE_MIN_DIGIT_COUNT || digits.length < value.length / 2) {\n    return false;\n  }\n\n  // Ensure the string only contains digits and phone-like separators, such as spaces, dashes, parentheses, plus signs, and dots.\n  return /^[\\s\\-()+.\\d]*$/.test(value);\n}\n\n/**\n * Normalizes a phone number for conversion tracking.\n *\n * @since 1.161.0\n *\n * @param {string} phone The phone number to normalize.\n * @return {string} The normalized phone number.\n */\nfunction normalizePhone(phone) {\n  const normalizedPhone = normalizeValue(phone);\n\n  // Remove all non-numeric characters.\n  const digits = normalizedPhone.replace(/\\D/g, '');\n\n  // If the phone number starts with a '+' sign, keep it.\n  if (normalizedPhone.startsWith('+')) {\n    return `+${digits}`;\n  }\n  return digits;\n}\n\n/**\n * Checks if a value is likely an email address.\n *\n * @since 1.161.0\n *\n * @param {string} value The value to check.\n * @return {boolean} True if the value is likely an email address, false otherwise.\n */\nfunction isLikelyEmail(value) {\n  if (!value) {\n    return false;\n  }\n  const normalizedEmail = normalizeEmail(value);\n  const emailPattern = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/;\n  return emailPattern.test(normalizedEmail);\n}\n\n/**\n * Checks if a value is likely a phone number.\n *\n * @since 1.161.0\n *\n * @param {string} value The value to check.\n * @return {boolean} True if the value is likely a phone number, false otherwise.\n */\nfunction isLikelyPhone(value) {\n  if (!value) {\n    return false;\n  }\n  if (!hasPhoneLikePattern(value)) {\n    return false;\n  }\n  const normalizedPhone = normalizePhone(value);\n  const phonePattern = /^\\+?\\d{7,}$/;\n  return phonePattern.test(normalizedPhone);\n}\n\n/**\n * Classifies a field as PII based on its metadata.\n *\n * @since 1.161.0\n *\n * @param {Object} fieldMeta The metadata of the field to classify.\n * @return {Object|null} An object containing the PII type and value, or null if not classified.\n */\nfunction classifyPII(fieldMeta) {\n  let {\n    type,\n    name,\n    value,\n    label\n  } = fieldMeta || {};\n  type = normalizeValue(type);\n  name = normalizeValue(name);\n  value = normalizeValue(value);\n  label = normalizeLabel(label);\n  switch (type) {\n    case 'email':\n      return {\n        type: PII_TYPE.EMAIL,\n        value: normalizeEmail(value)\n      };\n    case 'tel':\n      return {\n        type: PII_TYPE.PHONE,\n        value: normalizePhone(value)\n      };\n  }\n  if (isLikelyEmail(value)) {\n    return {\n      type: PII_TYPE.EMAIL,\n      value: normalizeEmail(value)\n    };\n  }\n  if (isLikelyPhone(value)) {\n    return {\n      type: PII_TYPE.PHONE,\n      value: normalizePhone(value)\n    };\n  }\n  if (PII_INDICATORS[PII_TYPE.EMAIL].includes(name) || PII_INDICATORS[PII_TYPE.EMAIL].includes(label)) {\n    return {\n      type: PII_TYPE.EMAIL,\n      value: normalizeEmail(value)\n    };\n  }\n  if (PII_INDICATORS[PII_TYPE.PHONE].includes(name) || PII_INDICATORS[PII_TYPE.PHONE].includes(label)) {\n    return {\n      type: PII_TYPE.PHONE,\n      value: normalizePhone(value)\n    };\n  }\n  if (PII_INDICATORS[PII_TYPE.NAME].includes(name) || PII_INDICATORS[PII_TYPE.NAME].includes(label)) {\n    return {\n      type: PII_TYPE.NAME,\n      value: normalizeValue(value)\n    };\n  }\n  return null;\n}\n\n/**\n * Extracts and formats name fields for Google Tag's user_data address object.\n *\n * @since n.e.x.t\n *\n * @param {Array<Object>} fields An array of detected PII fields.\n * @return {Object|undefined} An object containing normalized first_name and optionally last_name, or undefined if no names found.\n */\nfunction getAddress(fields) {\n  const names = fields.filter(({\n    type\n  }) => type === PII_TYPE.NAME).map(({\n    value\n  }) => value);\n  if (!names.length) {\n    return undefined;\n  }\n  const [firstName, ...lastNames] = names.length === 1 ? names[0].split(' ') : names;\n  return {\n    first_name: normalizeValue(firstName),\n    ...((lastNames === null || lastNames === void 0 ? void 0 : lastNames.length) > 0 ? {\n      last_name: normalizeValue(lastNames.join(' '))\n    } : {})\n  };\n}\n\n/**\n * Extracts the email address from detected PII fields.\n *\n * @since n.e.x.t\n *\n * @param {Array<Object>} fields An array of detected PII fields.\n * @return {string|undefined} The email address if found, undefined otherwise.\n */\nfunction getEmail(fields) {\n  var _fields$find;\n  return (_fields$find = fields.find(({\n    type\n  }) => type === PII_TYPE.EMAIL)) === null || _fields$find === void 0 ? void 0 : _fields$find.value;\n}\n\n/**\n * Extracts the phone number from detected PII fields.\n *\n * @since n.e.x.t\n *\n * @param {Array<Object>} fields An array of detected PII fields.\n * @return {string|undefined} The phone number if found, undefined otherwise.\n */\nfunction getPhoneNumber(fields) {\n  var _fields$find2;\n  return (_fields$find2 = fields.find(({\n    type\n  }) => type === PII_TYPE.PHONE)) === null || _fields$find2 === void 0 ? void 0 : _fields$find2.value;\n}\n\n/**\n * Extracts and classifies user data from a WPForms form submission.\n *\n * @since n.e.x.t\n *\n * @param {Array<Object>} fields An array of detected PII fields.\n * @return {Object|undefined} A user_data object containing detected PII (address, email, phone_number), or undefined if no PII found.\n */\nfunction getUserData(fields) {\n  const userDataFields = [['address', getAddress(fields)], ['email', getEmail(fields)], ['phone_number', getPhoneNumber(fields)]].filter(([, value]) => value);\n  if (userDataFields.length === 0) {\n    return undefined;\n  }\n  return Object.fromEntries(userDataFields);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64, \n//# sourceURL=webpack-internal:///./js/event-providers/utils.js\n");

/***/ })

/******/ });