{
  "version": 3,
  "sources": ["/cdn/shop/t/9/assets/services-bundle.js?cv=4"],
  "sourcesContent": ["/******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./src/services/legacy/ChildService.js\":\n/*!*********************************************!*\\\n  !*** ./src/services/legacy/ChildService.js ***!\n  \\*********************************************/\n/***/ ((module) => {\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _iterableToArray(r) { if (\"undefined\" != typeof Symbol && null != r[Symbol.iterator] || null != r[\"@@iterator\"]) return Array.from(r); }\nfunction _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n// ChildService - Manages kids profiles with StateService integration\nvar ChildService = /*#__PURE__*/function () {\n  function ChildService() {\n    _classCallCheck(this, ChildService);\n    this.init();\n    this.stateService = null;\n    this.childService = null;\n  }\n  return _createClass(ChildService, [{\n    key: \"init\",\n    value: function init() {\n      var _this = this;\n      // Listen for global state changes\n      /*document.addEventListener('stateChanged', (e) => {\r\n        this.handleStateChange(e.detail);\r\n      });*/\n\n      // Listen for services ready event\n      document.addEventListener('servicesReady', function (e) {\n        _this.onServicesReady(e.detail);\n      });\n    }\n  }, {\n    key: \"onServicesReady\",\n    value: function onServicesReady(services) {\n      console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] ChildService onServicesReady called\"));\n      console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] services param:\"), !!services);\n      console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] this.stateService exists: \").concat(!!this.stateService));\n      if (services.stateService) {\n        this.stateService = services.stateService;\n        console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] ChildService stateService set\"));\n      } else {\n        console.warn(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] ChildService stateService not provided in services\"));\n      }\n\n      // Note: childService in services might be the new ChildProfileService instance\n      // We don't need to set this.childService = services.childService to avoid circular references\n\n      // Ensure body class reflects current selection on load\n      try {\n        console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] Attempting to get currentChild\"));\n        if (this.stateService && this.stateService.getCurrentChild) {\n          var currentChild = this.stateService.getCurrentChild();\n          console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] currentChild retrieved: \").concat(!!currentChild));\n          this.updateBodyHasChildClass(!!currentChild);\n        } else if (this.stateService && this.stateService.get) {\n          var _currentChild = this.stateService.get('currentChild');\n          console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] currentChild retrieved via get(): \").concat(!!_currentChild));\n          this.updateBodyHasChildClass(!!_currentChild);\n        } else {\n          console.warn(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] stateService not available for getting currentChild\"));\n        }\n      } catch (error) {\n        console.error(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] Error in onServicesReady try block:\"), error);\n      }\n    }\n\n    // CRUD Operations\n\n    // Create - Add a new child\n  }, {\n    key: \"addChild\",\n    value: function addChild(childData) {\n      var _ref,\n        _childData$year_of_bi,\n        _ref2,\n        _childData$month_of_b,\n        _ref3,\n        _childData$birth_year,\n        _ref4,\n        _childData$birth_mont,\n        _this2 = this;\n      console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] ChildService addChild called\"));\n      console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] this.stateService exists: \").concat(!!this.stateService));\n      if (!this.stateService) {\n        console.error('StateService not available');\n        return null;\n      }\n\n      // Defensive: normalize incoming name for duplicate detection\n      var incomingName = childData && childData.name ? String(childData.name).trim() : '';\n      try {\n        if (incomingName) {\n          var existing = (this.getAllChildren() || []).find(function (k) {\n            return k && k.name && String(k.name).trim().toLowerCase() === incomingName.toLowerCase();\n          });\n          if (existing) {\n            // If a matching child already exists, select it and return it instead of creating a duplicate.\n            console.log('\u26A0\uFE0F [ChildService] Duplicate child detected by name - returning existing child:', existing);\n            // Ensure state reflects selection of the existing child\n            this.selectChild(existing);\n            // Dispatch childAdded only when a new child is actually created; here we skip dispatching.\n            return existing;\n          }\n        }\n      } catch (err) {\n        console.warn('\u26A0\uFE0F [ChildService] Duplicate detection failed, proceeding to create child:', err);\n      }\n      var child = {\n        id: Date.now().toString(),\n        name: childData.name || '',\n        school: childData.school || '',\n        grade: childData.grade || '',\n        gender: childData.gender || '',\n        // Canonical birth components\n        year_of_birth: (_ref = (_childData$year_of_bi = childData.year_of_birth) !== null && _childData$year_of_bi !== void 0 ? _childData$year_of_bi : childData.birth_year) !== null && _ref !== void 0 ? _ref : null,\n        month_of_birth: (_ref2 = (_childData$month_of_b = childData.month_of_birth) !== null && _childData$month_of_b !== void 0 ? _childData$month_of_b : childData.birth_month) !== null && _ref2 !== void 0 ? _ref2 : null,\n        // Aliases maintained for compatibility\n        birth_year: (_ref3 = (_childData$birth_year = childData.birth_year) !== null && _childData$birth_year !== void 0 ? _childData$birth_year : childData.year_of_birth) !== null && _ref3 !== void 0 ? _ref3 : null,\n        birth_month: (_ref4 = (_childData$birth_mont = childData.birth_month) !== null && _childData$birth_mont !== void 0 ? _childData$birth_mont : childData.month_of_birth) !== null && _ref4 !== void 0 ? _ref4 : null,\n        age: childData.age || '',\n        height: childData.height || '',\n        weight: childData.weight || '',\n        measurements: childData.measurements || {},\n        sizes: childData.sizes || {},\n        createdAt: new Date().toISOString(),\n        updatedAt: new Date().toISOString()\n      };\n\n      // Persist via StateService.addKid to normalize and retain birth components\n      var persisted = this.stateService && typeof this.stateService.addKid === 'function' ? this.stateService.addKid(child) : function () {\n        // Use 'children' key for consistency with StateManager\n        var children = _this2.getAllChildren();\n        var updatedChildren = [].concat(_toConsumableArray(children), [child]);\n        _this2.stateService.updateState({\n          children: updatedChildren\n        });\n        return child;\n      }();\n\n      // Auto-select the new child\n      this.selectChild(persisted);\n\n      // Defensive dedupe: after persisting, ensure we don't have multiple entries with the same normalized name.\n      try {\n        if (persisted && persisted.name) {\n          var normalized = String(persisted.name).trim().toLowerCase();\n          var all = this.getAllChildren() || [];\n          var matches = all.filter(function (k) {\n            return k && k.name && String(k.name).trim().toLowerCase() === normalized;\n          });\n          if (matches.length > 1) {\n            // Keep the earliest created (smallest createdAt or smallest id) and remove the rest\n            var keeper = matches.reduce(function (keep, candidate) {\n              try {\n                var keepTime = keep.createdAt ? Date.parse(keep.createdAt) : Number(keep.id) || Infinity;\n                var candTime = candidate.createdAt ? Date.parse(candidate.createdAt) : Number(candidate.id) || Infinity;\n                return candTime < keepTime ? candidate : keep;\n              } catch (_) {\n                return keep;\n              }\n            }, matches[0]);\n            var deduped = [];\n            var seenIds = new Set();\n            all.forEach(function (k) {\n              if (!k) return;\n              if (k.name && String(k.name).trim().toLowerCase() === normalized) {\n                if (k.id === keeper.id) {\n                  deduped.push(k);\n                  seenIds.add(k.id);\n                } else {\n                  // skip duplicate\n                  console.log('\u26A0\uFE0F [ChildService] Removing duplicate child entry for name:', k.name, 'id:', k.id);\n                }\n              } else {\n                deduped.push(k);\n                seenIds.add(k.id);\n              }\n            });\n\n            // Persist deduped list back into state\n            this.stateService.updateState({\n              children: deduped\n            });\n          }\n        }\n      } catch (err) {\n        console.warn('\u26A0\uFE0F [ChildService] Post-add dedupe failed:', err);\n      }\n\n      // Dispatch custom event for new additions only\n      this.dispatchChildAddedEvent(persisted);\n      return persisted;\n    }\n\n    // Read - Get all children\n  }, {\n    key: \"getAllChildren\",\n    value: function getAllChildren() {\n      console.log('\uD83D\uDD25 TEST MESSAGE: getAllChildren called - NEW CODE DEPLOYED 2025-01-09-11:30');\n      if (!this.stateService) {\n        console.error('StateService not available');\n        return [];\n      }\n      var state = this.stateService.getState ? this.stateService.getState() : {};\n      // Support both 'children' and 'kids' keys for compatibility\n      return state.children || state.kids || [];\n    }\n\n    // Dispatch custom event\n  }, {\n    key: \"dispatchChildAddedEvent\",\n    value: function dispatchChildAddedEvent(persisted) {\n      console.log('\uD83D\uDD14 [ChildService] Dispatching childAdded event for:', persisted && persisted.name ? persisted.name : 'null');\n      document.dispatchEvent(new CustomEvent('childAdded', {\n        detail: persisted\n      }));\n    }\n\n    // Read - Get child by ID\n  }, {\n    key: \"getChildById\",\n    value: function getChildById(childId) {\n      var kids = this.getAllChildren();\n      return kids.find(function (child) {\n        return child.id === childId;\n      }) || null;\n    }\n\n    // Read - Get current selected child\n  }, {\n    key: \"getCurrentChild\",\n    value: function getCurrentChild() {\n      console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] ChildService getCurrentChild called\"));\n      console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] this.stateService exists: \").concat(!!this.stateService));\n      if (!this.stateService) {\n        console.error(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] this.stateService is null in getCurrentChild\"));\n        return null;\n      }\n      try {\n        var currentChild = this.stateService.get('currentChild');\n        console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] currentChild retrieved: \").concat(!!currentChild));\n        return currentChild;\n      } catch (e) {\n        console.error(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] Error getting currentChild:\"), e);\n        return null;\n      }\n    }\n\n    // Update - Update child data\n  }, {\n    key: \"updateChild\",\n    value: function updateChild(childId, updates) {\n      if (!this.stateService) {\n        console.error('StateService not available');\n        return false;\n      }\n      var kids = this.getAllChildren();\n      var childIndex = kids.findIndex(function (child) {\n        return child.id === childId;\n      });\n      if (childIndex === -1) {\n        console.error('Child not found:', childId);\n        return false;\n      }\n      var updatedChild = _objectSpread(_objectSpread(_objectSpread({}, kids[childIndex]), updates), {}, {\n        updatedAt: new Date().toISOString()\n      });\n      var updatedChildren = _toConsumableArray(kids);\n      updatedChildren[childIndex] = updatedChild;\n      this.stateService.updateState({\n        children: updatedChildren\n      });\n\n      // If measurements are being updated, also update sizeRecommendations\n      if (updates.height || updates.weight || updates.measurements) {\n        try {\n          var _sizeRecommendations$, _sizeRecommendations$2;\n          var currentState = this.stateService.getState();\n          var sizeRecommendations = currentState.sizeRecommendations || {};\n\n          // Update sizeRecommendations for this specific child ID\n          sizeRecommendations[childId] = _objectSpread(_objectSpread({}, sizeRecommendations[childId]), {}, {\n            data: _objectSpread(_objectSpread({}, (_sizeRecommendations$ = sizeRecommendations[childId]) === null || _sizeRecommendations$ === void 0 ? void 0 : _sizeRecommendations$.data), {}, {\n              measurements: _objectSpread(_objectSpread({}, (_sizeRecommendations$2 = sizeRecommendations[childId]) === null || _sizeRecommendations$2 === void 0 || (_sizeRecommendations$2 = _sizeRecommendations$2.data) === null || _sizeRecommendations$2 === void 0 ? void 0 : _sizeRecommendations$2.measurements), {}, {\n                height: updates.height || updatedChild.height,\n                weight: updates.weight || updatedChild.weight,\n                age: updatedChild.ageInMonths || updatedChild.age,\n                gender: updatedChild.gender\n              })\n            })\n          });\n\n          // Save updated sizeRecommendations to localStorage\n          this.stateService.updateState({\n            sizeRecommendations: sizeRecommendations\n          });\n        } catch (error) {\n          console.warn('Failed to update sizeRecommendations:', error);\n        }\n      }\n\n      // Update current child if it's the one being updated\n      var currentChild = this.getCurrentChild();\n      if (currentChild && currentChild.id === childId) {\n        this.selectChild(updatedChild);\n      }\n\n      // Dispatch custom event\n      console.log('\uD83D\uDD14 [ChildService] Dispatching childUpdated event for:', (updatedChild === null || updatedChild === void 0 ? void 0 : updatedChild.name) || 'null');\n      document.dispatchEvent(new CustomEvent('childUpdated', {\n        detail: updatedChild\n      }));\n      return true;\n    }\n\n    // Delete - Remove child\n  }, {\n    key: \"removeChild\",\n    value: function removeChild(childId) {\n      if (!this.stateService) {\n        console.error('StateService not available');\n        return false;\n      }\n      var kids = this.getAllChildren();\n      var childToRemove = kids.find(function (child) {\n        return child.id === childId;\n      });\n      if (!childToRemove) {\n        console.error('Child not found:', childId);\n        return false;\n      }\n      var updatedChildren = kids.filter(function (child) {\n        return child.id !== childId;\n      });\n\n      // If removing current child, clear selection\n      var currentChild = this.getCurrentChild();\n      var updates = {\n        children: updatedChildren\n      };\n      if (currentChild && currentChild.id === childId) {\n        updates.currentChild = null;\n      }\n\n      // Clean up sizeRecommendations for this child\n      try {\n        var currentState = this.stateService.getState();\n        var sizeRecommendations = currentState.sizeRecommendations || {};\n        if (sizeRecommendations[childId]) {\n          delete sizeRecommendations[childId];\n          updates.sizeRecommendations = sizeRecommendations;\n        }\n      } catch (error) {\n        console.warn('Failed to clean up sizeRecommendations:', error);\n      }\n      this.stateService.updateState(updates);\n\n      // Dispatch custom event\n      console.log('\uD83D\uDD14 [ChildService] Dispatching childRemoved event for:', (childToRemove === null || childToRemove === void 0 ? void 0 : childToRemove.name) || 'null');\n      document.dispatchEvent(new CustomEvent('childRemoved', {\n        detail: childToRemove\n      }));\n      return true;\n    }\n\n    // Select - Set current child\n  }, {\n    key: \"selectChild\",\n    value: function selectChild(child) {\n      if (!this.stateService) {\n        console.error('StateService not available');\n        return false;\n      }\n      if (!child) {\n        // Clear selection\n        console.log('\uD83D\uDD14 [ChildService] Dispatching childDeselected event');\n        this.stateService.updateState({\n          currentChild: null\n        });\n        document.dispatchEvent(new CustomEvent('childDeselected'));\n        this.updateBodyHasChildClass(false);\n        return true;\n      }\n      if (!child.id) {\n        console.warn('[ChildService] Invalid child object for selection (missing id) - deselecting');\n        // Clear selection\n        this.stateService.updateState({\n          currentChild: null\n        });\n        document.dispatchEvent(new CustomEvent('childDeselected'));\n        this.updateBodyHasChildClass(false);\n        return false;\n      }\n\n      // Verify child exists in state\n      var existingChild = this.getChildById(child.id);\n      if (!existingChild) {\n        console.error('Child not found for selection in state:', child.id);\n        // Do not deselect here - let caller handle if needed\n        return false;\n      }\n\n      // Update current child and pre-filters\n      // Map widget gender values to Shopify filter values\n      var genderMapping = {\n        'boy': 'Boys',\n        'girl': 'Girls'\n      };\n      var shopifyGender = genderMapping[existingChild.gender] || existingChild.gender;\n      this.stateService.updateState({\n        currentChild: existingChild,\n        preFilters: {\n          school: existingChild.school || '',\n          grade: existingChild.grade || '',\n          gender: shopifyGender || ''\n        }\n      });\n\n      // Dispatch custom event\n      console.log('\uD83D\uDD14 [ChildService] Dispatching childSelected event for:', (existingChild === null || existingChild === void 0 ? void 0 : existingChild.name) || 'null');\n      document.dispatchEvent(new CustomEvent('childSelected', {\n        detail: existingChild\n      }));\n      this.updateBodyHasChildClass(true);\n      return true;\n    }\n\n    // Select - Set current child by ID\n  }, {\n    key: \"selectChildById\",\n    value: function selectChildById(childId) {\n      var child = this.getChildById(childId);\n      if (child) {\n        return this.selectChild(child);\n      }\n      return false;\n    }\n\n    // Utility methods\n\n    // Check if child exists\n  }, {\n    key: \"childExists\",\n    value: function childExists(childId) {\n      return this.getChildById(childId) !== null;\n    }\n\n    // Get child count\n  }, {\n    key: \"getChildCount\",\n    value: function getChildCount() {\n      return this.getAllChildren().length;\n    }\n\n    // Clear all children\n  }, {\n    key: \"clearAllChildren\",\n    value: function clearAllChildren() {\n      if (!this.stateService) return false;\n      this.stateService.updateState({\n        children: [],\n        currentChild: null\n      });\n      console.log('\uD83D\uDD14 [ChildService] Dispatching allChildrenCleared event');\n      document.dispatchEvent(new CustomEvent('allChildrenCleared'));\n      return true;\n    }\n\n    // Update child measurements\n  }, {\n    key: \"updateChildMeasurements\",\n    value: function updateChildMeasurements(childId, measurements) {\n      return this.updateChild(childId, {\n        measurements: measurements\n      });\n    }\n\n    // Update child sizes\n  }, {\n    key: \"updateChildSizes\",\n    value: function updateChildSizes(childId, sizes) {\n      return this.updateChild(childId, {\n        sizes: sizes\n      });\n    }\n\n    // Handle state changes from StateService\n  }, {\n    key: \"handleStateChange\",\n    value: function handleStateChange(state) {\n      // React to state changes if needed\n      // For example, update UI components that depend on child data\n      var currentChild = state.currentChild;\n      var kids = state.kids || [];\n\n      // Dispatch events for UI components to react\n      if (currentChild) {\n        console.log('\uD83D\uDD14 [ChildService] Dispatching currentChildChanged event for:', (currentChild === null || currentChild === void 0 ? void 0 : currentChild.name) || 'null');\n        document.dispatchEvent(new CustomEvent('currentChildChanged', {\n          detail: currentChild\n        }));\n      }\n      console.log('\uD83D\uDD14 [ChildService] Dispatching childrenListChanged event for', kids.length, 'children');\n      document.dispatchEvent(new CustomEvent('childrenListChanged', {\n        detail: kids\n      }));\n\n      // Keep body class in sync\n      this.updateBodyHasChildClass(!!currentChild);\n    }\n\n    // Toggle body class used by CSS to hide filters, etc.\n  }, {\n    key: \"updateBodyHasChildClass\",\n    value: function updateBodyHasChildClass(hasChild) {\n      try {\n        if (hasChild) {\n          document.body.classList.add('snapfit-has-child');\n        } else {\n          document.body.classList.remove('snapfit-has-child');\n        }\n      } catch (_) {}\n    }\n\n    // Validation methods\n\n    // Validate child data\n  }, {\n    key: \"validateChildData\",\n    value: function validateChildData(childData) {\n      var errors = [];\n      if (!childData.name || childData.name.trim() === '') {\n        errors.push('Name is required');\n      }\n      if (!childData.school || childData.school.trim() === '') {\n        errors.push('School is required');\n      }\n      if (!childData.grade || childData.grade.trim() === '') {\n        errors.push('Grade is required');\n      }\n      if (!childData.gender || childData.gender.trim() === '') {\n        errors.push('Gender is required');\n      }\n      if (childData.age && (isNaN(childData.age) || childData.age < 0 || childData.age > 18)) {\n        errors.push('Age must be between 0 and 18');\n      }\n      if (childData.height && (isNaN(childData.height) || childData.height <= 0)) {\n        errors.push('Height must be a positive number');\n      }\n      if (childData.weight && (isNaN(childData.weight) || childData.weight <= 0)) {\n        errors.push('Weight must be a positive number');\n      }\n      return {\n        isValid: errors.length === 0,\n        errors: errors\n      };\n    }\n\n    // Check for duplicate names\n  }, {\n    key: \"isNameDuplicate\",\n    value: function isNameDuplicate(name) {\n      var excludeChildId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n      var kids = this.getAllChildren();\n      return kids.some(function (child) {\n        return child.name.toLowerCase() === name.toLowerCase() && child.id !== excludeChildId;\n      });\n    }\n  }]);\n}(); // Export to global scope for Shopify theme\nwindow.ChildService = ChildService;\n\n// Immediately expose to global scope\nwindow.ChildService = ChildService;\n\n// Also export for module systems\nif ( true && module.exports) {\n  module.exports = ChildService;\n}\n\n/***/ }),\n\n/***/ \"./src/services/legacy/CollectionFilterService.js\":\n/*!********************************************************!*\\\n  !*** ./src/services/legacy/CollectionFilterService.js ***!\n  \\********************************************************/\n/***/ ((module) => {\n\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }\nfunction _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.\"); }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _iterableToArrayLimit(r, l) { var t = null == r ? null : \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t[\"return\"] && (u = t[\"return\"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }\nfunction _arrayWithHoles(r) { if (Array.isArray(r)) return r; }\nfunction ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }\nfunction _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }\nfunction _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n// CollectionFilterService - Integrates with Shopify's native collection filters\nvar CollectionFilterService = /*#__PURE__*/function () {\n  function CollectionFilterService() {\n    _classCallCheck(this, CollectionFilterService);\n    this.isApplyingFilters = false; // Flag to prevent infinite loops\n    this.init();\n  }\n  return _createClass(CollectionFilterService, [{\n    key: \"init\",\n    value: function init() {\n      var _this = this;\n      // Wait for DOM to be ready\n      if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', function () {\n          return _this.setupFilterListeners();\n        });\n      } else {\n        this.setupFilterListeners();\n      }\n    }\n  }, {\n    key: \"setupFilterListeners\",\n    value: function setupFilterListeners() {\n      var _this2 = this;\n      // Listen for Shopify filter changes\n      this.listenForShopifyFilters();\n\n      // Listen for global state changes - this covers both collection filters and child changes\n      document.addEventListener('stateChanged', function (e) {\n        _this2.loadFiltersFromState(e.detail);\n\n        // Also apply pre-filters from current child if present\n        if (e.detail.currentChild) {\n          _this2.applyPreFiltersFromChild(e.detail.currentChild);\n        }\n      });\n\n      // Listen for services ready event\n      document.addEventListener('servicesReady', function () {\n        _this2.checkAndApplyExistingChildFilters();\n      });\n\n      // Also check immediately if services are already ready\n      this.checkAndApplyExistingChildFilters();\n    }\n  }, {\n    key: \"checkAndApplyExistingChildFilters\",\n    value: function checkAndApplyExistingChildFilters() {\n      if (window.stateService) {\n        var currentChild = window.stateService.get('currentChild');\n        if (currentChild) {\n          this.applyPreFiltersFromChild(currentChild);\n        }\n      }\n    }\n  }, {\n    key: \"listenForShopifyFilters\",\n    value: function listenForShopifyFilters() {\n      var _this3 = this;\n      // Common Shopify filter selectors\n      var filterSelectors = ['input[type=\"checkbox\"][name*=\"filter\"]', 'select[name*=\"filter\"]', 'input[type=\"radio\"][name*=\"filter\"]', '.facets__form input[type=\"checkbox\"]', '.facets__form select', '.facets__form input[type=\"radio\"]'];\n      filterSelectors.forEach(function (selector) {\n        var elements = document.querySelectorAll(selector);\n        elements.forEach(function (element) {\n          element.addEventListener('change', function (e) {\n            _this3.handleFilterChange(e);\n          });\n        });\n      });\n\n      // Listen for dynamic filter changes (AJAX)\n      var observer = new MutationObserver(function (mutations) {\n        mutations.forEach(function (mutation) {\n          if (mutation.type === 'childList') {\n            mutation.addedNodes.forEach(function (node) {\n              if (node.nodeType === Node.ELEMENT_NODE) {\n                var newFilters = node.querySelectorAll(filterSelectors.join(','));\n                newFilters.forEach(function (filter) {\n                  filter.addEventListener('change', function (e) {\n                    _this3.handleFilterChange(e);\n                  });\n                });\n              }\n            });\n          }\n        });\n      });\n      observer.observe(document.body, {\n        childList: true,\n        subtree: true\n      });\n    }\n  }, {\n    key: \"handleFilterChange\",\n    value: function handleFilterChange(event) {\n      // Ignore events that we triggered ourselves\n      if (this.isApplyingFilters) {\n        return;\n      }\n      var element = event.target;\n      var filterName = this.getFilterName(element);\n      var filterValue = this.getFilterValue(element);\n      if (filterName && window.stateService) {\n        var currentFilters = window.stateService.get('collectionFilters') || {};\n        var updatedFilters = _objectSpread({}, currentFilters);\n        if (filterValue) {\n          updatedFilters[filterName] = filterValue;\n        } else {\n          delete updatedFilters[filterName];\n        }\n        window.stateService.updateCollectionFilters(updatedFilters);\n\n        // Notify other components (like the banner) that filters changed\n        try {\n          document.dispatchEvent(new CustomEvent('collectionFiltersChanged', {\n            detail: {\n              filterName: filterName,\n              filterValue: filterValue,\n              filters: updatedFilters\n            }\n          }));\n        } catch (_) {}\n      }\n    }\n  }, {\n    key: \"getFilterName\",\n    value: function getFilterName(element) {\n      // Extract filter name from various Shopify filter formats\n      var name = element.name || element.getAttribute('data-filter') || element.id;\n      if (name) {\n        // Clean up Shopify filter names\n        return name.replace(/^filter\\./, '').replace(/\\./g, '_');\n      }\n      return null;\n    }\n  }, {\n    key: \"getFilterValue\",\n    value: function getFilterValue(element) {\n      if (element.type === 'checkbox') {\n        return element.checked ? element.value : null;\n      } else if (element.type === 'radio') {\n        return element.checked ? element.value : null;\n      } else {\n        return element.value || null;\n      }\n    }\n  }, {\n    key: \"loadFiltersFromState\",\n    value: function loadFiltersFromState(globalState) {\n      var _this4 = this;\n      var collectionFilters = globalState.collectionFilters || {};\n\n      // Apply filters to Shopify filter elements\n      Object.entries(collectionFilters).forEach(function (_ref) {\n        var _ref2 = _slicedToArray(_ref, 2),\n          filterName = _ref2[0],\n          filterValue = _ref2[1];\n        _this4.applyFilterToElement(filterName, filterValue);\n      });\n    }\n  }, {\n    key: \"applyFilterToElement\",\n    value: function applyFilterToElement(filterName, filterValue) {\n      var _this5 = this;\n      // Find corresponding Shopify filter element\n      var selectors = [\"input[name*=\\\"\".concat(filterName, \"\\\"]\"), \"select[name*=\\\"\".concat(filterName, \"\\\"]\"), \"input[data-filter=\\\"\".concat(filterName, \"\\\"]\"), \"#\".concat(filterName)];\n\n      // Set flag to prevent infinite loops\n      this.isApplyingFilters = true;\n      try {\n        selectors.forEach(function (selector) {\n          var element = document.querySelector(selector);\n          if (element) {\n            if (element.type === 'checkbox') {\n              element.checked = filterValue === element.value;\n            } else if (element.type === 'radio') {\n              element.checked = filterValue === element.value;\n            } else {\n              element.value = filterValue;\n            }\n\n            // Trigger change event to update Shopify\n            element.dispatchEvent(new Event('change', {\n              bubbles: true\n            }));\n          }\n        });\n      } finally {\n        // Always reset the flag, even if there's an error\n        setTimeout(function () {\n          _this5.isApplyingFilters = false;\n        }, 0);\n      }\n    }\n\n    // Get current collection handle\n  }, {\n    key: \"getCurrentCollectionHandle\",\n    value: function getCurrentCollectionHandle() {\n      var path = window.location.pathname;\n      var match = path.match(/\\/collections\\/([^\\/]+)/);\n      return match ? match[1] : null;\n    }\n\n    // Apply pre-filters from child data\n  }, {\n    key: \"applyPreFiltersFromChild\",\n    value: function applyPreFiltersFromChild(child) {\n      if (!child) return;\n\n      // Map child data to Shopify filter parameters\n      var filterMappings = {\n        'grade': 'filter.p.m.custom.grades',\n        'gender': 'filter.p.m.custom.gender'\n      };\n\n      // Apply grade filter\n      if (child.grade && child.grade.trim()) {\n        this.applyFilterToElement(filterMappings.grade, child.grade.trim());\n      }\n\n      // Apply gender filter with proper mapping\n      if (child.gender && child.gender.trim()) {\n        // Map widget gender values to Shopify filter values\n        var genderMapping = {\n          'boy': 'Boys',\n          'girl': 'Girls'\n        };\n        var shopifyGender = genderMapping[child.gender.trim()] || child.gender.trim();\n        this.applyFilterToElement(filterMappings.gender, shopifyGender);\n      }\n    }\n\n    // Clear all filters\n  }, {\n    key: \"clearFilters\",\n    value: function clearFilters() {\n      if (window.stateService) {\n        window.stateService.updateCollectionFilters({});\n      }\n    }\n  }]);\n}(); // Export to global scope for Shopify theme\nwindow.CollectionFilterService = CollectionFilterService;\n\n// Immediately expose to global scope\nwindow.CollectionFilterService = CollectionFilterService;\n\n// Also export for module systems\nif ( true && module.exports) {\n  module.exports = CollectionFilterService;\n}\n\n/***/ }),\n\n/***/ \"./src/services/legacy/SizeService.js\":\n/*!********************************************!*\\\n  !*** ./src/services/legacy/SizeService.js ***!\n  \\********************************************/\n/***/ ((module) => {\n\nfunction _createForOfIteratorHelper(r, e) { var t = \"undefined\" != typeof Symbol && r[Symbol.iterator] || r[\"@@iterator\"]; if (!t) { if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && \"number\" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, 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 o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t[\"return\"] || t[\"return\"](); } finally { if (u) throw o; } } }; }\nfunction _unsupportedIterableToArray(r, a) { if (r) { if (\"string\" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return \"Object\" === t && r.constructor && (t = r.constructor.name), \"Map\" === t || \"Set\" === t ? Array.from(r) : \"Arguments\" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }\nfunction _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }\nfunction _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = \"function\" == typeof Symbol ? Symbol : {}, n = r.iterator || \"@@iterator\", o = r.toStringTag || \"@@toStringTag\"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return _regeneratorDefine2(u, \"_invoke\", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError(\"Generator is already running\"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = \"next\"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError(\"iterator result is not an object\"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i[\"return\"]) && t.call(i), c < 2 && (u = TypeError(\"The iterator does not provide a '\" + o + \"' method\"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, \"GeneratorFunction\")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, \"constructor\", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = \"GeneratorFunction\", _regeneratorDefine2(GeneratorFunctionPrototype, o, \"GeneratorFunction\"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, \"Generator\"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, \"toString\", function () { return \"[object Generator]\"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }\nfunction _regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, \"\", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o(\"next\", 0), o(\"throw\", 1), o(\"return\", 2)); }, _regeneratorDefine2(e, r, n, t); }\nfunction asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }\nfunction _asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"next\", n); } function _throw(n) { asyncGeneratorStep(a, r, o, _next, _throw, \"throw\", n); } _next(void 0); }); }; }\nfunction _typeof(o) { \"@babel/helpers - typeof\"; return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && \"function\" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? \"symbol\" : typeof o; }, _typeof(o); }\nfunction _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError(\"Cannot call a class as a function\"); }\nfunction _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, \"value\" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }\nfunction _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, \"prototype\", { writable: !1 }), e; }\nfunction _toPropertyKey(t) { var i = _toPrimitive(t, \"string\"); return \"symbol\" == _typeof(i) ? i : i + \"\"; }\nfunction _toPrimitive(t, r) { if (\"object\" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || \"default\"); if (\"object\" != _typeof(i)) return i; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (\"string\" === r ? String : Number)(t); }\n// SizeService - Handles sizing API calls and recommendations\nconsole.log('\uD83D\uDD34\uD83D\uDD34\uD83D\uDD34 [SIZE-SERVICE] Script loaded - Version: NO FALLBACK 2025-10-13 11:38');\nvar SizeService = /*#__PURE__*/function () {\n  function SizeService() {\n    _classCallCheck(this, SizeService);\n    console.log('\uD83D\uDD34\uD83D\uDD34\uD83D\uDD34 [SIZE-SERVICE] Constructor called');\n    // API URL is injected at build time via webpack DefinePlugin\n    // Use environment variable or fallback to dev URL\n    var apiBaseUrl = \"https://snapfit-api-small-fire-7803.fly.dev\" || 0;\n    this.apiUrl = \"\".concat(apiBaseUrl, \"/api/size\");\n    this.sizeCategoriesByProduct = {};\n    this.useFallbackOnly = false; // Default to trying API first\n    this.stateService = null; // Will be set when services are ready\n    this.init();\n  }\n  return _createClass(SizeService, [{\n    key: \"init\",\n    value: function init() {\n      var _this = this;\n      // Listen for services ready event\n      document.addEventListener('servicesReady', function (e) {\n        _this.onServicesReady(e.detail);\n      });\n    }\n\n    // Add calculateAge method to sizeService\n  }, {\n    key: \"calculateAge\",\n    value:\n    // Calculate age from birthdate\n    function calculateAge(birthdate) {\n      var today = new Date();\n      var birth = new Date(birthdate);\n      var age = today.getFullYear() - birth.getFullYear();\n      var monthDiff = today.getMonth() - birth.getMonth();\n      if (monthDiff < 0 || monthDiff === 0 && today.getDate() < birth.getDate()) {\n        age--;\n      }\n      return age;\n    }\n\n    // Calculate age in months from birthdate\n  }, {\n    key: \"onServicesReady\",\n    value: function onServicesReady(services) {\n      console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] SizeService onServicesReady called\"));\n      console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] services param:\"), !!services);\n      if (services.stateService) {\n        this.stateService = services.stateService;\n        console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] SizeService stateService set\"));\n      }\n      if (services.childService) {\n        console.log(\"\\uD83D\\uDD0D [\".concat(new Date().toISOString(), \"] SizeService childService available\"));\n        // ChildService integration can be added here if needed\n      }\n    }\n\n    // Initialize size categories mapping from Shopify data\n  }, {\n    key: \"initializeSizeCategories\",\n    value: function initializeSizeCategories(shopifyProductData) {\n      var _this2 = this;\n      console.log('\uD83D\uDD27 [SizeService] Initializing size categories from metafields');\n      this.sizeCategoriesByProduct = {};\n      if (shopifyProductData && _typeof(shopifyProductData) === 'object') {\n        Object.keys(shopifyProductData).forEach(function (productId) {\n          var product = shopifyProductData[productId];\n          if (product && product.id) {\n            var _product$metafields;\n            // CRITICAL: Use metafields directly - no detection/guessing\n            var sizeCategory = product.sizeCategory || ((_product$metafields = product.metafields) === null || _product$metafields === void 0 || (_product$metafields = _product$metafields.custom) === null || _product$metafields === void 0 ? void 0 : _product$metafields.sizing_category) || '';\n            _this2.sizeCategoriesByProduct[productId] = {\n              sizeCategory: sizeCategory,\n              title: product.title || '',\n              handle: product.handle || '',\n              recommendedQuantity: product.recommendedQuantity || null\n            };\n            if (!sizeCategory) {\n              console.warn(\"\\u26A0\\uFE0F [SizeService] Product \".concat(productId, \" (\").concat(product.title, \") has NO sizeCategory in metafields\"));\n            }\n          }\n        });\n\n        // Make it available globally for backwards compatibility\n        window.sizeCategoriesByProduct = this.sizeCategoriesByProduct;\n        console.log('\u2705 [SizeService] Size categories initialized:', Object.keys(this.sizeCategoriesByProduct).length, 'products');\n\n        // Emit event for other components\n        document.dispatchEvent(new CustomEvent('sizeService:categoriesReady', {\n          detail: {\n            categories: this.sizeCategoriesByProduct\n          }\n        }));\n      } else {\n        console.warn('\u26A0\uFE0F [SizeService] No valid shopifyProductData found');\n      }\n    }\n\n    // Get size categories for external access\n  }, {\n    key: \"getSizeCategoriesByProduct\",\n    value: function getSizeCategoriesByProduct() {\n      return this.sizeCategoriesByProduct || {};\n    }\n\n    // Private: Fetch sizes from API\n  }, {\n    key: \"_fetchFromApi\",\n    value: function () {\n      var _fetchFromApi2 = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(childData) {\n        var ageInMonths, ageYears, birthDate, today, yearDiff, monthDiff, birthYear, currentYear, genderMapping, apiGender, params, fullUrl, _result$data, _result$data2, _result$data3, response, responseText, data, _data$sizes, normalized, result, topsSize, bottomsSize, _t, _t2;\n        return _regenerator().w(function (_context) {\n          while (1) switch (_context.p = _context.n) {\n            case 0:\n              console.log('\uD83D\uDD35\uD83D\uDD35\uD83D\uDD35 [API START] _fetchFromApi called with:', JSON.stringify(childData));\n              // Calculate ageInMonths with priority order:\n              // 1. year_of_birth + month_of_birth (most reliable)\n              // 2. age field if it looks like a birth year (>18)\n              // 3. ageInMonths field if valid\n              // 4. age field if it looks like age in years (0-18)\n\n              // Priority 1: Use year_of_birth + month_of_birth if available\n              if (childData.year_of_birth && childData.month_of_birth) {\n                birthDate = new Date(childData.year_of_birth, childData.month_of_birth - 1); // JS months are 0-indexed\n                today = new Date();\n                yearDiff = today.getFullYear() - birthDate.getFullYear();\n                monthDiff = today.getMonth() - birthDate.getMonth();\n                ageInMonths = yearDiff * 12 + monthDiff;\n                if (monthDiff < 0 || monthDiff === 0 && today.getDate() < birthDate.getDate()) {\n                  ageInMonths--;\n                }\n                ageYears = Math.floor(ageInMonths / 12);\n                console.log(\"\\uD83D\\uDD0D [SizeService] Calculated from birth date (\".concat(childData.year_of_birth, \"-\").concat(childData.month_of_birth, \"): \").concat(ageYears, \" years, \").concat(ageInMonths, \" months\"));\n              }\n              // Priority 2: If age field looks like a birth year (> 100), calculate from it\n              else if (childData.age && !isNaN(childData.age) && parseFloat(childData.age) > 100) {\n                birthYear = parseFloat(childData.age);\n                currentYear = new Date().getFullYear();\n                ageYears = currentYear - birthYear;\n                ageInMonths = Math.round(ageYears * 12);\n                console.log(\"\\uD83D\\uDD0D [SizeService] Detected birth year \".concat(birthYear, \" \\u2192 calculated age: \").concat(ageYears, \" years, \").concat(ageInMonths, \" months\"));\n              }\n              // Priority 3: Use ageInMonths if valid (already in months)\n              else if (childData.ageInMonths && !isNaN(childData.ageInMonths) && parseFloat(childData.ageInMonths) > 0) {\n                ageInMonths = Math.round(parseFloat(childData.ageInMonths));\n                ageYears = Math.floor(ageInMonths / 12);\n                console.log(\"\\uD83D\\uDD0D [SizeService] Using provided ageInMonths: \".concat(ageInMonths, \" (\").concat(ageYears, \" years)\"));\n              }\n              // Priority 4: Use age field if it looks like age in years (0-18)\n              else if (childData.age && !isNaN(childData.age) && parseFloat(childData.age) >= 0 && parseFloat(childData.age) <= 18) {\n                ageYears = parseFloat(childData.age);\n                ageInMonths = Math.round(ageYears * 12);\n                console.log(\"\\uD83D\\uDD0D [SizeService] Using age in years: \".concat(ageYears, \" \\u2192 \").concat(ageInMonths, \" months\"));\n              }\n              // Fallback: Default to 8 years (96 months) if no valid age data\n              else {\n                ageInMonths = 96;\n                ageYears = 8;\n                console.warn('\u26A0\uFE0F [SizeService] No valid age data, defaulting to 96 months (8 years)');\n              }\n              console.log(\"\\uD83D\\uDD0D [SizeService] Final ageInMonths for API call: \".concat(ageInMonths));\n\n              // Map gender values for API\n              genderMapping = {\n                'boy': 'male',\n                'girl': 'female'\n              };\n              apiGender = genderMapping[childData.gender] || childData.gender;\n              params = new URLSearchParams({\n                age: ageInMonths.toString(),\n                height: childData.height || '',\n                weight: childData.weight || '',\n                gender: apiGender,\n                projections: 'true'\n              });\n              fullUrl = \"\".concat(this.apiUrl, \"?\").concat(params);\n              console.log('\uD83D\uDD35\uD83D\uDD35\uD83D\uDD35 [API] Calling URL:', fullUrl);\n              _context.p = 1;\n              console.log('\uD83D\uDD35 [API] Making fetch request...');\n              _context.n = 2;\n              return fetch(fullUrl, {\n                headers: {\n                  'ngrok-skip-browser-warning': 'true',\n                  'Accept': '*/*'\n                }\n              });\n            case 2:\n              response = _context.v;\n              console.log('\uD83D\uDD35 [API] Response status:', response.status, response.ok);\n              if (response.ok) {\n                _context.n = 3;\n                break;\n              }\n              console.error('\u274C [API] Request failed with status:', response.status);\n              throw new Error(\"API request failed: \".concat(response.status));\n            case 3:\n              _context.n = 4;\n              return response.text();\n            case 4:\n              responseText = _context.v;\n              console.log('\uD83D\uDD35\uD83D\uDD35\uD83D\uDD35 [API] Response received, length:', responseText.length, 'chars');\n              _context.p = 5;\n              data = JSON.parse(responseText);\n              console.log('\uD83D\uDD35\uD83D\uDD35\uD83D\uDD35 [API] Parsed JSON successfully, data.success:', data.success);\n              console.log('\uD83D\uDD35\uD83D\uDD35\uD83D\uDD35 [API] Sizes count:', (_data$sizes = data.sizes) === null || _data$sizes === void 0 ? void 0 : _data$sizes.length);\n              _context.n = 7;\n              break;\n            case 6:\n              _context.p = 6;\n              _t = _context.v;\n              console.error('\u274C [API] Failed to parse JSON:', _t);\n              console.error('\u274C [API] Response was:', responseText.substring(0, 200) + '...');\n              throw new Error(\"Invalid JSON response: \".concat(_t.message));\n            case 7:\n              if (data.success) {\n                _context.n = 8;\n                break;\n              }\n              console.error('\u274C [API] API returned success=false:', data.message);\n              throw new Error(data.message || 'API returned error');\n            case 8:\n              // Normalize shape: support both {success, data:{...}} and {success, sizes:[...]} payloads\n              normalized = _typeof(data.data) === 'object' && data.data !== null ? data.data : data;\n              result = {\n                success: true,\n                data: normalized\n              };\n              console.log('\u2705\u2705\u2705 [API] Returning success result with', (_result$data = result.data) === null || _result$data === void 0 || (_result$data = _result$data.sizes) === null || _result$data === void 0 ? void 0 : _result$data.length, 'sizes');\n              topsSize = (_result$data2 = result.data) === null || _result$data2 === void 0 || (_result$data2 = _result$data2.sizes) === null || _result$data2 === void 0 || (_result$data2 = _result$data2.find(function (s) {\n                return s.category === 'polos_knits';\n              })) === null || _result$data2 === void 0 ? void 0 : _result$data2.size;\n              bottomsSize = (_result$data3 = result.data) === null || _result$data3 === void 0 || (_result$data3 = _result$data3.sizes) === null || _result$data3 === void 0 || (_result$data3 = _result$data3.find(function (s) {\n                return s.category === 'girls_pants_shorts';\n              })) === null || _result$data3 === void 0 ? void 0 : _result$data3.size;\n              console.log('\u2705\u2705\u2705 [API] Tops:', topsSize, 'Bottoms:', bottomsSize);\n              return _context.a(2, result);\n            case 9:\n              _context.p = 9;\n              _t2 = _context.v;\n              console.error('\u274C\u274C\u274C [API] FAILED:', _t2.message);\n              throw _t2;\n            case 10:\n              return _context.a(2);\n          }\n        }, _callee, this, [[5, 6], [1, 9]]);\n      }));\n      function _fetchFromApi(_x) {\n        return _fetchFromApi2.apply(this, arguments);\n      }\n      return _fetchFromApi;\n    }() // Private: Generate fallback data using static sizes if available\n  }, {\n    key: \"_generateFallbackData\",\n    value: function _generateFallbackData(childData) {\n      var _childData$gender;\n      // Use static sizes from window if available to avoid emergency fallbacks\n      var availableSizes = window.SHOPIFY_AVAILABLE_SIZES || null;\n      if (availableSizes) {\n        console.log('\u2705 [SizeService] Using static SHOPIFY_AVAILABLE_SIZES for fallback');\n      } else {\n        console.warn('\u26A0\uFE0F [SizeService] No static sizes available, using generated fallback');\n      }\n\n      // Calculate ageInMonths with same priority order as _fetchFromApi\n      // 1. year_of_birth + month_of_birth (most reliable)\n      // 2. age field if it looks like a birth year (>18)\n      // 3. ageInMonths field if valid\n      // 4. age field if it looks like age in years (0-18)\n      var ageInMonths;\n      var ageYears;\n\n      // Priority 1: Use year_of_birth + month_of_birth if available\n      if (childData.year_of_birth && childData.month_of_birth) {\n        var birthDate = new Date(childData.year_of_birth, childData.month_of_birth - 1); // JS months are 0-indexed\n        var today = new Date();\n        var yearDiff = today.getFullYear() - birthDate.getFullYear();\n        var monthDiff = today.getMonth() - birthDate.getMonth();\n        ageInMonths = yearDiff * 12 + monthDiff;\n        if (monthDiff < 0 || monthDiff === 0 && today.getDate() < birthDate.getDate()) {\n          ageInMonths--;\n        }\n        ageYears = Math.floor(ageInMonths / 12);\n        console.log(\"\\uD83D\\uDD0D [SizeService FALLBACK] Calculated from birth date (\".concat(childData.year_of_birth, \"-\").concat(childData.month_of_birth, \"): \").concat(ageYears, \" years, \").concat(ageInMonths, \" months\"));\n      }\n      // Priority 2: If age field looks like a birth year (> 100), calculate from it\n      else if (childData.age && !isNaN(childData.age) && parseFloat(childData.age) > 100) {\n        var birthYear = parseFloat(childData.age);\n        var currentYear = new Date().getFullYear();\n        ageYears = currentYear - birthYear;\n        ageInMonths = Math.round(ageYears * 12);\n        console.log(\"\\uD83D\\uDD0D [SizeService FALLBACK] Detected birth year \".concat(birthYear, \" \\u2192 calculated age: \").concat(ageYears, \" years, \").concat(ageInMonths, \" months\"));\n      }\n      // Priority 3: Use ageInMonths if valid (already in months)\n      else if (childData.ageInMonths && !isNaN(childData.ageInMonths) && parseFloat(childData.ageInMonths) > 0) {\n        ageInMonths = Math.round(parseFloat(childData.ageInMonths));\n        ageYears = Math.floor(ageInMonths / 12);\n        console.log(\"\\uD83D\\uDD0D [SizeService FALLBACK] Using provided ageInMonths: \".concat(ageInMonths, \" (\").concat(ageYears, \" years)\"));\n      }\n      // Priority 4: Use age field if it looks like age in years (0-18)\n      else if (childData.age && !isNaN(childData.age) && parseFloat(childData.age) >= 0 && parseFloat(childData.age) <= 18) {\n        ageYears = parseFloat(childData.age);\n        ageInMonths = Math.round(ageYears * 12);\n        console.log(\"\\uD83D\\uDD0D [SizeService FALLBACK] Using age in years: \".concat(ageYears, \" \\u2192 \").concat(ageInMonths, \" months\"));\n      }\n      // Fallback: Default to 8 years (96 months) if no valid age data\n      else {\n        ageInMonths = 96;\n        ageYears = 8;\n        console.warn('\u26A0\uFE0F [SizeService FALLBACK] No valid age data, defaulting to 96 months (8 years)');\n      }\n      var gender = (_childData$gender = childData.gender) === null || _childData$gender === void 0 ? void 0 : _childData$gender.toLowerCase();\n      var isGirl = gender === 'girl' || gender === 'female';\n      var isBoy = gender === 'boy' || gender === 'male';\n      console.log(\"\\uD83D\\uDD0D [SIZE DEBUG] Calculating fallback sizes for child:\", {\n        ageInMonths: ageInMonths,\n        gender: gender,\n        isGirl: isGirl,\n        isBoy: isBoy\n      });\n\n      // Determine size based on age and gender\n      var baseSize = 'M';\n      var numericSize = '8';\n      if (ageInMonths <= 60) {\n        // 5 years and under\n        baseSize = 'XS';\n        numericSize = '4';\n      } else if (ageInMonths <= 84) {\n        // 6-7 years\n        baseSize = 'S';\n        numericSize = '6';\n      } else if (ageInMonths <= 108) {\n        // 8-9 years\n        baseSize = 'M';\n        numericSize = '8';\n      } else if (ageInMonths <= 132) {\n        // 10-11 years\n        baseSize = 'L';\n        numericSize = '10';\n      } else if (ageInMonths <= 156) {\n        // 12-13 years\n        baseSize = 'XL';\n        numericSize = '12';\n      } else {\n        // 14+ years\n        baseSize = 'XXL';\n        numericSize = '14';\n      }\n      console.log(\"\\uD83D\\uDD0D [SIZE DEBUG] Age-based sizing:\", {\n        ageInMonths: ageInMonths,\n        baseSize: baseSize,\n        numericSize: numericSize\n      });\n\n      // Grade-based override: some business rules prefer grade -> sizing mapping\n      // Especially important for school-uniform flows where \"2nd grade\" must map to YL / 10.\n      try {\n        var gradeRaw = (childData.grade || '').toString().trim().toLowerCase();\n        if (gradeRaw) {\n          // normalize common textual representations\n          var gradeNormalized = gradeRaw.replace(/\\s+/g, '');\n          if (gradeNormalized === '2' || gradeNormalized === '2nd' || gradeNormalized === '2ndgrade' || gradeNormalized === '2ndgrade') {\n            // For 2nd graders, prefer slightly larger / youth-large sizing (YL) and numeric 10\n            // We set the alpha baseSize so alpha->youth mapping produces YL, and set numericSize to 10 for bottoms.\n            baseSize = 'M'; // alpha base that canonical mapping will convert into YL\n            numericSize = '10'; // numeric size to use for bottoms\n            console.log('\uD83D\uDD27 [SIZE DEBUG] Grade override applied for 2nd grade -> baseSize:', baseSize, 'numericSize:', numericSize);\n          }\n        }\n      } catch (gErr) {\n        console.warn('\u26A0\uFE0F [SIZE DEBUG] Grade override check failed', gErr);\n      }\n\n      // Generate fallback size recommendations with proper size types, validated against static sizes if available\n      var fallbackSizes = [];\n\n      // Helper to pick valid size from category\n      var pickValidSize = function pickValidSize(category, preferred) {\n        if (availableSizes && availableSizes[category]) {\n          var validSizes = availableSizes[category];\n          // Exact match first\n          if (validSizes.includes(preferred)) return preferred;\n          // Fallback to first available\n          return validSizes[0] || preferred;\n        }\n        return preferred;\n      };\n\n      // GENDER-SPECIFIC CATEGORIES (NUMERIC SIZES)\n      if (isGirl) {\n        // Girls-only categories - use numeric sizing\n        fallbackSizes.push({\n          category: 'girls_blouses',\n          size: pickValidSize('girls_blouses', numericSize),\n          confidence: 0.85\n        }, {\n          category: 'girls_pants_shorts',\n          size: pickValidSize('girls_pants_shorts', numericSize),\n          confidence: 0.85\n        }, {\n          category: 'girls_jumper',\n          size: pickValidSize('girls_jumper', numericSize),\n          confidence: 0.80\n        }, {\n          category: 'girls_skorts',\n          size: pickValidSize('girls_skorts', numericSize),\n          confidence: 0.80\n        });\n      } else if (isBoy) {\n        // Boys-only categories - use numeric sizing\n        fallbackSizes.push({\n          category: 'boys_pants_shorts',\n          size: pickValidSize('boys_pants_shorts', numericSize),\n          confidence: 0.85\n        });\n      }\n\n      // UNISEX CATEGORIES (ALPHA SIZES)\n      fallbackSizes.push({\n        category: 'active_tops',\n        size: pickValidSize('active_tops', baseSize),\n        confidence: 0.90\n      }, {\n        category: 'active_bottoms',\n        size: pickValidSize('active_bottoms', baseSize),\n        confidence: 0.90\n      }, {\n        category: 'outerwear_fleece',\n        size: pickValidSize('outerwear_fleece', baseSize),\n        confidence: 0.85\n      }, {\n        category: 'polos_knits',\n        size: pickValidSize('polos_knits', baseSize),\n        // ALPHA sizing (XS, S, M, L, XL)\n        confidence: 0.85\n      }, {\n        category: 'pull_on_pants_shorts',\n        size: pickValidSize('pull_on_pants_shorts', baseSize),\n        // ALPHA sizing (XS, S, M, L, XL)\n        confidence: 0.80\n      }, {\n        category: 'sweaters',\n        size: pickValidSize('sweaters', baseSize),\n        confidence: 0.85\n      });\n\n      // Calculate measurements based on age and gender\n      var measurements = this.calculateFallbackMeasurements(ageInMonths, gender);\n\n      // Generate 12-month projections\n      var projections = this.generateFallbackProjections(ageInMonths, gender);\n      return {\n        success: true,\n        data: {\n          input: {\n            age: childData.ageInMonths || childData.age || '',\n            height: childData.height || '',\n            weight: childData.weight || '',\n            gender: childData.gender || ''\n          },\n          measurements: measurements,\n          sizes: fallbackSizes,\n          validation: {\n            isValid: true,\n            warnings: availableSizes ? [] : ['Using generated fallback - static sizes unavailable']\n          },\n          projections: projections\n        }\n      };\n    }\n\n    // Calculate fallback measurements based on age and gender\n  }, {\n    key: \"calculateFallbackMeasurements\",\n    value: function calculateFallbackMeasurements(ageInMonths, gender) {\n      var isGirl = gender === 'girl' || gender === 'female';\n      var ageYears = ageInMonths / 12;\n\n      // Base measurements (in inches and pounds)\n      var height, weight, waist, inseam, chest;\n      if (ageYears <= 5) {\n        height = 40;\n        weight = 36;\n        waist = 20;\n        inseam = 16;\n        chest = 22;\n      } else if (ageYears <= 7) {\n        height = 45;\n        weight = 48;\n        waist = 22;\n        inseam = 18;\n        chest = 24;\n      } else if (ageYears <= 9) {\n        height = 51;\n        weight = 62;\n        waist = 24;\n        inseam = 20;\n        chest = 26;\n      } else if (ageYears <= 11) {\n        height = 55;\n        weight = 75;\n        waist = 26;\n        inseam = 22;\n        chest = 28;\n      } else if (ageYears <= 13) {\n        height = 59;\n        weight = 88;\n        waist = 28;\n        inseam = 24;\n        chest = 30;\n      } else {\n        height = 62;\n        weight = 110;\n        waist = 30;\n        inseam = 26;\n        chest = 32;\n      }\n\n      // Adjust for gender differences\n      if (isGirl) {\n        weight = Math.round(weight * 0.95);\n        chest = Math.round(chest * 0.98);\n      }\n      return {\n        height: height,\n        weight: weight,\n        waist: waist,\n        inseam: inseam,\n        chest: chest,\n        heightPercentile: 50,\n        weightPercentile: 50,\n        bmi: Math.round(weight / (height * height) * 703 * 100) / 100\n      };\n    }\n\n    // Generate fallback 12-month growth projections\n  }, {\n    key: \"generateFallbackProjections\",\n    value: function generateFallbackProjections(ageInMonths, gender) {\n      var isGirl = gender === 'girl' || gender === 'female';\n      var currentAge = ageInMonths;\n      var projections = [];\n      for (var month = 1; month <= 12; month++) {\n        var projectedAge = currentAge + month;\n        var projectedAgeYears = projectedAge / 12;\n\n        // Simple growth projection (2-3 inches per year, 4-6 pounds per year)\n        var heightGrowth = Math.round(month / 12 * (isGirl ? 2.5 : 2.8));\n        var weightGrowth = Math.round(month / 12 * (isGirl ? 4.5 : 5.2));\n        projections.push({\n          month: month,\n          age: projectedAge,\n          height: Math.round(40 + projectedAgeYears * (isGirl ? 2.5 : 2.8)),\n          weight: Math.round(36 + projectedAgeYears * (isGirl ? 4.5 : 5.2)),\n          heightGrowth: heightGrowth,\n          weightGrowth: weightGrowth\n        });\n      }\n      return projections;\n    }\n\n    // Main method: Calculate sizes for a child based on measurements\n  }, {\n    key: \"calculateSizes\",\n    value: function () {\n      var _calculateSizes = _asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(childData) {\n        var validation, errorMsg, result, _t3;\n        return _regenerator().w(function (_context2) {\n          while (1) switch (_context2.p = _context2.n) {\n            case 0:\n              // Enhanced validation: Handle both age in years (0-18) and birth year values\n              validation = this._validateMeasurements(childData);\n              if (validation.isValid) {\n                _context2.n = 1;\n                break;\n              }\n              errorMsg = \"Invalid input data: \".concat(validation.errors.join(', '));\n              console.error('\u274C [SizeService] Validation failed:', errorMsg);\n\n              // Dispatch error event\n              document.dispatchEvent(new CustomEvent('sizesCalculationError', {\n                detail: {\n                  childId: childData.id,\n                  error: errorMsg\n                }\n              }));\n              return _context2.a(2, {\n                success: false,\n                error: errorMsg\n              });\n            case 1:\n              console.log('\uD83D\uDFE2\uD83D\uDFE2\uD83D\uDFE2 [calculateSizes] START - childData:', JSON.stringify(childData));\n              _context2.p = 2;\n              // ONLY API - NO FALLBACK\n              console.log('\uD83D\uDFE2 [calculateSizes] Calling API...');\n              _context2.n = 3;\n              return this._fetchFromApi(childData);\n            case 3:\n              result = _context2.v;\n              // Save to StateService\n              if (this.stateService && childData.id) {\n                this.stateService.setSizeRecommendations(childData.id, result);\n              }\n\n              // Dispatch event\n              document.dispatchEvent(new CustomEvent('sizesCalculated', {\n                detail: {\n                  childId: childData.id,\n                  result: result\n                }\n              }));\n              return _context2.a(2, result);\n            case 4:\n              _context2.p = 4;\n              _t3 = _context2.v;\n              console.error('\u274C Error calculating sizes:', _t3);\n\n              // Dispatch error event\n              document.dispatchEvent(new CustomEvent('sizesCalculationError', {\n                detail: {\n                  childId: childData.id,\n                  error: _t3.message\n                }\n              }));\n              return _context2.a(2, {\n                success: false,\n                error: _t3.message\n              });\n          }\n        }, _callee2, this, [[2, 4]]);\n      }));\n      function calculateSizes(_x2) {\n        return _calculateSizes.apply(this, arguments);\n      }\n      return calculateSizes;\n    }() // Enhanced validation that handles birth year vs age\n  }, {\n    key: \"_validateMeasurements\",\n    value: function _validateMeasurements(measurements) {\n      var errors = [];\n\n      // Validate age/birth year if present\n      // We accept: year_of_birth + month_of_birth, age as birth year (>100), ageInMonths, or age (0-18)\n      var ageValidated = false;\n\n      // Check year_of_birth + month_of_birth combination (most reliable)\n      if (measurements.year_of_birth && measurements.month_of_birth) {\n        var year = parseInt(measurements.year_of_birth);\n        var month = parseInt(measurements.month_of_birth);\n        var currentYear = new Date().getFullYear();\n        if (isNaN(year) || isNaN(month)) {\n          errors.push('Birth year and month must be valid numbers');\n        } else if (year < 1900 || year > currentYear) {\n          errors.push(\"Birth year \".concat(year, \" is out of valid range (1900-\").concat(currentYear, \")\"));\n        } else if (month < 1 || month > 12) {\n          errors.push(\"Birth month \".concat(month, \" is out of valid range (1-12)\"));\n        } else {\n          var calculatedAge = currentYear - year;\n          if (calculatedAge < 0 || calculatedAge > 18) {\n            errors.push(\"Calculated age \".concat(calculatedAge, \" from birth year \").concat(year, \" is out of range (0-18)\"));\n          } else {\n            ageValidated = true;\n            console.log(\"\\uD83D\\uDD0D [Validation] Valid birth date: \".concat(year, \"-\").concat(month, \", age: \").concat(calculatedAge));\n          }\n        }\n      }\n      // Check ageInMonths if present and not already validated\n      else if (measurements.ageInMonths && !ageValidated) {\n        var ageInMonths = parseFloat(measurements.ageInMonths);\n        if (isNaN(ageInMonths)) {\n          errors.push('Age in months must be a valid number');\n        } else if (ageInMonths < 0 || ageInMonths > 216) {\n          // 0-18 years = 0-216 months\n          errors.push(\"Age in months \".concat(ageInMonths, \" is out of range (0-216)\"));\n        } else {\n          ageValidated = true;\n          console.log(\"\\uD83D\\uDD0D [Validation] Valid ageInMonths: \".concat(ageInMonths));\n        }\n      }\n      // Check age field if present and not already validated\n      else if (measurements.age && !ageValidated) {\n        var ageNum = parseFloat(measurements.age);\n        if (isNaN(ageNum)) {\n          errors.push('Age must be a valid number');\n        } else if (ageNum > 100) {\n          // Treat as birth year\n          var _currentYear = new Date().getFullYear();\n          var _calculatedAge = _currentYear - ageNum;\n          if (_calculatedAge < 0 || _calculatedAge > 18) {\n            errors.push(\"Invalid birth year \".concat(ageNum, \": calculated age \").concat(_calculatedAge, \" is out of range (0-18)\"));\n          } else {\n            ageValidated = true;\n            console.log(\"\\uD83D\\uDD0D [Validation] Treating \".concat(ageNum, \" as birth year, calculated age: \").concat(_calculatedAge));\n          }\n        } else if (ageNum >= 0 && ageNum <= 18) {\n          // Age in years\n          ageValidated = true;\n          console.log(\"\\uD83D\\uDD0D [Validation] Valid age in years: \".concat(ageNum));\n        } else if (ageNum > 18 && ageNum <= 216) {\n          // Could be age in months\n          ageValidated = true;\n          console.log(\"\\uD83D\\uDD0D [Validation] Treating \".concat(ageNum, \" as age in months\"));\n        } else {\n          errors.push(\"Age \".concat(ageNum, \" is out of valid range\"));\n        }\n      }\n\n      // Validate height if present\n      if (measurements.height && (isNaN(measurements.height) || parseFloat(measurements.height) <= 0)) {\n        errors.push('Height must be a positive number');\n      }\n\n      // Validate weight if present\n      if (measurements.weight && (isNaN(measurements.weight) || parseFloat(measurements.weight) <= 0)) {\n        errors.push('Weight must be a positive number');\n      }\n\n      // Validate gender (required)\n      if (!measurements.gender || !['male', 'female', 'boy', 'girl'].includes(measurements.gender.toLowerCase())) {\n        errors.push('Gender is required and must be male/female or boy/girl');\n      }\n      return {\n        isValid: errors.length === 0,\n        errors: errors\n      };\n    }\n\n    // Force fallback mode for testing (bypasses API completely)\n  }, {\n    key: \"forceFallbackMode\",\n    value: function forceFallbackMode() {\n      this.useFallbackOnly = true;\n    }\n\n    // Reset to normal mode (tries API first, then fallback)\n  }, {\n    key: \"resetToNormalMode\",\n    value: function resetToNormalMode() {\n      this.useFallbackOnly = false;\n    }\n\n    // Get size recommendations for a child\n  }, {\n    key: \"getSizeRecommendations\",\n    value: function getSizeRecommendations(childId) {\n      if (!this.stateService) return null;\n      return this.stateService.getSizeRecommendations(childId);\n    }\n\n    // Get recommended size for a specific category\n  }, {\n    key: \"getRecommendedSize\",\n    value: function getRecommendedSize(childId, category) {\n      var recommendations = this.getSizeRecommendations(childId);\n      if (!recommendations || !recommendations.sizes) return null;\n      return recommendations.sizes.find(function (size) {\n        return size.category === category;\n      });\n    }\n\n    // Get all recommended sizes for a child\n  }, {\n    key: \"getAllRecommendedSizes\",\n    value: function getAllRecommendedSizes(childId) {\n      var recommendations = this.getSizeRecommendations(childId);\n      return recommendations ? recommendations.sizes : [];\n    }\n\n    // Convert height from feet/inches to cm\n  }, {\n    key: \"convertHeightToCm\",\n    value: function convertHeightToCm(feet, inches) {\n      var totalInches = parseInt(feet) * 12 + parseInt(inches);\n      return Math.round(totalInches * 2.54);\n    }\n\n    // Convert weight from pounds to kg\n  }, {\n    key: \"convertWeightToKg\",\n    value: function convertWeightToKg(pounds) {\n      return Math.round(pounds * 0.453592);\n    }\n  }, {\n    key: \"calculateAgeInMonths\",\n    value: function calculateAgeInMonths(birthdate) {\n      var today = new Date();\n      var birth = new Date(birthdate);\n      var yearDiff = today.getFullYear() - birth.getFullYear();\n      var monthDiff = today.getMonth() - birth.getMonth();\n      return yearDiff * 12 + monthDiff;\n    }\n\n    // Get size categories\n  }, {\n    key: \"getSizeCategories\",\n    value: function getSizeCategories() {\n      return ['girls_blouses', 'girls_jumper', 'girls_pants_shorts', 'girls_skorts', 'active_bottoms', 'active_tops', 'outerwear_fleece', 'polos_knits', 'pull_on_pants_shorts', 'sweaters'];\n    }\n\n    // Get display name for size category\n  }, {\n    key: \"getCategoryDisplayName\",\n    value: function getCategoryDisplayName(category) {\n      var displayNames = {\n        'girls_blouses': 'Blouses',\n        'girls_jumper': 'Jumpers',\n        'girls_pants_shorts': 'Pants & Shorts',\n        'girls_skorts': 'Skorts',\n        'active_bottoms': 'Active Bottoms',\n        'active_tops': 'Active Tops',\n        'outerwear_fleece': 'Outerwear',\n        'polos_knits': 'Polos & Knits',\n        'pull_on_pants_shorts': 'Pull-on Pants',\n        'sweaters': 'Sweaters'\n      };\n      return displayNames[category] || category;\n    }\n\n    // Get simplified size recommendations (tops/bottoms)\n  }, {\n    key: \"getSimplifiedSizes\",\n    value: function getSimplifiedSizes(childId) {\n      try {\n        var recommendations = this.getSizeRecommendations(childId);\n        if (!recommendations || !recommendations.data || !recommendations.data.sizes) {\n          console.warn(\"\\uD83D\\uDD0D [SizeService] No recommendations found for child \".concat(childId));\n          return null;\n        }\n        var sizes = recommendations.data.sizes;\n\n        // Get child data to determine gender\n        var child = null;\n        var isGirl = false;\n        var isBoy = false;\n        if (window.childService && window.childService.getChildById) {\n          var _child, _child2, _child3, _child4;\n          child = window.childService.getChildById(childId);\n          isGirl = ((_child = child) === null || _child === void 0 || (_child = _child.gender) === null || _child === void 0 ? void 0 : _child.toLowerCase()) === 'girl' || ((_child2 = child) === null || _child2 === void 0 || (_child2 = _child2.gender) === null || _child2 === void 0 ? void 0 : _child2.toLowerCase()) === 'female';\n          isBoy = ((_child3 = child) === null || _child3 === void 0 || (_child3 = _child3.gender) === null || _child3 === void 0 ? void 0 : _child3.toLowerCase()) === 'boy' || ((_child4 = child) === null || _child4 === void 0 || (_child4 = _child4.gender) === null || _child4 === void 0 ? void 0 : _child4.toLowerCase()) === 'male';\n        } else {\n          console.warn(\"\\uD83D\\uDD0D [SizeService] window.childService not available for gender detection\");\n        }\n\n        // Define tops and bottoms categories based on gender\n        var bottomsName = \"\";\n        if (isGirl) {\n          bottomsName = 'girls_pants_shorts';\n        } else if (isBoy) {\n          bottomsName = 'boys_pants_shorts';\n        } else {\n          bottomsName = 'active_bottoms';\n        }\n\n        // Find the first matching size for tops and bottoms\n        var tops = sizes.find(function (size) {\n          return size.category === \"polos_knits\";\n        });\n        var bottoms = sizes.find(function (size) {\n          return size.category === bottomsName;\n        });\n        var result = {\n          tops: tops ? tops.size : null,\n          bottoms: bottoms ? bottoms.size : null\n        };\n        console.log(\"\\uD83D\\uDD0D [SizeService] Simplified sizes for child \".concat(childId, \":\"), result);\n        return result;\n      } catch (error) {\n        console.error(\"\\uD83D\\uDD0D [SizeService] Error getting simplified sizes for child \".concat(childId, \":\"), error);\n        return null;\n      }\n    }\n  }]);\n}(); // ----- Size normalization helpers (map recommended logical sizes to actual variant option values) -----\n// These helpers allow the recommendations system to translate a recommended size\n// (which may come from an ML model or fallback tables) into a variant option value\n// that exists on the product (e.g., convert \"ym\" -> \"YXXS\", \"8\" -> \"3\", or perform fuzzy matching).\n//\n// The mapping strategy:\n// 1) If the recommended size exactly matches one of the product's option values (case-insensitive) -> use it.\n// 2) If exact match fails, apply explicit canonical mappings (configured below).\n// 3) If still failing, perform a fuzzy lookup across variant option values (numeric substring, synonyms).\n// 4) If nothing matches, return the original recommended value (caller should handle fallbacks).\n//\n// NOTE: Keep mappings small and explicit to avoid surprising replacements. Add entries only for\n//       cases proven in tests/production logs.\nSizeService.prototype.mapRecommendedSizeToVariantOption = function (product, recommended) {\n  try {\n    if (!recommended) return recommended;\n    var rec = String(recommended).trim();\n    if (!rec) return rec;\n\n    // \uD83D\uDEA8 CRITICAL DEBUG: Log all size transformation attempts\n    console.log(\"\\uD83D\\uDD0D [SIZE TRANSFORMATION DEBUG] Starting transformation for product \\\"\".concat(product === null || product === void 0 ? void 0 : product.title, \"\\\" (ID: \").concat(product === null || product === void 0 ? void 0 : product.id, \")\"));\n    console.log(\"\\uD83D\\uDD0D [SIZE TRANSFORMATION DEBUG] Input recommended size: \\\"\".concat(rec, \"\\\"\"));\n\n    // Build candidate values from product variants (option1 is assumed to be size)\n    var variantSizeValues = new Set();\n    if (product && Array.isArray(product.variants)) {\n      var _iterator = _createForOfIteratorHelper(product.variants),\n        _step;\n      try {\n        for (_iterator.s(); !(_step = _iterator.n()).done;) {\n          var v = _step.value;\n          // Support multiple possible property names for legacy variant shapes\n          var val = v && (v.option1 || v.option_1 || v.size || v.title || null);\n          if (val != null) variantSizeValues.add(String(val).trim());\n        }\n      } catch (err) {\n        _iterator.e(err);\n      } finally {\n        _iterator.f();\n      }\n    }\n    var candidates = Array.from(variantSizeValues);\n    console.log(\"\\uD83D\\uDD0D [SIZE TRANSFORMATION DEBUG] Available variant sizes:\", candidates);\n\n    // Try exact, case-insensitive match first\n    var recLower = rec.toLowerCase();\n    for (var _i = 0, _candidates = candidates; _i < _candidates.length; _i++) {\n      var c = _candidates[_i];\n      if (String(c).toLowerCase() === recLower) {\n        console.log(\"\\u2705 [SIZE TRANSFORMATION DEBUG] Exact case-insensitive match found: \\\"\".concat(rec, \"\\\" \\u2192 \\\"\").concat(c, \"\\\"\"));\n        return c;\n      }\n    }\n\n    // Youth alpha size mappings for numeric and standard alpha recommendations\n    // Keep numeric 8 -> YM (youth medium). The grade override above ensures 2nd graders\n    // are promoted to numeric 10 and alpha M->YL mapping handles tops.\n    var numericToYouth = {\n      '4': 'YS',\n      '6': 'YM',\n      '8': 'YM',\n      // default: numeric 8 -> YM (youth medium)\n      '10': 'YL',\n      '12': 'YXL',\n      '14': 'YXXL'\n    };\n    var alphaToYouth = {\n      'XS': 'YS',\n      'S': 'YM',\n      'M': 'YL',\n      // map alpha M -> YL (youth large) for canonicalization\n      'L': 'YL',\n      'XL': 'YXL',\n      'XXL': 'YXXL'\n    };\n\n    // Detect if product uses youth alpha sizes (all variants start with Y followed by letters, and includes YM/YL indicators)\n    var isYouthAlpha = candidates.length > 0 && candidates.every(function (c) {\n      return /^Y[A-Z]+$/i.test(String(c));\n    }) && candidates.some(function (c) {\n      return /YM|YL|YXL|YXXL|YS/i.test(String(c));\n    });\n    console.log(\"\\uD83D\\uDD0D [SIZE TRANSFORMATION DEBUG] Product uses youth alpha sizes: \".concat(isYouthAlpha));\n    if (isYouthAlpha) {\n      var mapped = null;\n      if (/^\\d+$/.test(rec)) {\n        // Numeric to youth alpha\n        mapped = numericToYouth[rec];\n        console.log(\"\\uD83D\\uDD04 [SIZE TRANSFORMATION DEBUG] Numeric mapping: \\\"\".concat(rec, \"\\\" \\u2192 \\\"\").concat(mapped, \"\\\" (using numericToYouth)\"));\n      } else if (/^[XLSM]{1,3}$/i.test(rec)) {\n        // Standard alpha to youth alpha\n        var upperRec = rec.toUpperCase();\n        mapped = alphaToYouth[upperRec];\n        console.log(\"\\uD83D\\uDD04 [SIZE TRANSFORMATION DEBUG] Alpha mapping: \\\"\".concat(rec, \"\\\" \\u2192 \\\"\").concat(mapped, \"\\\" (using alphaToYouth)\"));\n      }\n      if (mapped) {\n        // Verify the mapped size exists in product variants\n        var _iterator2 = _createForOfIteratorHelper(candidates),\n          _step2;\n        try {\n          for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {\n            var _c = _step2.value;\n            if (String(_c).toLowerCase() === mapped.toLowerCase()) {\n              console.log(\"\\u2705 [SIZE TRANSFORMATION DEBUG] Successfully mapped \\\"\".concat(rec, \"\\\" to youth alpha \\\"\").concat(mapped, \"\\\" for product\"));\n              console.log(\"\\uD83D\\uDEA8 [SIZE TRANSFORMATION DEBUG] *** FINAL TRANSFORMATION: \\\"\".concat(rec, \"\\\" \\u2192 \\\"\").concat(_c, \"\\\" ***\"));\n              return _c;\n            }\n          }\n        } catch (err) {\n          _iterator2.e(err);\n        } finally {\n          _iterator2.f();\n        }\n        console.log(\"\\u26A0\\uFE0F [SIZE TRANSFORMATION DEBUG] Mapped size \\\"\".concat(mapped, \"\\\" not found in variants:\"), candidates);\n      }\n    }\n\n    // No match found, return original (KISS: no further normalization)\n    console.log(\"\\uD83D\\uDD0D [SIZE TRANSFORMATION DEBUG] No transformation applied, returning original: \\\"\".concat(rec, \"\\\"\"));\n    return rec;\n  } catch (e) {\n    console.warn('\u26A0\uFE0F SizeService.mapRecommendedSizeToVariantOption failed', e);\n    return recommended;\n  }\n};\n\n// Convenience wrapper used by code that only has a childId / category mapping\nSizeService.prototype.normalizeRecommendedSize = function (product, recommendedSize) {\n  // Prefer mapped variant option if available\n  return this.mapRecommendedSizeToVariantOption(product, recommendedSize);\n};\n\n// Export to global scope for Shopify theme\nwindow.SizeService = SizeService;\n\n// Immediately expose to global scope\nwindow.SizeService = SizeService;\n\n// Also export for module systems\nif ( true && module.exports) {\n  module.exports = SizeService;\n}\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \t__webpack_require__(\"./src/services/legacy/ChildService.js\");\n/******/ \t__webpack_require__(\"./src/services/legacy/SizeService.js\");\n/******/ \tvar __webpack_exports__ = __webpack_require__(\"./src/services/legacy/CollectionFilterService.js\");\n/******/ \t\n/******/ })()\n;"],
  "mappings": "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",
  "names": ["o", "r", "ChildService", "CollectionFilterService", "n", "i", "c", "u", "f", "t", "d", "p", "e", "SizeService"]
}
