{
  "version": 3,
  "sources": ["/cdn/shop/t/70/assets/ro-search-modal-ga4.js?vTrack=202605191002"],
  "sourcesContent": ["/**\r\n * \u641C\u7D22\u5F39\u7A97 GA4 \u57CB\u70B9\r\n *\r\n * \u4E8B\u4EF6\u540D\u5747\u4E3A search\uFF0C\u901A\u8FC7 search_type \u533A\u5206\uFF1A\r\n * - normal search\uFF1A\u56DE\u8F66\u3001\u5E95\u90E8 Search \u6309\u94AE\r\n * - recommend search\uFF1A\u8054\u60F3\u4E0B\u62C9\u9879\r\n * - recommendation banner\uFF1ARecommendations \u533A\uFF08banner / \u4EA7\u54C1\u5361\u7247 / \u6587\u5B57\u94FE\uFF09\r\n */\r\nimport { ready } from \"//robodev2.myshopify.com/cdn/shop/t/70/assets/GA4-track-directive-core.js?v=68244902193130461381781163038&vTrack=202605191002\";\r\nimport { trackReport } from \"//robodev2.myshopify.com/cdn/shop/t/70/assets/GA4-track-directive-report.js?v=44409563876336058011781162916&vTrack=202605191002\";\r\n\r\nconst MODAL_ID = 'roSearchModal';\r\nconst INPUT_SELECTOR = '#roSearchContent .ro-input__input';\r\n\r\n/** \u4E0E roborock-search-modal.liquid DOM \u4E00\u4E00\u5BF9\u5E94 */\r\nconst RECOMMENDATION_BANNER_SELECTOR =\r\n  'a.ro-search-recommend, a.search-recommend-item';\r\nconst RECOMMEND_SEARCH_SELECTOR = 'a.search-results-item';\r\nconst NORMAL_SEARCH_BTN_SELECTOR = 'a.search-btn';\r\n\r\nlet initialized = false;\r\n\r\n/**\r\n * \u5224\u65AD\u70B9\u51FB\u662F\u5426\u843D\u5728\u67D0\u533A\u57DF\u5185\u7684\u76EE\u6807\u94FE\u63A5\u4E0A\u3002\r\n * root.contains \u9650\u5B9A\u8303\u56F4\uFF1Blink.matches \u53EA\u7528\u300C\u6807\u7B7E+\u7C7B\u540D\u300D\uFF0C\u907F\u514D `#\u7236\u7EA7 a.xxx` \u590D\u5408\u9009\u62E9\u5668\u5339\u914D\u4E0D\u51C6\u3002\r\n */\r\nfunction isLinkIn(root, link, selector) {\r\n  return !!root && !!link && root.contains(link) && link.matches(selector);\r\n}\r\n\r\n/**\r\n * \u8BFB\u53D6\u5F39\u7A97\u5185\u641C\u7D22\u8BCD\r\n * @param {HTMLElement} modal\r\n * @returns {string}\r\n */\r\nfunction getSearchTerm(modal) {\r\n  const input = modal.querySelector(INPUT_SELECTOR);\r\n  return input ? input.value.trim() : '';\r\n}\r\n\r\n/**\r\n * \u94FE\u63A5\u5C55\u793A\u6587\u6848\uFF08\u542B\u9AD8\u4EAE mark \u5185\u7684\u6587\u5B57\uFF0C\u4E0D\u542B HTML \u6807\u7B7E\uFF09\r\n * @param {HTMLAnchorElement} link\r\n * @returns {string}\r\n */\r\nfunction getLinkText(link) {\r\n  return (link.getAttribute('aria-label') || link.textContent || '').trim();\r\n}\r\n\r\n/**\r\n * \u4E0A\u62A5 search \u4E8B\u4EF6\r\n * @param {string} searchType\r\n * @param {string} searchTerm\r\n * @param {Record<string, string>} [extra]\r\n */\r\nfunction pushSearchEvent(searchType, searchTerm, extra = {}) {\r\n  trackReport({\r\n    event_name: 'search',\r\n    event_parameters: Object.assign(\r\n      {\r\n        search_type: searchType,\r\n        search_term: searchTerm,\r\n      },\r\n      extra\r\n    ),\r\n  });\r\n}\r\n\r\n/**\r\n * \u7ED1\u5B9A\u5F39\u7A97\u5185\u5168\u90E8\u641C\u7D22\u76F8\u5173\u57CB\u70B9\uFF08\u4EC5\u521D\u59CB\u5316\u4E00\u6B21\uFF09\r\n */\r\nfunction initSearchModalGa4() {\r\n  if (initialized) return;\r\n\r\n  const modal = document.getElementById(MODAL_ID);\r\n  if (!modal) return;\r\n\r\n  const input = modal.querySelector(INPUT_SELECTOR);\r\n  if (!input) return;\r\n\r\n  initialized = true;\r\n\r\n  const recommendRoot = modal.querySelector('#SearchRecommend');\r\n  const resultsRoot = modal.querySelector('#SearchResults');\r\n\r\n  // normal search\uFF1A\u56DE\u8F66\uFF08\u975E\u7A7A\uFF09\uFF0C\u4E0D\u963B\u6B62\u9ED8\u8BA4\u8DF3\u8F6C\r\n  input.addEventListener('keydown', function (event) {\r\n    if (event.key !== 'Enter') return;\r\n    const searchTerm = getSearchTerm(modal);\r\n    if (!searchTerm) return;\r\n    pushSearchEvent('normal search', searchTerm);\r\n  });\r\n\r\n  // \u6355\u83B7\u9636\u6BB5\uFF1A\u5728 <a> \u8DF3\u8F6C\u524D\u5B8C\u6210\u4E0A\u62A5\r\n  modal.addEventListener(\r\n    'click',\r\n    function (event) {\r\n      const link = event.target.closest('a');\r\n      if (!link) return;\r\n\r\n      const searchTerm = getSearchTerm(modal);\r\n      // Recommendations \u533A\uFF1Abanner / \u4EA7\u54C1\u5361\u7247 / \u6587\u5B57\u94FE\r\n      if (isLinkIn(recommendRoot, link, RECOMMENDATION_BANNER_SELECTOR)) {\r\n        pushSearchEvent('recommendation banner', searchTerm, {\r\n          product_name: link.href || '',\r\n        });\r\n        return;\r\n      }\r\n\r\n      // \u8054\u60F3\u4E0B\u62C9\u9879\uFF1Asearch_term \u4E3A\u88AB\u70B9\u51FB\u6761\u76EE\u7684\u5B8C\u6574\u6587\u6848\uFF0C\u975E\u8F93\u5165\u6846\u5173\u952E\u8BCD\r\n      if (isLinkIn(resultsRoot, link, RECOMMEND_SEARCH_SELECTOR)) {\r\n        pushSearchEvent('recommend search', getLinkText(link));\r\n        return;\r\n      }\r\n\r\n      // \u5E95\u90E8 Search \u6309\u94AE\r\n      if (isLinkIn(resultsRoot, link, NORMAL_SEARCH_BTN_SELECTOR)) {\r\n        if (!searchTerm) return;\r\n        pushSearchEvent('normal search', searchTerm);\r\n      }\r\n    },\r\n    true\r\n  );\r\n}\r\n\r\nready(initSearchModalGa4);\r\n"],
  "mappings": "AAQA,OAAS,UAAa,gIACtB,OAAS,gBAAmB,kIAE5B,MAAM,SAAW,gBACX,eAAiB,oCAGjB,+BACJ,iDACI,0BAA4B,wBAC5B,2BAA6B,eAEnC,IAAI,YAAc,GAMlB,SAAS,SAAS,KAAM,KAAM,SAAU,CACtC,MAAO,CAAC,CAAC,MAAQ,CAAC,CAAC,MAAQ,KAAK,SAAS,IAAI,GAAK,KAAK,QAAQ,QAAQ,CACzE,CAOA,SAAS,cAAc,MAAO,CAC5B,MAAM,MAAQ,MAAM,cAAc,cAAc,EAChD,OAAO,MAAQ,MAAM,MAAM,KAAK,EAAI,EACtC,CAOA,SAAS,YAAY,KAAM,CACzB,OAAQ,KAAK,aAAa,YAAY,GAAK,KAAK,aAAe,IAAI,KAAK,CAC1E,CAQA,SAAS,gBAAgB,WAAY,WAAY,MAAQ,CAAC,EAAG,CAC3D,YAAY,CACV,WAAY,SACZ,iBAAkB,OAAO,OACvB,CACE,YAAa,WACb,YAAa,UACf,EACA,KACF,CACF,CAAC,CACH,CAKA,SAAS,oBAAqB,CAC5B,GAAI,YAAa,OAEjB,MAAM,MAAQ,SAAS,eAAe,QAAQ,EAC9C,GAAI,CAAC,MAAO,OAEZ,MAAM,MAAQ,MAAM,cAAc,cAAc,EAChD,GAAI,CAAC,MAAO,OAEZ,YAAc,GAEd,MAAM,cAAgB,MAAM,cAAc,kBAAkB,EACtD,YAAc,MAAM,cAAc,gBAAgB,EAGxD,MAAM,iBAAiB,UAAW,SAAU,MAAO,CACjD,GAAI,MAAM,MAAQ,QAAS,OAC3B,MAAM,WAAa,cAAc,KAAK,EACjC,YACL,gBAAgB,gBAAiB,UAAU,CAC7C,CAAC,EAGD,MAAM,iBACJ,QACA,SAAU,MAAO,CACf,MAAM,KAAO,MAAM,OAAO,QAAQ,GAAG,EACrC,GAAI,CAAC,KAAM,OAEX,MAAM,WAAa,cAAc,KAAK,EAEtC,GAAI,SAAS,cAAe,KAAM,8BAA8B,EAAG,CACjE,gBAAgB,wBAAyB,WAAY,CACnD,aAAc,KAAK,MAAQ,EAC7B,CAAC,EACD,MACF,CAGA,GAAI,SAAS,YAAa,KAAM,yBAAyB,EAAG,CAC1D,gBAAgB,mBAAoB,YAAY,IAAI,CAAC,EACrD,MACF,CAGA,GAAI,SAAS,YAAa,KAAM,0BAA0B,EAAG,CAC3D,GAAI,CAAC,WAAY,OACjB,gBAAgB,gBAAiB,UAAU,CAC7C,CACF,EACA,EACF,CACF,CAEA,MAAM,kBAAkB",
  "names": []
}
