HEX
Server: LiteSpeed
System: Linux php-prod-1.spaceapp.ru 5.15.0-157-generic #167-Ubuntu SMP Wed Sep 17 21:35:53 UTC 2025 x86_64
User: xnsbb3110 (1041)
PHP: 8.1.33
Disabled: NONE
Upload Files
File: //proc/self/cwd/wp-content/saphali-woocommerce-lite/build/frontend/frontend.js.map
{"version":3,"file":"frontend.js","mappings":"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","sources":["webpack://saphali-billing-address-block-editor/webpack/bootstrap","webpack://saphali-billing-address-block-editor/webpack/runtime/compat get default export","webpack://saphali-billing-address-block-editor/webpack/runtime/define property getters","webpack://saphali-billing-address-block-editor/webpack/runtime/hasOwnProperty shorthand","webpack://saphali-billing-address-block-editor/external window \"ReactDOM\"","webpack://saphali-billing-address-block-editor/external window \"React\"","webpack://saphali-billing-address-block-editor/external window [\"wp\",\"data\"]","webpack://saphali-billing-address-block-editor/external window [\"wp\",\"i18n\"]","webpack://saphali-billing-address-block-editor/./src/extraFunction.js","webpack://saphali-billing-address-block-editor/./src/hide-removed-fields.js","webpack://saphali-billing-address-block-editor/./src/field-datepicker.js","webpack://saphali-billing-address-block-editor/./src/CheckoutFieldsManager.js","webpack://saphali-billing-address-block-editor/./src/frontend.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"ReactDOM\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"React\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"data\"];","const __WEBPACK_NAMESPACE_OBJECT__ = window[\"wp\"][\"i18n\"];","import debug from \"./isDebug.js\";\nimport { __, sprintf } from \"@wordpress/i18n\";\n\nconst isVowel = (letter) => {\n  const vowels = \"aeiou\";\n  return vowels.includes(letter.toLowerCase());\n};\n\nconst getMorthyMessage = (noun) => {\n  // Приводим слово к нижнему регистру для упрощения сравнения\n  const lowerNoun = noun.toLowerCase();\n\n  let adjective;\n  // Наивное определение рода по конкретным словам\n  if (lowerNoun === \"имя\") {\n    // \"имя\" – средний род\n    adjective = \"действительное\";\n  } else if (lowerNoun === \"фамилия\") {\n    // \"имя\" – средний род\n    adjective = \"действительную\";\n    noun = \"фамилию\";\n  } else {\n    // Для остальных слов можно задать значение по умолчанию\n    adjective = \"действительный\";\n  }\n\n  return { [lowerNoun]: [adjective, noun] };\n};\n// Ждём, пока появится поле (если оно динамически рендерится) и навешиваем собитие, чтобы контролировать ошибку\n\nconst waitForField = (selector, callback) => {\n  selector = selector.replaceAll(\"saphali/\", \"saphali\\\\/\");\n  const observer = new MutationObserver(() => {\n      const element = document.querySelector(selector);\n      if (element) {\n          observer.disconnect();\n          // console.log(`Элемент ${selector} найден, инициализируем React...`);\n          callback(element);\n      }\n  });\n\n  observer.observe(document.body, { childList: true, subtree: true });\n};\n// Функция debounce – возвращает обёртку, которая запускает func через delay миллисекунд после последнего вызова\nfunction debounce(func, delay) {\n  let timer;\n  return function (...args) {\n    clearTimeout(timer);\n    timer = setTimeout(() => func.apply(this, args), delay);\n  };\n}\n// Функция для сравнения версий\nconst isVersionLessThan = (versionA, versionB) => {\n  const aParts = versionA.split('.').map(Number);\n  const bParts = versionB.split('.').map(Number);\n\n  for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {\n      const a = aParts[i] || 0;\n      const b = bParts[i] || 0;\n      if (a < b) return true;\n      if (a > b) return false;\n  }\n  return false;\n};\n// Функция для перестановки DOM-узлов по index\n// (обратите внимание: для поля страны можно добавить отдельную логику, если нужно)\nconst logDebug = (...args) => {\n  if (!debug || !args.length) return;\n\n\n  // Проверяем, последний аргумент - тип ('warn' или 'log')\n  const lastArg = args[args.length - 1];\n  const consoleMethod = [\"warn\", \"error\", \"info\"].includes(lastArg)\n    ? lastArg\n    : \"log\";\n\n  // Если последний - тип, убираем его из массива\n  const messages =\n    consoleMethod === lastArg ? args.slice(0, -1) : args;\n\n    /* // Получаем имя вызывающей функции  (нулевой элемент стека вызовов)\n    const stack = new Error().stack.split(\"\\n\");\n\n     // Проверяем, что у нас есть минимум 5 строк\n    if (stack.length > 4 ) {\n      // Обрежем лишний префикс \"    at \"\n      const line3 = stack[3].trim().replace(/^at /, \"\");\n      const line4 = stack[4].trim().replace(/^at /, \"\");\n\n      // Пример line3: \"Array.forEach (<anonymous>)\"\n      // Пример line4: \"hideSpecifiedFields (http://localhost/...:1352:13)\"\n\n      // Достанем отдельно название функции и ссылку\n      let funcName = line3.indexOf(\"http\") > 0 ? '' : `${line3} -> `;\n      // Ищем паттерн:  ^([^ ]+) \\\\(([^)]+)\\\\)$\n      //  1-я группа: hideSpecifiedFields\n      const match = line4.match(/^([^ ]+) \\(([^)]+)\\)$/);\n      if (match) {\n        funcName += `${match[1]} => `; // 'hideSpecifiedFields'\n      }\n      messages.unshift(funcName);\n    } */\n\n    // Выводим сообщение в консоль\n  console[consoleMethod](...messages);\n};\n\nconst reorderFields = (area, fieldsObj, ascending = true) => {\n  const areaContainer = document.querySelector(\n    `#${area}.wc-block-components-address-form`\n  );\n  if (!areaContainer) {\n    logDebug(`Container for area #${area} not found.`, 'warn');\n    return;\n  }\n  \n  const fieldsArray = Object.entries(fieldsObj).map(([key, val]) => ({\n    key,\n    index: val.index ?? 0,\n    type: val.type ?? \"text\",\n    label: val.label || key,\n  }));\n\n  fieldsArray.sort((a, b) =>\n    ascending ? a.index - b.index : b.index - a.index\n  );\n\n  fieldsArray.forEach((field) => {\n    field.key = field.key.replaceAll('saphali/', \"saphali\\\\/\");\n    let selector = `#${area}-${field.key}`;\n    \n    let inputEl = document.querySelector(selector);\n    if (!inputEl) {\n      // Если не найден по ID, попробуем найти по классу (например, для некоторых полей)\n      inputEl = document.querySelector(\n        `.wc-block-components-address-form__${field.key}`\n      );\n    }\n    if (!inputEl) return;\n\n    // Обновляем label и aria-label, если элемент ещё не обновлён\n    if (\n      inputEl.hasAttribute(\"aria-label\") &&\n      inputEl.getAttribute(\"aria-label\") !== field.label\n    ) {\n      const parentDiv = inputEl.closest(\"div\");\n      const labelElement = parentDiv ? parentDiv.querySelector(\"label\") : null;\n      if (labelElement) labelElement.innerHTML = field.label;\n      inputEl.setAttribute(\"aria-label\", field.label);\n      if (!inputEl.classList.contains(\"saphli-field-control\")) {\n        // Выбираем существующий инпут по его ID (например, \"billing-first_name\")\n        ((inputElCb) => {\n          inputElCb.classList.add(\"saphli-field-control\");\n          if (\n            inputElCb &&\n            inputElCb.hasAttribute(\"required\") &&\n            [\"input\", \"select\"].includes(inputElCb.nodeName.toLowerCase())\n          ) {\n            // Добавляем обработчик события blur\n            const _event =\n              inputElCb.nodeName.toLowerCase() === \"input\" ? \"blur\" : \"change\";\n            inputElCb.addEventListener(_event, (event) => {\n              const value = event.target.value.trim();\n              if (!value) {\n                const label = inputElCb\n                  .closest(\"div\")\n                  .querySelector(\"label\").textContent;\n                const an = isVowel(label[0]) ? \"an\" : \"a\";\n                // Если поле пустое – устанавливаем ошибку через wc/store/validation\n                if (label) {\n                  setTimeout(() => {\n                    // clearInterval(timer);\n                    const MorthyMessage = getMorthyMessage(label.toLowerCase());\n                    wp.data\n                      .dispatch(\"wc/store/validation\")\n                      .setValidationErrors({\n                        [inputElCb.getAttribute(\"id\").replace(\"-\", \"_\")]: {\n                          message: sprintf(\n                            __(\n                              \"Please enter %s %s\",\n                              \"saphali-woocommerce-lite\"\n                            ),\n                            an,\n                            label.toLowerCase()\n                          )\n                            .replace(\n                              \"действительный\",\n                              MorthyMessage[label.toLowerCase()][0]\n                            )\n                            .replace(\n                              label.toLowerCase(),\n                              MorthyMessage[label.toLowerCase()][1]\n                            ),\n                          hidden: false,\n                        },\n                      });\n                  }, 100);\n                }\n\n                  logDebug(\n                    \"Ошибка установлена: \" +\n                      inputElCb.getAttribute(\"id\").replace(\"-\", \"_\") +\n                      \" пустое\",\n                    label\n                  );\n              } else {\n                // Если значение заполнено – очищаем ошибку\n                wp.data\n                  .dispatch(\"wc/store/validation\")\n                  .clearValidationErrors([\n                    inputElCb.getAttribute(\"id\").replace(\"-\", \"_\"),\n                  ]);\n                  logDebug(\n                    \"Ошибка для \" +\n                      inputElCb.getAttribute(\"id\").replace(\"-\", \"_\") +\n                      \" очищена\"\n                  );\n              }\n            });\n          }\n        })(inputEl);\n      }\n    }\n\n    // Определяем родительский контейнер для перестановки:\n    // Для большинства полей ищем по классу, для поля страны (если type === 'country') – отдельно.\n\n    // if (!inputEl) { inputEl = document.querySelector(`.wc-block-components-address-form__${field.key}`); } if (!inputEl) return;\n    let parentWrap;\n    if (field.type === \"country\") {\n      parentWrap = inputEl.closest(\n        `.wc-block-components-address-form__${field.key}`\n      );\n    } else {\n      parentWrap = inputEl.closest(\n        `.wc-block-components-address-form__${field.key}`\n      );\n    }\n    logDebug(`Field: ${field.key}, parentWrap:`, parentWrap);\n    if (parentWrap && areaContainer.contains(parentWrap)) {\n      areaContainer.appendChild(parentWrap);\n      logDebug(\n        `Reordered field ${field.key} (type=${field.type}, index=${field.index}) in area ${area}`\n      );\n  }\n  });\n};\nconst clearValidationErrorsInField = (selector, area, onlyRemoveRequired = false) => {\n  selector = selector.replace(new RegExp(`saphali/`), \"saphali\\\\/\");\n  waitForField(selector, (field) => {\n    // const field = document.querySelector(selector);\n    let result = '';\n    // console.log('field', field);\n    if (field) {\n      // console.log('field.hasAttribute(\"required\")', field.hasAttribute(\"required\"));\n      if (field.hasAttribute(\"required\")) {\n        field.removeAttribute(\"required\");\n        result = selector.replace(\"#\", \"\").replace(\"-\", \"_\");\n        // console.log('result', result);\n        \n      }\n      if (!onlyRemoveRequired) {\n        // Скрываем элемент целиком\n        if (field.nodeName.toLowerCase() === \"span\") {\n          field.classList.add(\"hidden-field\");\n        } else {\n          const parentDiv = document.querySelector(`.wc-block-components-address-form__${selector.replace(\"#\" + `${area}-`, \"\")}`) ? field.closest(`.wc-block-components-address-form__${selector.replace(\"#\" + `${area}-`, \"\")}`) : field.closest('div');\n          if (parentDiv && !(parentDiv.classList.contains('wc-block-components-address-form') || parentDiv.getAttribute('id') === area)) {\n            parentDiv.classList.add(\"hidden-field\");\n          } else {\n            field.classList.add(\"hidden-field\");\n          }\n          if (field.nodeName.toLowerCase() === 'select' && selector.indexOf('country') > 0 ) {\n  \n          }\n          // if (!field.classList.contains('saphli-field-control')) {\n          //   field.classList.add('saphli-field-control');\n          //   const _event = field.nodeName.toLowerCase() === 'input' ? 'blur' : field.nodeName.toLowerCase() === 'select' ? 'change' : '';\n          //   console.log('field.addEventListener1', _event, selector)\n          //   field.addEventListener(_event, (event) => {\n          //     const value = event.target.value.trim();\n          //     console.log('field.addEventListener', value, _event)\n          //     if (!value) {\n          //       setTimeout(() => {\n          //         wp.data.dispatch('wc/store/validation').clearValidationErrors([field.getAttribute('id').replace('-', '_') ]);\n          //       }, 50);\n          //     }\n          //   });\n          // }\n          \n        }\n      }\n    }\n    return result;\n  });\n};\nconst selectedShippingMethod = (select) => {\n  // Получаем данные корзины через селектор\n  const cartData = select('wc/store/cart')?.getCartData() ?? {};\n\n  // Если нет пакетов доставки — возвращаем пустую строку\n  const shippingPackages = cartData.shippingRates;\n  if (!shippingPackages?.length) {\n    return '';\n  }\n\n  // Берем первый пакет доставки\n  const { shipping_rates: shippingRates } = shippingPackages[0] || {};\n  if (!shippingRates?.length) {\n    return '';\n  }\n\n  // Ищем выбранный тариф\n  const selectedRate = shippingRates.find((rate) => rate.selected);\n  return selectedRate?.method_id || 'free_shipping';\n};\n\n  const selectedPaymentMethod = (select) => {\n    const paymentStore = select('wc/store/payment');\n    return paymentStore?.getActivePaymentMethod() || 'cod';\n  }\n  const PaymentMethodWatcher = () => {\n    const activePaymentMethod = useSelect(\n      () => wp.data.select('wc/store/payment').getActivePaymentMethod(),\n      []\n    );\n  \n    useEffect(() => {\n      logDebug('Активный метод оплаты:', activePaymentMethod);\n      // Здесь можно выполнить логику, зависящую от выбранного метода оплаты.\n    }, [ activePaymentMethod ]);\n  \n    return null;\n  };\n  \n  // const selectedShippingMethod = () => {\n  //   const cartStore = wp.data?.select('wc/store/cart');\n  //   const cartData = cartStore?.getCartData() || {};\n  //   let selectedShippingMethod = '';\n  //   if (cartData?.shippingRates?.length) {\n  //     const shippingPackage = cartData.shippingRates[0]; \n  //     if (shippingPackage?.shipping_rates?.length) {\n  //       const selectedRateObj = shippingPackage.shipping_rates.find(rate => rate.selected);\n  //       if (selectedRateObj) {\n  //         selectedShippingMethod = selectedRateObj.method_id || 'free_shipping';\n  //       }\n  //     }\n  //   }\n  //   return selectedShippingMethod;\n  // }\n  // if(typeof wc === 'object') {\n  //   const { registerCheckoutFilters } = window.wc.blocksCheckout;\n\n  //   const modifyShowRemoveItemLink = ( defaultValue, extensions, args ) => {\n  //     console.log('modifyShowRemoveItemLink', defaultValue, extensions, args);\n  //       const isCartContext = args?.context === 'cart';\n    \n  //       if ( ! isCartContext ) {\n  //           return defaultValue;\n  //       }\n    \n  //       return false;\n  //   };\n    \n  //   registerCheckoutFilters( 'saphali-extension', {\n  //       showRemoveItemLink: modifyShowRemoveItemLink,\n  //   } );\n  // }\n\nexport { isVowel, getMorthyMessage, waitForField, debounce, reorderFields, clearValidationErrorsInField,\n    selectedPaymentMethod, PaymentMethodWatcher, selectedShippingMethod, isVersionLessThan\n };\nexport default logDebug;","// src/hide-removed-fields.js\nimport React from \"react\";\n\nimport logDebug, {debounce, clearValidationErrorsInField}  from './extraFunction.js'\n\nconst initMutationObserver = (callback) => {\n  const parentElement = document.querySelector(\".wp-site-blocks\");\n  if (!parentElement) {\n    logDebug('.wp-site-blocks не найден в DOM');\n    return null;\n  }\n  const observer = new MutationObserver(callback);\n  observer.observe(parentElement, { childList: true, subtree: true });\n  return observer;\n};\n\nconst HideBillingFields = React.memo(({\n  areas = [\"billing\", \"shipping\"],\n  hideFields = {},\n  children,\n  differentFields = {},\n}) => {\n  // logDebug('HideBillingFields', areas, hideFields, differentFields);\n  \n  React.useEffect(() => {\n    const recoveryFields = () => {\n      const fields = differentFields;\n      Object.keys(fields).forEach((area) => {\n        fields[area].forEach((fieldKey) => {\n          const selector = `#${area}-${fieldKey}`;\n          const field = document.querySelector(selector);\n          if (!field) return;\n          if (field.nodeName.toLowerCase() === \"span\") {\n            if(field.classList.contains(\"hidden-field\")) {\n              field.classList.remove(\"hidden-field\");\n            }\n          } else {\n            const parentDiv = document.querySelector(`.wc-block-components-address-form__${selector.replace(\"#\" + `${area}-`, \"\")}`) ? field.closest(`.wc-block-components-address-form__${selector.replace(\"#\" + `${area}-`, \"\")}`) : field.closest('div');\n            if (parentDiv && !(parentDiv.classList.contains('wc-block-components-address-form') || parentDiv.getAttribute('id') === area)) {\n              if(parentDiv.classList.contains(\"hidden-field\")) {\n                parentDiv.classList.remove(\"hidden-field\");\n              }\n            } else {\n              if(field.classList.contains(\"hidden-field\")) {\n                field.classList.remove(\"hidden-field\");\n              }\n            }\n          }\n        });\n        logDebug(`differentFields for ${area}:`, fields[area]);\n      });\n    }\n    const debouncedShow = debounce(recoveryFields, 300); \n    debouncedShow();\n    const observer = initMutationObserver(debouncedShow);\n    if (!observer) return;\n    return () => {\n      observer.disconnect();\n    }\n  }, [differentFields]);\n  React.useEffect(() => {\n    \n    const hideSpecifiedFields = () => {\n      \n      areas.forEach(area => {\n        // Формируем селекторы из hideFields для данной области\n        let fieldsToHide = ([...(hideFields[area] || [])]).map(f => `#${area}-${f}`);\n        let address_2_toggle = null;\n        // Дополнительно, можно добавить стандартные селекторы, если их не переопределили\n        if ( fieldsToHide.includes(`#${area}-address_1`) ) {\n          const childDiv = document.querySelector(`#${area}-address_1`);\n          if (childDiv) {\n            address_2_toggle = childDiv.closest('div[id=\"' + area + '\"]')\n              ? `div#${area} [class*=\"address_2-toggle\"]`\n              : null;\n          }\n\n          logDebug(\"address_2_toggle\", address_2_toggle);\n          if (\n            fieldsToHide.includes(`#${area}-address_1`) &&\n            childDiv\n          ) {\n            fieldsToHide = [\n              ...fieldsToHide,\n              address_2_toggle,\n              // `#${area}-address_2`,\n            ].filter(v => v !== null);\n          }\n        }\n        logDebug(`fieldsToHide for ${area}:`, fieldsToHide);\n       \n\n        let removeErrorValidation = [];\n        fieldsToHide.forEach((selector) => {\n          let $field_remove = clearValidationErrorsInField(selector, area) || selector.replace('#', \"\").replaceAll('-', \"_\");\n          const field = document.querySelector(selector.replace('saphali/', 'saphali\\\\/'));\n          if($field_remove) {\n            removeErrorValidation.push( $field_remove );\n          }\n        });\n        if (Array.isArray(removeErrorValidation) && removeErrorValidation.length !== 0)\n          wp.data.dispatch('wc/store/validation').clearValidationErrors(removeErrorValidation);\n        logDebug('removeErrorValidation:', removeErrorValidation);\n      });\n    };\n\n    // Дебаунс вызова hideSpecifiedFields (например, 500 мс)\n    const debouncedHide = debounce(hideSpecifiedFields, 300);\n    debouncedHide();\n    const observer = initMutationObserver(debouncedHide);\n    if (!observer) return;\n    return () => {\n      observer.disconnect();\n    }\n  }, [areas, hideFields]);\n\n  // Если children не требуются, можно вернуть null или {children}\n  return <>{children}</>;\n});\n\nexport default HideBillingFields;\n","// src/field-datepicker.js\nimport { __ } from '@wordpress/i18n';\n\nimport debug from './isDebug.js'\n\nconst SaphaliDateTimePicker = React.memo(({ fieldIds, onDateChange, type_field }) => {\n  if (debug) console.log('fieldIds', fieldIds);\n  const initializeDateTimePickerForField = (selector, type_field) => {    \n    const $field = jQuery(selector);\n    if (!$field.length) {console.log(`Field not found: ${selector}`);\n     return;}\n    if (debug) console.log(\"Initializing DateTimePicker for:\", selector, type_field);\n    if (type_field === 'onlydate') {\n      if (!$field.hasClass(\"has-datepicker\")) {\n        $field.datepicker({\n          dateFormat: \"dd.mm.yy\",\n          minDate: 0,\n          firstDay: 1,\n          onSelect: function(dateText, inst) {\n            const value = jQuery(this).val();\n            if (typeof onDateChange === 'function') {\n              ['billing', 'shipping', 'additional-information', 'contact'].forEach(v => {\n                if (selector.indexOf(`#${v}`) === 0 ) {\n                  const c_selector = selector.replace(`#${v}-`, '').replace('saphali-', 'saphali/');\n                  onDateChange(c_selector, value, v);\n                } else if (selector.indexOf(`[id=\"${v}-`) > 0 ) {\n                  const c_selector = selector.replace(new RegExp(`.*\\\\[id=\"${v}-`), '').replace('\"]', '').replace('saphali-', 'saphali/');                  \n                  onDateChange(c_selector, value, v);\n                }\n              });\n            }\n          },\n        });\n        $field.addClass(\"has-datepicker\");\n        if (debug) console.log(`DatePicker initialized for ${selector}`);\n      }\n    } else {\n      if (!$field.hasClass(\"has-datetimepicker\")) {\n        $field.datetimepicker({\n          dateFormat: \"dd.mm.yy\",\n          timeFormat: \"HH:mm\",\n          minDate: 0,\n          stepMinute: 15,\n          closeText: __('Done', 'saphali-woocommerce-lite'),\n          currentText: __('Now', 'saphali-woocommerce-lite'),\n          timeText: __('Time', 'saphali-woocommerce-lite'),\n          hourText: __('Hour', 'saphali-woocommerce-lite'),\n          minuteText: __('Minute', 'saphali-woocommerce-lite'),\n          timeOnlyTitle: __('Choose Time', 'saphali-woocommerce-lite'),\n          firstDay: 1,\n          controlType: 'select',\n          oneLine: true,\n          onSelect: function(datetimeText, inst) {\n            const value = jQuery(this).val();\n            if (typeof onDateChange === 'function') {\n              ['billing', 'shipping', 'additional-information', 'contact'].forEach(v => {\n                if (selector.indexOf(`#${v}`) === 0) {\n                  const c_selector = selector.replace(`#${v}-`, '').replace('saphali-', 'saphali/');\n                  onDateChange(c_selector, value, v);\n                } else if (selector.indexOf(`[id=\"${v}-`) > 0 ) {\n                  const c_selector = selector.replace(new RegExp(`.*\\\\[id=\"${v}-`), '').replace('\"]', '').replace('saphali-', 'saphali/');                  \n                  onDateChange(c_selector, value, v);\n                }\n              });\n            }\n          },\n        });\n        $field.addClass(\"has-datetimepicker\");\n        if (debug) console.log(`DateTimePicker initialized for ${selector}`);\n      }\n    }\n  };\n  React.useEffect(() => {\n    \n    if (fieldIds && Array.isArray(fieldIds)) {\n      fieldIds.forEach(fieldId => {\n        const selector = `${fieldId}`;\n        initializeDateTimePickerForField(selector, type_field);\n      });\n    }\n  }, [fieldIds, type_field]);\n\n  return null;\n});\n\nexport default SaphaliDateTimePicker;\n","// src/CheckoutFieldsManager.js\nimport React, { useRef, useState, useEffect, useMemo } from \"react\";\nimport { useSelect } from \"@wordpress/data\";\nimport HideBillingFields from \"./hide-removed-fields\";\nimport SaphaliDateTimePicker from \"./field-datepicker\";\nimport logDebug, { waitForField, reorderFields, debounce, clearValidationErrorsInField, selectedPaymentMethod, selectedShippingMethod } from \"./extraFunction.js\";\n\n// const CheckoutFieldsManager = ({ config }) => { return null };\nconst CheckoutFieldsManager = ({ config }) => {\n  if (typeof window.wc !== \"object\") {\n    console.warn(\"typeof window.wc !== 'object'\");\n    return null;\n  }\n\n  const [hideFields, setHideFields] = useState(config.hideFields || {});\n  const [field_for_datetime, setField_for_datetime] = useState([]);\n  const checkout_fields = config.checkout_fields || { billing: {}, shipping: {} };\n\n  // Создаём списки для сравнения полей\n  const hide_diff = {\n    shipping: Object.keys(checkout_fields.billing || {}).filter(\n      (x) => !Object.keys(checkout_fields.shipping || {}).includes(x)\n    ),\n    billing: Object.keys(checkout_fields.shipping || {}).filter(\n      (x) => !Object.keys(checkout_fields.billing || {}).includes(x)\n    ),\n  };\n\n  const pushfieldFordatetimecurent = useRef([]);\n  const originalFieldStates = useRef({});\n\n  // useMemo вычисляет и запоминает значение debounce-функции,\n  // чтобы оно не пересоздавалось при каждом рендере, если зависимости не изменились.\n  // В отличие от useEffect, который используется для выполнения\n  // побочных эффектов после рендера компонента, useMemo возвращает вычисленное значение.\n  const updateDateField = useMemo(\n    () =>\n      debounce(() => {\n        setField_for_datetime([...new Set(pushfieldFordatetimecurent.current)]);\n      }, 200),\n    [useShippingAsBilling /* эта зависимость гарантирует пересоздание debounce-функции при изменении useShippingAsBilling */]\n  );\n\n  // Заслушка для country полей и обработчики change\n  \n  [\"billing\", \"shipping\"].forEach((area) => {\n    waitForField(`#${area}-country`, (element) => {\n      if (!element) {\n        logDebug(`Поле ${area}-country не найдено.`, 'warn');\n        return;\n      }\n      logDebug(\"saphli-field-control2\", element.classList.contains(\"saphli-field-control2\"));\n      if (!element.classList.contains(\"saphli-field-control2\")) {\n        element.classList.add(\"saphli-field-control2\");\n        element.addEventListener(\"change\", (event) => {\n          const f = () => {\n            logDebug(`Обработчик для поля ${area}-country.`);\n            const value = event.target.value;\n            if (value && checkout_fields[area]) {\n              if (checkout_fields[area][\"address_1\"]) {\n                reorderFields(area, {\n                  ...checkout_fields[area],\n                  \"address_2-toggle\": { index: checkout_fields[area][\"address_1\"].index, type: \"toggle\" },\n                });\n              } else {\n                reorderFields(area, checkout_fields[area]);\n              }\n            }\n          };\n          debounce(f, 100)();\n        });\n      }\n    });\n  });\n\n  // Перестановка полей после монитора\n  useEffect(() => {\n    const debounceReorder = () => {\n      [\"billing\", \"shipping\"].forEach((area) => {\n        if (checkout_fields[area]) {\n          if (checkout_fields[area][\"address_1\"]) {\n            reorderFields(area, {\n              ...checkout_fields[area],\n              \"address_2-toggle\": { index: checkout_fields[area][\"address_1\"].index, type: \"toggle\", label: \"\" },\n            });\n          } else {\n            reorderFields(area, checkout_fields[area]);\n          }\n        }\n      });\n    };\n    const timer = setTimeout(debounceReorder, 500);\n    return () => clearTimeout(timer);\n  }, [checkout_fields]);\n\n  // Сохранение оригинального состояния полей\n  useEffect(() => {\n    const newOriginalStates = {};\n    const computedHideFields = {};\n    [\"billing\", \"shipping\", \"additional-information\", \"contact\"].forEach((area) => {\n      if (!checkout_fields[area]) {\n        logDebug(`checkout_fields[${area}] is undefined`);\n        return;\n      }\n      const current = [...(config.hideFields[area] || []), ...(hide_diff[area] || [])];\n      newOriginalStates[area] = current;\n      computedHideFields[area] = (hideFields[area] || []).concat(\n        (hide_diff[area] || []).filter((item) => !(hideFields[area] || []).includes(item))\n      );\n    });\n    originalFieldStates.current = newOriginalStates;\n    \n  // Обновляем hideFields через useEffect (не в теле рендера)\n\n    \n    \n    if (JSON.stringify(computedHideFields) !== JSON.stringify(hideFields)) {\n      setHideFields(computedHideFields);\n    }\n  }, [checkout_fields, config.hideFields, hide_diff]); // зависимости\n  \n  // Обработка waitForField для date-полей\n  [\"billing\", \"shipping\", \"additional-information\", \"contact\"].forEach((area) => {\n    if (!checkout_fields[area]) {\n      logDebug(`checkout_fields[${area}] is undefined`);\n      return;\n    }\n    Object.entries(checkout_fields[area]).forEach(([fieldKey, fieldObj]) => {\n      if (fieldObj.type === \"date\") {\n        const added = \"\";\n        // Первый селектор\n        waitForField(`input[id=\"${area}-${fieldKey.replace(/saphali-/, \"saphali/\")}\"]`, (element) => {\n          if (element) {\n            const selector = `${element.nodeName.toLowerCase()}[id=\"${element.getAttribute(\"id\")}\"]`;\n            pushfieldFordatetimecurent.current.push(selector);\n            updateDateField();\n          }\n        });\n        // Второй селектор (если требуется)\n        waitForField(`#${area}${added}-${fieldKey}`, (element) => {\n          if (element) {\n            const selector = `${element.nodeName.toLowerCase()}[id=\"${element.getAttribute(\"id\")}\"]`;\n            pushfieldFordatetimecurent.current.push(selector);\n            updateDateField();\n          }\n        });\n      }\n    });\n  });\n\n  // Используем useSelect для получения актуальных значений\n  const useShippingAsBilling = useSelect(\n    (select) => select(\"wc/store/checkout\").getUseShippingAsBilling(),\n    []\n  );\n  const ShippingMethod = useSelect((select) => selectedShippingMethod(select), []);\n  const PaymentMethod = useSelect((select) => selectedPaymentMethod(select), []);\n\n  const [differentFields, setDifferentFields] = useState({});\n  \n  // Обработка \"различных\" полей при изменении методов доставки/оплаты\n  useEffect(() => {\n    logDebug(\"Выбранный метод доставки:\", ShippingMethod, \"\\nВыбранный метод оплаты:\", PaymentMethod);\n\n    const newHideFields = JSON.parse(JSON.stringify(originalFieldStates.current));\n    let differentFieldsIn = {};\n    [\"shipping\", \"billing\", \"additional-information\", \"contact\"].forEach((area) => {\n      if (!checkout_fields[area]) {\n        logDebug(`checkout_fields[${area}] is undefined`);\n        return;\n      }\n      newHideFields[area] = [...new Set(newHideFields[area] ? [...newHideFields[area]] : [])];\n      let applyRemoveError = [];\n      Object.keys(checkout_fields[area]).forEach((v) => {\n        if (\n          JSON.stringify(checkout_fields[area][v].sm) !== JSON.stringify([\"0\"]) &&\n          !checkout_fields[area][v]?.sm?.includes(ShippingMethod)\n        ) {\n          if (!newHideFields[area].includes(v)) {\n            newHideFields[area].push(v);\n          }\n          applyRemoveError.push(clearValidationErrorsInField(`#${area}-${v}`, area) || `${area}-${v}`.replaceAll('-', \"_\"));\n        }\n        if (\n          JSON.stringify(checkout_fields[area][v]?.pm) !== JSON.stringify([\"0\"]) &&\n          !checkout_fields[area][v]?.pm?.includes(PaymentMethod)\n        ) {\n          if (!newHideFields[area].includes(v)) {\n            newHideFields[area].push(v);\n          }\n          applyRemoveError.push(clearValidationErrorsInField(`#${area}-${v}`, area) || `${area}-${v}`.replaceAll('-', \"_\"));\n        }\n      });\n      if(Array.isArray(applyRemoveError) && applyRemoveError.length !== 0)\n        wp.data.dispatch('wc/store/validation').clearValidationErrors(applyRemoveError);\n      differentFieldsIn = {\n        ...differentFieldsIn,\n        [area]: [...(hideFields[area] || []), ...(differentFields[area] || [])].filter((item) => (newHideFields[area] || []).indexOf(item) < 0),\n      };\n    });\n    if (JSON.stringify(newHideFields) !== JSON.stringify(hideFields)) {\n      setHideFields(newHideFields);\n    }\n    if(JSON.stringify(differentFieldsIn) !== JSON.stringify(differentFields))\n      setDifferentFields(differentFieldsIn);\n  }, [ShippingMethod, PaymentMethod, checkout_fields]);\n  \n  // Callback изменения даты\n  const handleDateChange = (selector, value, location) => {\n    if ([\"billing\", \"shipping\"].includes(location)) {\n      const cartData = wp.data.select(\"wc/store/cart\").getCartData() || {};\n      const fieldKey = selector\n        .replace(\"#\", \"\")\n        .replace(/^billing-saphali-/, \"saphali/\")\n        .replace(/^shipping-saphali-/, \"saphali/\")\n        .replace(/^billing-saphali\\//, \"saphali\\\\/\")\n        .replace(/^shipping-saphali\\//, \"saphali\\\\/\")\n        .replace(/^billing-/, \"\")\n        .replace(/^shipping-/, \"\");\n      const updatedAddress = {\n        ...cartData[`${location}Address`],\n        [fieldKey]: value,\n      };\n      wp.data.dispatch(\"wc/store/cart\").setCartData({\n        ...cartData,\n        [`${location}Address`]: updatedAddress,\n      });\n      logDebug(`Updated cart field ${fieldKey} =>`, value);\n    } else if ([\"additional-information\", \"contact\"].includes(location)) {\n      const currentFields = wp.data.select(\"wc/store/checkout\").getAdditionalFields() || {};\n      const fieldKey = selector\n        .replace(\"#\", \"\")\n        .replace(/^additional-information-saphali-/, \"saphali/\")\n        .replace(/^contact-saphali-/, \"saphali/\")\n        .replace(/^additional-information-/, \"\")\n        .replace(/^contact-/, \"\");\n      const updatedFields = {\n        ...currentFields,\n        [fieldKey]: value,\n      };\n      if (typeof wp.data.dispatch(\"wc/store/checkout\").setAdditionalFields === \"function\") {\n        wp.data.dispatch(\"wc/store/checkout\").setAdditionalFields(updatedFields);\n        logDebug(`Updated checkout field ${fieldKey} =>`, value);\n      } else {\n        wp.data.dispatch(\"wc/store/checkout\").__internalSetExtensionData(fieldKey, { value });\n        logDebug(`Updated checkout field ${fieldKey} =>`, value);\n      }\n    }\n  };\n\n  \n  useEffect(() => {\n    // Запускаем проверку только при инициализации или когда меняются checkout_fields\n    if (!checkout_fields) return;\n    // Проверка обязательных полей\n    \n    const checkRequiredFields = (location, addressObj) => {\n      let applyRemoveError = [];\n      Object.keys(addressObj).forEach((element) => {\n        if (addressObj[element]?.required) {\n          if (\n            typeof wp?.data?.dispatch(\"wc/store/checkout\")?.setEditingBillingAddress === \"function\" &&\n            wp.data.select(\"wc/store/cart\").getCustomerData()[`${location}Address`][element] === \"\"\n          ) {\n            if (location === \"billing\") {\n              wp.data.dispatch(\"wc/store/checkout\").setEditingBillingAddress(true);\n            } else {\n              wp.data.dispatch(\"wc/store/checkout\").setEditingShippingAddress(true);\n            }\n            logDebug(`Mandatory field ${element} is empty => open editing ${location} address`);\n          }\n        } else {\n          applyRemoveError.push (clearValidationErrorsInField(`#${location}-${element}`, location, true) || `${location}-${element}`.replaceAll('-', \"_\"));\n        }\n      });\n      if(Array.isArray(applyRemoveError) && applyRemoveError.length !== 0)\n        wp.data.dispatch('wc/store/validation').clearValidationErrors(applyRemoveError);\n    };\n    Object.keys(checkout_fields).forEach((area) => {\n      logDebug(\"Processing required fields for area:\", area);\n      checkRequiredFields(area, checkout_fields[area]);\n    });\n  }, [checkout_fields]);\n\n\n  logDebug(\"field_for_datetime\", field_for_datetime);\n  logDebug(\"UseShippingAsBilling:\", useShippingAsBilling);\n  logDebug(\"differentFields:\", differentFields);\n  \n  return (\n    <div>\n      <HideBillingFields areas={[\"billing\", \"shipping\"]} hideFields={hideFields} differentFields={differentFields} />\n      <SaphaliDateTimePicker\n        fieldIds={field_for_datetime}\n        onDateChange={handleDateChange}\n        type_field={config.onlyDate ? \"onlydate\" : \"datetime\"}\n      />\n    </div>\n  );\n};\n\nexport default CheckoutFieldsManager;\n","// src/frontend.js\nimport ReactDOM from \"react-dom\";\nimport CheckoutFieldsManager from \"./CheckoutFieldsManager\";\n// import CheckoutStatusWatcher from \"./CheckoutStatusWatcher\";\n\nimport \"./frontend.scss\";\n\nimport logDebug from \"./extraFunction.js\";\n\n\n\nconst initializeReactComponents = () => {\n  console.timeEnd('myCode');\n  // debugger;\n  if (document.getElementById(\"saphali-react-root\")) {\n    logDebug(\"React components already initialized\");\n    return;\n  }\n  logDebug(\"Initializing React components\");\n\n  \n\n  const reactRoot = document.createElement(\"div\");\n  reactRoot.id = \"saphali-react-root\";\n  document.body.appendChild(reactRoot);\n\n  const config = window.saphaliSettingsFrontend || {\n    hideFields: {},\n    checkout_fields: {},\n    onlyDate: \"\",\n    position_in_contacts: \"1\",\n  };\n\n  ReactDOM.render(\n    <>\n      {/* <CheckoutStatusWatcher /> */}\n      <CheckoutFieldsManager config={config} />\n    </>,\n    reactRoot\n  );\n\n  logDebug(\"React components initialized\");\n};\nconst waitForField = (selector, callback) => {\n  const observer = new MutationObserver(() => {\n      const element = document.querySelector(selector);\n      if (element) {\n          observer.disconnect();\n          console.log(`Элемент ${selector} найден, инициализируем React...`);\n          callback();\n      }\n  });\n\n  observer.observe(document.querySelector('.wp-block-woocommerce-checkout'), { childList: true, subtree: true });\n};\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  if(typeof window.wc !== 'object') {console.warn(\"typeof window.wc !== 'object'\"); return;}\n  console.time('myCode');\n  waitForField(\".wc-block-checkout__shipping-fields, .wc-block-checkout__billing-fields\", () => {\n    initializeReactComponents();\n  });\n});\n// document.addEventListener(\"DOMContentLoaded\", () => {\n//   debounce(initializeReactComponents, 1200)();\n// });\n"],"names":["__webpack_require__","module","getter","__esModule","d","a","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","window","waitForField","selector","callback","replaceAll","observer","MutationObserver","element","document","querySelector","disconnect","observe","body","childList","subtree","debounce","func","delay","timer","_this","_len","arguments","length","args","Array","_key","clearTimeout","setTimeout","apply","logDebug","_console","_len2","_key2","lastArg","consoleMethod","includes","messages","slice","console","reorderFields","area","fieldsObj","ascending","undefined","areaContainer","concat","fieldsArray","entries","map","_ref2","_val$index","_val$type","_ref3","val","index","type","label","sort","b","forEach","field","inputEl","hasAttribute","getAttribute","parentDiv","closest","labelElement","innerHTML","setAttribute","classList","contains","inputElCb","add","nodeName","toLowerCase","_event","addEventListener","event","letter","target","value","trim","wp","data","dispatch","clearValidationErrors","replace","textContent","an","noun","adjective","lowerNoun","MorthyMessage","_defineProperty","setValidationErrors","message","sprintf","__","hidden","parentWrap","appendChild","clearValidationErrorsInField","onlyRemoveRequired","RegExp","result","removeAttribute","indexOf","initMutationObserver","parentElement","React","_ref","_ref$areas","areas","_ref$hideFields","hideFields","children","_ref$differentFields","differentFields","debouncedShow","fields","keys","fieldKey","remove","debouncedHide","fieldsToHide","_toConsumableArray","f","address_2_toggle","childDiv","filter","v","removeErrorValidation","$field_remove","push","isArray","memo","fieldIds","onDateChange","type_field","log","useEffect","fieldId","$field","jQuery","hasClass","datepicker","dateFormat","minDate","firstDay","onSelect","dateText","inst","this","c_selector","addClass","datetimepicker","timeFormat","stepMinute","closeText","currentText","timeText","hourText","minuteText","timeOnlyTitle","controlType","oneLine","datetimeText","initializeDateTimePickerForField","config","_typeof","wc","warn","_useState2","_slicedToArray","useState","setHideFields","_useState4","field_for_datetime","setField_for_datetime","checkout_fields","billing","shipping","hide_diff","x","pushfieldFordatetimecurent","useRef","originalFieldStates","updateDateField","useMemo","Set","current","useShippingAsBilling","_objectSpread","newOriginalStates","computedHideFields","item","JSON","stringify","useSelect","select","getUseShippingAsBilling","ShippingMethod","_select$getCartData","_select","shippingPackages","getCartData","shippingRates","shipping_rates","selectedRate","find","rate","selected","method_id","selectedShippingMethod","PaymentMethod","paymentStore","getActivePaymentMethod","selectedPaymentMethod","_useState6","setDifferentFields","newHideFields","parse","differentFieldsIn","applyRemoveError","_checkout_fields$area","_checkout_fields$area2","_checkout_fields$area3","sm","pm","location","addressObj","_addressObj$element","_wp","required","setEditingBillingAddress","getCustomerData","setEditingShippingAddress","HideBillingFields","SaphaliDateTimePicker","cartData","updatedAddress","setCartData","currentFields","getAdditionalFields","updatedFields","setAdditionalFields","__internalSetExtensionData","onlyDate","time","timeEnd","getElementById","reactRoot","createElement","id","saphaliSettingsFrontend","position_in_contacts","ReactDOM","Fragment","CheckoutFieldsManager","initializeReactComponents"],"sourceRoot":""}