{
  "version": 3,
  "sources": ["/cdn/shop/t/148/assets/ro-search-results-products-ga4.js?vTrack=202605191002"],
  "sourcesContent": ["/**\n * \u641C\u7D22\u9875 Product \u5217\u8868 GA4 \u2014 assets/ro-search-results-products-ga4.js.liquid\n *\n * \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510\n * \u2502 \u57CB\u70B9\u7D22\u5F15\uFF08\u6539/\u6269\u65F6\u5148\u641C TRACK \u6CE8\u91CA\uFF09                                \u2502\n * \u251C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2524\n * \u2502 [TRACK-1] view_item_list  \u5355\u5F20\u5546\u54C1\u5361\u81EA\u8EAB\u53EF\u89C1 \u226560% \u540E\u66DD\u5149\u4E0A\u62A5   \u2502\n * \u2502           \u89E6\u53D1\uFF1AobserveProductCards + ro-search:products-rendered\u2502\n * \u2502 [TRACK-2] select_item     \u7F3A\u8D27 Learn More \u70B9\u51FB \u2192 pushSelectItem \u2502\n * \u2502           \u89E6\u53D1\uFF1AhandleLearnMoreClick\uFF08document \u6355\u83B7\u9636\u6BB5\u4E00\u6B21\u7ED1\u5B9A\uFF09 \u2502\n * \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518\n *\n * \u6570\u636E\u6D41\uFF1A\n *   ro-search-results-products.js \u6E32\u67D3\u540E\u6D3E\u53D1 ro-search:products-rendered\n *   \u2192 \u672C\u6587\u4EF6\u66F4\u65B0 currentPageItems / container \u2192 \u66DD\u5149 observer\n *\n * \u4F9D\u8D56\uFF1Awindow.__RO_SEARCH_PRODUCTS_BOOTSTRAP__\uFF08listMeta\uFF09\n * \u4E0A\u62A5\uFF1AtrackReport\uFF08\u4E0E GA4-track-directive \u5171\u7528 dataLayer\uFF09\n */\nimport { trackReport } from \"//us.roborock.com/cdn/shop/t/148/assets/GA4-track-directive-report.js?vTrack=202605191002&v=104115401213510859531783586306\";\n\n// \u2500\u2500\u2500 \u914D\u7F6E\u5E38\u91CF \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst ITEM_BRAND = 'Roborock';\n/**\n * [TRACK-1] \u5355\u5F20\u5546\u54C1\u5361\u66DD\u5149\u9608\u503C\uFF08\u975E\u6574\u9875\u5217\u8868\uFF09\n * intersectionRatio \u9488\u5BF9 observe \u7684\u6BCF\u5F20 .ro-search-product\uFF0C\u5373\u8BE5\u5361\u81EA\u8EAB\u53EF\u89C1\u9762\u79EF\u5360\u6BD4 \u2265 60% \u624D\u89E6\u53D1\n * \u4E0E v-track-visible / GA4-track-directive-core RATIO_VISIBLE \u4E00\u81F4\n */\nconst CARD_VISIBLE_RATIO = 0.6;\n/** [TRACK-2] Learn More \u94FE\u63A5\u9009\u62E9\u5668\uFF0C\u9700\u4E0E roborock-search-product-card.liquid \u7F3A\u8D27\u6309\u94AE\u4E00\u81F4 */\nconst LEARN_MORE_LINK_SELECTOR =\n  'a.ro-btn-secondary.ro-btn.theme-text[href]:not([href=\"javascript:;\"])';\n\n// \u2500\u2500\u2500 \u8FD0\u884C\u65F6\u72B6\u6001\uFF08\u7531 products-rendered / \u70B9\u51FB\u5904\u7406\u8BFB\u5199\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/** [TRACK-1] \u5546\u54C1\u5361 IntersectionObserver\uFF0C\u7FFB\u9875/\u91CD\u6E32\u67D3\u524D disconnect */\n/** @type {IntersectionObserver | null} */\nlet listObserver = null;\n/** [TRACK-1] \u672C\u9875\u5DF2\u4E0A\u62A5\u8FC7 view_item_list \u7684\u5361\u7247\u4E0B\u6807\uFF080-based\uFF09 */\n/** @type {Set<number>} */\nlet reportedCardIndices = new Set();\n/** [TRACK-1] \u5F85\u5408\u5E76\u4E0A\u62A5\u7684\u4E0B\u6807\uFF0C\u540C\u4E00\u5E27\u5185\u591A\u5F20\u5361\u53EF\u89C1\u4F1A\u6279\u91CF push */\n/** @type {Set<number>} */\nlet pendingViewIndices = new Set();\n/** [TRACK-1] \u662F\u5426\u5DF2\u5B89\u6392 requestAnimationFrame \u5408\u5E76 flush */\nlet viewItemListFlushScheduled = false;\n/** [TRACK-1] \u4E0E DOM \u5361\u7247\u4E00\u4E00\u5BF9\u5E94\u7684\u9009\u62E9\u5668 */\nconst PRODUCT_CARD_SELECTOR = '.ro-search-product';\n/** \u5F53\u524D\u9875 bootstrap \u5546\u54C1\u6570\u7EC4\uFF0C\u4E0E DOM \u5361\u7247\u987A\u5E8F\u4E00\u4E00\u5BF9\u5E94 */\n/** @type {object[]} */\nlet currentPageItems = [];\n/** \u5546\u54C1\u5217\u8868\u5BB9\u5668 [data-search-product-card-container] */\n/** @type {HTMLElement | null} */\nlet currentProductContainer = null;\n/** \u5217\u8868\u7EA7\u516C\u5171\u53C2\u6570\uFF1Acurrency\u3001item_list_id/name\uFF08\u6765\u81EA\u641C\u7D22\u8BCD\uFF09 */\n/** @type {object | null} */\nlet currentListMeta = null;\n/** [TRACK-2] \u662F\u5426\u5DF2\u5728 document \u4E0A\u7ED1\u5B9A Learn More \u70B9\u51FB\uFF08\u5168\u5C40\u53EA\u7ED1\u4E00\u6B21\uFF09 */\nlet learnMoreClickBound = false;\n\n// \u2500\u2500\u2500 \u516C\u5171\uFF1A\u5217\u8868 meta / GA4 item \u7EC4\u88C5\uFF08\u4E24\u4E2A\u57CB\u70B9\u5171\u7528\uFF09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * \u4ECE bootstrap \u7EC4\u88C5\u5217\u8868\u7EA7 event_parameters\n * @param {object} boot window.__RO_SEARCH_PRODUCTS_BOOTSTRAP__\n */\nfunction getListMeta(boot) {\n  const searchTerms = boot.searchTerms || '';\n  return {\n    currency: boot.currency || '',\n    item_list_name: searchTerms,\n    item_list_id: searchTerms,\n  };\n}\n\nconst CATEGORY_KEYS = [\n  'item_category',\n  'item_category2',\n  'item_category3',\n  'item_category4',\n  'item_category5',\n];\n\n/**\n * \u7C7B\u522B\u5B57\u6BB5\uFF1A\u6709 collections \u7528 title \u94FE\uFF0C\u5426\u5219\u56DE\u843D product_type\n * @param {object} product bootstrap \u5546\u54C1\u9879\n */\nfunction getCategoryFields(product) {\n  const titles = (product.collections || [])\n    .map(function (col) {\n      return col && col.title ? String(col.title).trim() : '';\n    })\n    .filter(Boolean)\n    .slice(0, CATEGORY_KEYS.length);\n\n  const fields = {};\n\n  if (titles.length === 0) {\n    fields.item_category = product.product_type ? String(product.product_type) : '';\n    return fields;\n  }\n\n  titles.forEach(function (title, index) {\n    fields[CATEGORY_KEYS[index]] = title;\n  });\n\n  return fields;\n}\n\n/**\n * \u5355\u6761 GA4 item\uFF08view_item_list / select_item \u7684 items \u5143\u7D20\u7ED3\u6784\uFF09\n * @param {object} product bootstrap \u5546\u54C1\u9879\n * @param {number} index \u5F53\u524D\u9875\u5E8F\u53F7\uFF0C\u4ECE 1 \u8D77\n * @param {object} listMeta getListMeta \u8FD4\u56DE\u503C\n */\nfunction buildGa4Item(product, index, listMeta) {\n  const priceCents = Number(product.price_cents) || 0;\n  const compareCents = Number(product.compare_at_price_cents) || 0;\n  const price = priceCents / 100;\n  const discount =\n    compareCents > priceCents ? (compareCents - priceCents) / 100 : 0;\n\n  return Object.assign(\n    {\n      item_id: String(product.item_id != null ? product.item_id : product.product_id),\n      item_name: product.product_title || '',\n      discount: discount,\n      index: index,\n      item_list_id: listMeta.item_list_id,\n      item_list_name: listMeta.item_list_name,\n      item_variant: product.item_variant || '',\n      item_brand: ITEM_BRAND,\n      price: price,\n      quantity: Number(product.quantity) || 1,\n    },\n    getCategoryFields(product)\n  );\n}\n\n// \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n// [TRACK-1] view_item_list \u2014 \u5355\u5361\u66DD\u5149\uFF08\u6EDA\u52A8\u589E\u91CF\u4E0A\u62A5\uFF09\n// \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n/**\n * [TRACK-1] \u5B9E\u9645\u4E0A\u62A5\u5165\u53E3\uFF1A\u4FEE\u6539 event_name / event_parameters \u8BF7\u6539\u8FD9\u91CC\n * @param {object[]} pageItems \u5F53\u524D\u9875\u5546\u54C1\uFF08bootstrap \u7ED3\u6784\uFF09\n * @param {number[]} cardIndices \u5F85\u4E0A\u62A5\u5361\u7247\u5728 pageItems \u4E2D\u7684 0-based \u4E0B\u6807\n * @param {object} listMeta\n */\nfunction pushViewItemList(pageItems, cardIndices, listMeta) {\n  if (!pageItems || pageItems.length === 0 || !cardIndices || cardIndices.length === 0) {\n    return;\n  }\n\n  const items = cardIndices.map(function (cardIndex) {\n    return buildGa4Item(pageItems[cardIndex], cardIndex + 1, listMeta);\n  });\n\n  trackReport({\n    event_name: 'view_item_list',\n    event_parameters: {\n      currency: listMeta.currency,\n      item_list_name: listMeta.item_list_name,\n      item_list_id: listMeta.item_list_id,\n      items: items,\n    },\n  });\n}\n\n/**\n * [TRACK-1] \u5408\u5E76\u540C\u4E00\u5E27\u5185\u591A\u5F20\u65B0\u66DD\u5149\u5361\uFF0C\u907F\u514D\u8FDE\u7EED\u591A\u6B21 push\n * @param {object[]} pageItems\n * @param {object} listMeta\n */\nfunction scheduleViewItemListFlush(pageItems, listMeta) {\n  if (viewItemListFlushScheduled) return;\n  viewItemListFlushScheduled = true;\n\n  requestAnimationFrame(function () {\n    viewItemListFlushScheduled = false;\n    if (pendingViewIndices.size === 0) return;\n\n    const indices = Array.from(pendingViewIndices).sort(function (left, right) {\n      return left - right;\n    });\n    pendingViewIndices.clear();\n    pushViewItemList(pageItems, indices, listMeta);\n  });\n}\n\n/**\n * [TRACK-1] \u5355\u5361 IntersectionObserver \u56DE\u8C03\n * @param {object[]} pageItems\n * @param {object} listMeta\n */\nfunction handleProductCardIntersection(pageItems, listMeta) {\n  return function (entries) {\n    entries.forEach(function (entry) {\n      if (!entry.isIntersecting || entry.intersectionRatio < CARD_VISIBLE_RATIO) return;\n\n      const cardEl = entry.target;\n      const cardIndex = Number(cardEl.dataset.ga4CardIndex);\n      if (!Number.isInteger(cardIndex) || cardIndex < 0 || cardIndex >= pageItems.length) return;\n      if (reportedCardIndices.has(cardIndex)) return;\n\n      reportedCardIndices.add(cardIndex);\n      if (listObserver) listObserver.unobserve(cardEl);\n\n      pendingViewIndices.add(cardIndex);\n      scheduleViewItemListFlush(pageItems, listMeta);\n    });\n  };\n}\n\n/**\n * [TRACK-1] \u66DD\u5149\u76D1\u542C\uFF1A\u5BF9\u6BCF\u5F20 .ro-search-product \u5355\u72EC observe\n * \u89E6\u53D1\u6761\u4EF6\u4E3A\u8BE5\u5361\u7247\u81EA\u8EAB\u53EF\u89C1\u6BD4\u4F8B \u2265 CARD_VISIBLE_RATIO\uFF0C\u4E0E\u5217\u8868\u5BB9\u5668\u603B\u9AD8\u5EA6\u65E0\u5173\n * @param {HTMLElement} container [data-search-product-card-container]\n * @param {object[]} pageItems\n * @param {object} listMeta\n */\nfunction observeProductCards(container, pageItems, listMeta) {\n  if (!container || pageItems.length === 0) return;\n\n  if (listObserver) {\n    listObserver.disconnect();\n    listObserver = null;\n  }\n  reportedCardIndices = new Set();\n  pendingViewIndices = new Set();\n  viewItemListFlushScheduled = false;\n\n  if (!window.IntersectionObserver) {\n    const allIndices = pageItems.map(function (_item, idx) {\n      return idx;\n    });\n    pushViewItemList(pageItems, allIndices, listMeta);\n    return;\n  }\n\n  const cards = container.querySelectorAll(PRODUCT_CARD_SELECTOR);\n  if (cards.length === 0) return;\n\n  listObserver = new IntersectionObserver(handleProductCardIntersection(pageItems, listMeta), {\n    threshold: [CARD_VISIBLE_RATIO],\n  });\n\n  cards.forEach(function (cardEl, cardIndex) {\n    if (cardIndex >= pageItems.length) return;\n    cardEl.dataset.ga4CardIndex = String(cardIndex);\n    listObserver.observe(cardEl);\n  });\n}\n\n// \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n// [TRACK-2] select_item \u2014 \u7F3A\u8D27\u6001 Learn More \u70B9\u51FB\n// \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n\n/**\n * [TRACK-2] \u5B9E\u9645\u4E0A\u62A5\u5165\u53E3\uFF1A\u4FEE\u6539 event_name / event_parameters \u8BF7\u6539\u8FD9\u91CC\n * @param {object} product \u88AB\u70B9\u51FB\u5361\u7247\u5BF9\u5E94 bootstrap \u9879\n * @param {number} index \u5361\u7247\u5728\u5F53\u9875\u7684 1-based \u5E8F\u53F7\n * @param {string} buttonName \u6309\u94AE\u6587\u6848\u6216 aria-label\n * @param {object} listMeta\n */\nfunction pushSelectItem(product, index, buttonName, listMeta) {\n  trackReport({\n    event_name: 'select_item',\n    event_parameters: {\n      currency: listMeta.currency,\n      item_list_name: listMeta.item_list_name,\n      item_list_id: listMeta.item_list_id,\n      button_name: buttonName,\n      items: [buildGa4Item(product, index, listMeta)],\n    },\n  });\n}\n\n/**\n * [TRACK-2] \u8F85\u52A9\uFF1ADOM \u5361\u7247\u5E8F\u53F7 \u2192 pageItems \u4E0B\u6807\uFF08\u4E0E .ro-search-product \u987A\u5E8F\u4E00\u81F4\uFF09\n * @param {HTMLElement} container\n * @param {HTMLElement} cardEl\n */\nfunction getCardIndex(container, cardEl) {\n  const cards = container.querySelectorAll('.ro-search-product');\n  return Array.prototype.indexOf.call(cards, cardEl) + 1;\n}\n\n/**\n * [TRACK-2] \u70B9\u51FB\u5904\u7406\uFF1A\u5339\u914D LEARN_MORE_LINK_SELECTOR \u2192 \u89E3\u6790\u5546\u54C1 \u2192 pushSelectItem\n * \u4F7F\u7528\u6355\u83B7\u9636\u6BB5\uFF0C\u907F\u514D\u8DF3\u8F6C\u5BFC\u81F4\u4E0A\u62A5\u4E22\u5931\n */\nfunction handleLearnMoreClick(event) {\n  const container = currentProductContainer;\n  const pageItems = currentPageItems;\n  const listMeta = currentListMeta;\n  if (!container || !listMeta || !pageItems.length) return;\n\n  const link = event.target.closest(LEARN_MORE_LINK_SELECTOR);\n  if (!link || !container.contains(link)) return;\n\n  const card = link.closest('.ro-search-product');\n  if (!card) return;\n\n  const index = getCardIndex(container, card);\n  if (index < 1 || index > pageItems.length) return;\n\n  const product = pageItems[index - 1];\n  const buttonEl = link.querySelector('.ro-btn-secondary-text');\n  const buttonName =\n    (buttonEl && buttonEl.textContent.trim()) || link.getAttribute('aria-label') || '';\n\n  pushSelectItem(product, index, buttonName, listMeta);\n}\n\n/** [TRACK-2] \u5168\u5C40\u53EA\u7ED1\u5B9A\u4E00\u6B21 document click\uFF08capture\uFF09 */\nfunction bindLearnMoreClickOnce() {\n  if (learnMoreClickBound) return;\n  learnMoreClickBound = true;\n  document.addEventListener('click', handleLearnMoreClick, true);\n}\n\n// \u2500\u2500\u2500 \u521D\u59CB\u5316\uFF1A\u5BF9\u63A5 ro-search-results-products.js \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * \u5165\u53E3\uFF1A\u8BFB\u53D6 bootstrap\u3001\u7ED1\u5B9A [TRACK-2] \u70B9\u51FB\u3001\u8BA2\u9605\u6E32\u67D3\u4E8B\u4EF6\u4EE5\u89E6\u53D1 [TRACK-1]\n * \u62D3\u5C55\u65B0\u57CB\u70B9\u65F6\uFF1A\u4F18\u5148\u65B0\u589E pushXxx + \u72EC\u7ACB\u76D1\u542C\uFF0C\u518D\u5728 products-rendered \u6216\u6B64\u5904\u6302\u8F7D\n */\nfunction initSearchResultsProductsGa4() {\n  const boot = window.__RO_SEARCH_PRODUCTS_BOOTSTRAP__;\n  if (!boot) return;\n\n  currentListMeta = getListMeta(boot);\n  bindLearnMoreClickOnce();\n\n  document.addEventListener('ro-search:products-rendered', function (event) {\n    const detail = event.detail || {};\n    const pageItems = detail.pageItems || [];\n    const container = detail.container;\n    if (!container || pageItems.length === 0) return;\n\n    currentPageItems = pageItems;\n    currentProductContainer = container;\n\n    // [TRACK-1] \u6BCF\u6B21\u5217\u8868 DOM \u66F4\u65B0\u540E\u91CD\u65B0\u89C2\u5BDF\u5404\u5546\u54C1\u5361\u66DD\u5149\n    observeProductCards(container, pageItems, currentListMeta);\n  });\n}\n\ninitSearchResultsProductsGa4();\n"],
  "mappings": "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",
  "names": []
}
