{
  "version": 3,
  "sources": ["/cdn/shop/t/68/assets/ayunel-cart-drawer.js?cb=1791266023"],
  "sourcesContent": ["/**\n * AYUNEL \u52A0\u8D2D\u5F39\u7A97 \u00B7 \u884C\u4E3A\u5C42(Horizon 4.2 \u8FC1\u79FB)\u30022026-09-24 / 2026-10-03\u3002\n *\n * \u7531 snippets/ayunel-cart-drawer-assets.liquid \u4EE5 <script type=\"module\"> \u5F15\u5165(\u4E0E\u5B98\u65B9 cart-drawer.js \u540C\u5728\u62BD\u5C49\u5F00\u5173\u4E4B\u5185)\u3002\n * \u6CBF\u7528 9/24 \u81EA\u5EFA\u884C\u4E3A\u5C42;4.2 \u8D2D\u4E70\u53EF\u9760\u6027\u8865\u4E01\u53E6\u5728\u5B98\u65B9 assets \u767B\u8BB0\u3002\u672C\u6587\u4EF6\u8D1F\u8D23\u4E94\u4EF6\u4E8B(\u2460\u2013\u2462 2026-09-24 \u4E24\u8DEF\u72EC\u7ACB\u590D\u5BA1\u63D0\u51FA\u3001\u9010\u6761\u8BFB\u5B98\u65B9\u6E90\u7801 + \u9884\u89C8\u5B9E\u6D4B\u6838\u5B9E;\u2463\u2464 \u667A\u9E4F iPhone \u5B9E\u6D4B\u63D0\u51FA):\n *\n * \u524D\u63D0:\u4E3B\u9898\u8BBE\u7F6E cart_type \u4FDD\u6301 page(\u53F3\u4E0A\u89D2\u8D2D\u7269\u8F66\u56FE\u6807\u7167\u65E7\u94FE\u63A5 /cart,\u667A\u9E4F 2026-09-24 \u5B9A);\u5F39\u7A97\u7531 snippets/cart-drawer.liquid\n * \u6539\u4E3A\u975E /cart \u9875\u4E00\u5F8B\u6E32\u67D3,\u5B98\u65B9\u4E0D\u4F1A\u81EA\u52A8\u6253\u5F00\u5B83 \u2014\u2014 \u6253\u5F00\u53EA\u8D70\u8FD9\u91CC\u7684 \u2460\u3002\n *\n * \u2460 \u52A0\u8D2D\u3010\u6210\u529F\u540E\u3011\u624D\u5F39\u3002\u5B98\u65B9 auto-open(\u53EA\u5728 cart_type=drawer \u65F6\u6709)\u5728\u8F66\u4E0D\u7A7A\u65F6\u4E00\u53D1\u8BF7\u6C42\u5C31\u5F00\u3001\u5931\u8D25\u4E5F\u4E0D\u5173;\u8FD9\u91CC\u4E0D\u7528\u5B83\u3002\n *    \u5B98\u65B9 cart-drawer.js \u5728\u8F66\u4E0D\u7A7A\u65F6,\u52A0\u8D2D\u8BF7\u6C42\u4E00\u53D1\u51FA\u5C31\u5F00\u5F39\u7A97\u3001\u5931\u8D25(\u8D85\u5E93\u5B58 422 / \u65AD\u7F51)\u4E5F\u4E0D\u5173:\n *    \u624B\u673A\u4E0A\u5F39\u5C42\u76D6\u4F4F\u5546\u54C1\u9875\u300C\u30AB\u30FC\u30C8\u306B\u8FFD\u52A0\u300D\u4E0B\u65B9\u7684\u5931\u8D25\u63D0\u793A,\u5BA2\u4EBA\u770B\u7740\u65E7\u8D2D\u7269\u8F66\u4EE5\u4E3A\u5DF2\u7ECF\u52A0\u4E0A\u3002\n *    SO\u00C9JU \u540C\u6B3E:\u6309\u94AE\u8F6C\u5708,\u6210\u529F\u540E\u624D\u5F39\u3002\u5931\u8D25 \u2192 \u4E0D\u5F39,\u5931\u8D25\u63D0\u793A\u7559\u5728\u539F\u5904\u3002\n *    \u6765\u6E90\u5728\u6253\u5F00\u7740\u7684\u6A21\u6001\u5F39\u7A97\u91CC(\u5C3A\u7801\u8BCA\u65AD\u7B49)\u2192 \u7B49\u90A3\u4E2A\u5F39\u7A97\u5173\u6389\u518D\u5F00(\u7167\u5B98\u65B9 cart-drawer.js \u7684\u5904\u7406,\u907F\u514D\u53E0\u4E24\u5C42\u6A21\u6001)\u3002\n *    \u4E8B\u4EF6\u6CA1\u5E26 promise(\u62FF\u4E0D\u5230\u6210\u8D25)\u2192 \u4E0D\u5F39\u3002\u672C\u4E3B\u9898\u4E09\u4E2A\u52A0\u8D2D\u5165\u53E3(\u5546\u54C1\u9875 product-form / 2\u70B9\u30BB\u30C3\u30C8 / \u6536\u85CF\u9875)\u90FD\u5E26 promise\n *    \u4E14\u6210\u8D25\u90FD resolve \u51FA detail.didError(\u6807\u51C6 CartLinesUpdateEvent \u6784\u9020\u65F6\u5C31\u8981\u6C42 promise)\u3002\n *    \u56DE\u5305\u6CA1\u5E26\u5F39\u7A97\u8FD9\u4E00\u6BB5 sections(2\u70B9\u30BB\u30C3\u30C8 / \u6536\u85CF\u9875)\u2192 \u5148\u6309\u5B98\u65B9\u540C\u53E3\u5F84\u91CD\u62C9\u3001\u6362\u597D\u5185\u5BB9\u518D\u5F39,\u4E0D\u5148\u5F39\u4E00\u4E2A\u65E7\u8F66 / \u7A7A\u8F66\n *    (\u7EC8\u5BA1\u53D1\u73B0:\u5426\u5219\u7EA6\u534A\u79D2\u5185\u663E\u793A\u52A0\u8D2D\u524D\u7684\u5185\u5BB9,\u65E7\u884C\u8FD8\u53EF\u70B9\u3001\u6309\u884C\u53F7\u6539\u8F66)\u3002\u91CD\u62C9\u4E0E\u5B98\u65B9 component-cart-items \u7684\u540C\u4E00\u6B21\u91CD\u62C9\n *    \u4F1A\u88AB sectionRenderer \u6309 section \u5408\u5E76;\u6700\u591A\u7B49 4 \u79D2,\u8D85\u65F6\u7167\u5E38\u5F39(\u5B81\u53EF\u665A\u4E00\u70B9\u5237\u65B0,\u4E5F\u522B\u8BA9\u5BA2\u4EBA\u4EE5\u4E3A\u6CA1\u52A0\u4E0A)\u3002\n *\n * \u2461 \u6D4F\u89C8\u5668\u81EA\u5DF1\u5173\u5F39\u7A97(\u5B89\u5353\u8FD4\u56DE\u952E / \u8FD4\u56DE\u624B\u52BF = close request)\u65F6\u8865\u4E0A\u5B98\u65B9\u7684\u6536\u5C3E\u3002\n *    \u5B98\u65B9 theme-drawer.js \u53EA\u62E6\u4E86\u952E\u76D8 Esc(keydown preventDefault);dialog \u88AB\u6D4F\u89C8\u5668\u76F4\u63A5 close() \u540E,\n *    <theme-drawer open> \u6807\u8BB0\u548C\u6574\u9875\u6EDA\u52A8\u9501\u90FD\u7559\u7740 \u2192 \u5546\u54C1\u9875\u6EDA\u4E0D\u52A8\u3001\u4E4B\u540E\u52A0\u8D2D\u4E0D\u518D\u5F39(\u9884\u89C8\u6A21\u62DF\u590D\u73B0:overflow \u4ECD hidden)\u3002\n *    cancel \u80FD\u62E6\u5C31\u62E6\u4E0B\u3001\u6539\u8D70\u5B98\u65B9 close()(\u6709\u9000\u573A\u52A8\u753B);\u62E6\u4E0D\u4F4F(\u65E0\u7528\u6237\u6FC0\u6D3B\u65F6 cancel \u4E0D\u53EF\u53D6\u6D88)\u5C31\u5728 close \u4E8B\u4EF6\u91CC\u8865\u8C03 close()\n *    \u2014\u2014 \u5B98\u65B9 #closeDialog \u89C1 dialog \u5DF2\u5173\u4F1A\u8DF3\u8FC7\u52A8\u753B,\u53EA\u505A\u89E3\u9501 / \u6E05\u6807\u8BB0 / \u8FD8\u7126\u70B9\u3002\n *    \u5206\u8FA8\u300C\u8C01\u5173\u7684\u300D\u9760\u4E24\u4EF6\u4E8B:\u5B98\u65B9 #closeDialog \u5148\u6458 open \u6807\u8BB0\u518D dialog.close()(\u2192 isOpen \u4E3A\u5047,\u8DF3\u8FC7);\n *    \u5B98\u65B9\u6362\u5F62\u6001(\u8DE8 990 \u5BBD\u7684 #onModalBreakpointChange\u3001#bringToFront\u3001\u5173\u95ED\u52A8\u753B\u4E2D\u8865\u5F00)\u662F close() \u540E\u7ACB\u523B\u91CD\u5F00,\n *    close \u4E8B\u4EF6\u5230\u8FBE\u65F6 dialog \u5DF2\u91CD\u65B0\u6253\u5F00(\u2192 dialog.open \u4E3A\u771F,\u8DF3\u8FC7;\u7EC8\u5BA1\u5B9E\u6D4B\u5426\u5219 iPad \u8F6C\u5C4F\u4F1A\u628A\u5F39\u7A97\u5173\u6389)\u3002\n *\n * \u2462 \u9875\u9762\u4ECE\u6D4F\u89C8\u5668\u7F13\u5B58\u6062\u590D\u65F6,\u5F39\u7A97\u82E5\u8FD8\u5F00\u7740\u5C31\u5173\u6389;\u5185\u5BB9\u91CD\u62C9\u5DF2\u4EA4\u7ED9 Horizon 4.2 \u539F\u751F component-cart-items\u3002\n *    \u573A\u666F:\u70B9\u300C\u6CE8\u6587\u5185\u5BB9\u3092\u78BA\u8A8D\u3059\u308B\u300D\u53BB /cart(\u666E\u901A\u94FE\u63A5,\u4E0D\u5148\u5173\u5F39\u7A97)\u2192 \u5728\u8D2D\u7269\u8F66\u9875\u6539\u4E86\u8F66 / \u8D60\u54C1\u88AB\u81EA\u52A8\u52A0\u8FDB\u6765 \u2192 \u6309\u8FD4\u56DE\u3002\n *    \u7F13\u5B58\u91CC\u7684\u5546\u54C1\u9875\u5F39\u7A97\u8FD8\u5F00\u7740\u3001\u5185\u5BB9\u662F\u65E7\u8F66;\u5F39\u7A97\u91CC\u6539\u6570\u91CF / \u5220\u9664\u662F\u6309\u300C\u7B2C\u51E0\u884C\u300D\u4E0B\u5355\u7684 \u2192 \u53EF\u80FD\u6539\u5230\u53E6\u4E00\u4EF6\u5546\u54C1\u3002\n *    ayunel.com \u5546\u54C1\u9875 cache-control = private, max-age=0(\u4E0D\u662F no-store)\u21D2 Safari / Chrome \u90FD\u4F1A\u8D70\u7F13\u5B58\u6062\u590D\u3002\n *    Horizon 4.2 \u5DF2\u8865 persisted / back_forward \u4E24\u901A\u9053\u91CD\u62C9;\u8FD9\u91CC\u4E0D\u518D\u91CD\u590D\u91CD\u62C9\u3002\n *    (\u9875\u5934\u4EF6\u6570\u5F52\u5B98\u65B9 cart-icon.js:\u5B83\u53EA\u5728\u300C\u6700\u540E\u4E00\u6B21\u6539\u8F66\u4E0D\u5230 10 \u79D2\u300D\u65F6\u624D\u5728 pageshow \u4FEE\u6B63 \u2014\u2014 \u6574\u9875\u8D2D\u7269\u8F66\u65F6\u4EE3\u5C31\u662F\u8FD9\u6837,\u672C\u811A\u672C\u4E0D\u63A5\u624B\u3002)\n *\n * \u2463 \u70B9\u5F39\u7A97\u5916\u9762\u5C31\u5173(SO\u00C9JU \u540C\u6B3E;\u667A\u9E4F 2026-09-24 iPhone \u5B9E\u6D4B\u300C\u53EA\u80FD\u70B9\u53C9\u5173\u300D)\u3002\n *    \u5B98\u65B9\u9760\u70B9 ::backdrop(isClickedOutside)\u5173,Chrome \u80FD\u5173\u3001iPhone Safari \u4E0D\u5173 \u2014\u2014 \u70B9\u6697\u5E95\u4F1A\u4E0D\u4F1A\u9001\u5230 dialog \u53D6\u51B3\u4E8E\u6D4F\u89C8\u5668\u3002\n *    \u624B\u673A(<750)\u6539\u6210\u5F39\u7A97\u672C\u4F53\u94FA\u6EE1\u6574\u5C4F\u3001\u4E0A\u65B9 96px \u900F\u660E(\u6837\u5F0F\u5728 ayunel-cart-drawer-assets),\u70B9\u7684\u662F dialog \u81EA\u5DF1 \u2192 \u8FD9\u91CC\u5173\u3002\n *    \u5224\u636E = \u70B9\u51FB\u76EE\u6807\u5C31\u662F\u5F39\u7A97\u9762\u677F dialog \u672C\u8EAB\u3001\u4E14\u843D\u70B9\u4E0D\u5728\u767D\u8272\u5185\u5C42\u91CC;\u5F39\u7A97\u91CC\u8FD8\u5F00\u7740\u522B\u7684\u5C0F\u5F39\u7A97\u65F6\u4E0D\u5173(\u540C\u5B98\u65B9)\u3002\n *\n * \u2464 \u5F39\u7A97\u91CC\u6ED1\u52A8\u53EA\u6EDA\u5F39\u7A97\u91CC\u771F\u80FD\u6EDA\u7684\u533A\u57DF(\u667A\u9E4F 2026-09-24 iPhone \u5B9E\u6D4B\u300C\u5F39\u7A97\u91CC\u4E00\u6ED1,\u540E\u9762\u9875\u9762\u6574\u4E2A\u8DDF\u7740\u6ED1\u300D;\n *    \u7B2C\u4E00\u7248\u53EA\u6309\u300C\u5728\u4E0D\u5728\u5546\u54C1\u5217\u8868\u90A3\u4E00\u5927\u5757\u91CC\u300D\u653E\u884C,\u9876\u90E8\u514D\u8FD0\u8D39\u5757 / \u5E95\u90E8\u5408\u8A08\u4E5F\u5728\u90A3\u4E00\u5757\u91CC\u4F46\u672C\u8EAB\u6EDA\u4E0D\u52A8 \u2192 iPhone \u628A\u6ED1\u52A8\u4F20\u7ED9\u4E86\u6574\u9875,\u4E8C\u6D4B\u4ECD\u52A8)\u3002\n *    \u73B0\u5224\u636E = \u624B\u6307\u4E0B\u5F80\u4E0A\u627E\u300C\u7AD6\u5411\u6EDA\u5F97\u52A8\u3001\u4E14\u8FD9\u4E2A\u65B9\u5411\u8FD8\u6CA1\u5230\u5934\u300D\u7684\u533A\u57DF,\u627E\u4E0D\u5230\u5C31\u62E6 \u2014\u2014 \u5230\u5934\u65F6\u4E5F\u62E6,\u4E0D\u9760 overscroll-behavior\n *    (\u90A3\u6761\u6837\u5F0F\u7167\u7559\u4F5C\u53CC\u4FDD\u9669)\u3002\u6A2A\u5411\u624B\u52BF\u3001\u53CC\u6307\u7F29\u653E\u4E0D\u62E6;\u89E6\u6478\u76D1\u542C\u53EA\u5728\u5F39\u7A97\u6253\u5F00\u671F\u95F4\u6302\u7740(\u5173\u65F6\u6458\u6389,\u4E0D\u62D6\u6162\u5168\u7AD9\u6EDA\u52A8)\u3002\n *\n * \u53EA\u8BA4\u5F39\u7A97\u9762\u677F\u672C\u8EAB(<theme-drawer id=\"cart-drawer\"> \u7684\u76F4\u63A5\u5B50 dialog):\u5F39\u7A97\u91CC\u53EF\u80FD\u5D4C\u7740\u5B98\u65B9\u7684\u5C0F dialog\n * (\u5546\u54C1\u300C\u958B\u793A\u300D\u8BF4\u660E cart-disclosure-modal),\u5B83\u7684 cancel / close / click \u4E0D\u8BB8\u88AB\u5F53\u6210\u6574\u4E2A\u5F39\u7A97(\u7EC8\u5BA1\u53D1\u73B0)\u3002\n *    \u2265750 \u4ECD\u662F\u5B98\u65B9\u62BD\u5C49 + ::backdrop,\u5B98\u65B9\u4E0E\u8FD9\u91CC\u90FD\u4F1A\u8C03 close(),\u7B2C\u4E8C\u6B21\u88AB\u5B98\u65B9 #isClosing \u6321\u6389,\u4E0D\u4F1A\u91CD\u590D\u3002\n *\n * \u5B88\u536B:tests/test_theme_cart_drawer.py(\u9759\u6001\u5951\u7EA6);\u4EA4\u4E92:\u9884\u89C8\u771F\u6D4F\u89C8\u5668\u8D70\u67E5(\u89C1 08-themes/newhouse-20260827/HANDOFF-20260924-\u52A0\u8D2D\u5F39\u7A97.md)\u3002\n */\nimport { StandardEvents } from '@shopify/events';\nimport { sectionRenderer } from '@theme/section-renderer';\n\nconst DRAWER_ID = 'cart-drawer';\nconst SECTION_ID = 'cart-drawer-section';\n\n/** @returns {HTMLElement & {isOpen: boolean, open: () => void, close: () => Promise<void>} | null} */\nconst cartDrawer = () => /** @type {any} */ (document.getElementById(DRAWER_ID));\n\n/** \u4E8B\u4EF6\u76EE\u6807\u662F\u4E0D\u662F\u8D2D\u7269\u8F66\u5F39\u7A97\u7684\u9762\u677F dialog \u672C\u8EAB(cancel / close \u90FD\u4E0D\u5192\u6CE1,\u5728\u6355\u83B7\u9636\u6BB5\u63A5;\u5D4C\u5957\u7684\u5C0F dialog \u4E0D\u7B97) */\nconst drawerOfDialog = (target) =>\n  target instanceof HTMLDialogElement && target.parentElement?.id === DRAWER_ID\n    ? /** @type {any} */ (target.parentElement)\n    : null;\n\nconst REFETCH_WAIT_MS = 4000;\n\n/** \u6309\u5B98\u65B9 component-cart-items \u5BF9\u62BD\u5C49\u7684\u53E3\u5F84\u91CD\u62C9\u5F39\u7A97\u5185\u5BB9(hydration\u3001\u4E0D\u7528\u7F13\u5B58\u3001\u7A7A\u8F66\u65F6\u8865\u88C5\u6837\u5F0F) */\nconst refetchDrawer = (drawer) =>\n  sectionRenderer.renderSection(SECTION_ID, {\n    cache: false,\n    mode: 'hydration',\n    injectStylesheet: drawer.querySelector('[data-cart-drawer-empty]') !== null,\n  });\n\n/**\n * \u4ECE\u624B\u6307\u4E0B\u7684\u5143\u7D20\u5F80\u4E0A\u627E(\u627E\u5230\u5F39\u7A97\u4E3A\u6B62):\u6709\u6CA1\u6709\u4E00\u4E2A\u7AD6\u5411\u80FD\u6EDA\u3001\u4E14\u8FD9\u6B21\u6ED1\u52A8\u65B9\u5411\u8FD8\u6CA1\u6EDA\u5230\u5934\u7684\u533A\u57DF\u3002\n * dy > 0 = \u624B\u6307\u5F80\u4E0B\u62D6 = \u5185\u5BB9\u5F80\u4E0A\u56DE\u6EDA;dy < 0 = \u624B\u6307\u5F80\u4E0A\u63A8 = \u5185\u5BB9\u5F80\u4E0B\u6EDA\u3002\n * \u53EA\u770B\u300C\u771F\u7684\u6EDA\u5F97\u52A8\u300D:overflow-y \u662F auto/scroll \u4E14\u5185\u5BB9\u9AD8\u4E8E\u53EF\u89C6\u9AD8\u5EA6 \u2014\u2014 \u9876\u90E8\u514D\u8FD0\u8D39\u5757\u3001\u5E95\u90E8\u5408\u8A08\u867D\u7136\u5728\u5185\u5BB9\u533A\u91CC,\n * \u4F46\u5185\u5BB9\u533A\u672C\u8EAB\u6EDA\u4E0D\u52A8(\u5438\u5E95\u6A21\u5F0F\u4E0B\u6EDA\u7684\u662F\u5546\u54C1\u5217\u8868),\u6240\u4EE5\u5B83\u4EEC\u4E0B\u9762\u627E\u4E0D\u5230\u53EF\u6EDA\u533A\u57DF \u2192 \u62E6\u6389(\u667A\u9E4F 2026-09-24 iPhone \u5B9E\u6D4B)\u3002\n */\nfunction canScrollInDirection(target, boundary, dy) {\n  for (let el = target; el && el !== boundary; el = el.parentElement) {\n    const overflowY = getComputedStyle(el).overflowY;\n    if ((overflowY === 'auto' || overflowY === 'scroll') && el.scrollHeight > el.clientHeight + 1) {\n      if (dy > 0 && el.scrollTop > 0) return true;\n      if (dy < 0 && el.scrollTop + el.clientHeight < el.scrollHeight - 1) return true;\n      if (dy === 0) return true;\n      // \u8FD9\u4E00\u5C42\u5728\u8FD9\u4E2A\u65B9\u5411\u5DF2\u5230\u5934:\u7EE7\u7EED\u5F80\u5916\u627E(\u5916\u5C42\u4E5F\u53EF\u80FD\u8FD8\u80FD\u6EDA)\n    }\n  }\n  return false;\n}\n\nif (!window.__aynCartDrawerBound) {\n  window.__aynCartDrawerBound = true;\n\n  // \u2460 \u52A0\u8D2D\u6210\u529F\u540E\u624D\u5F39\n  document.addEventListener(StandardEvents.cartLinesUpdate, (event) => {\n    if (event.action !== 'add' || !event.promise) return;\n    const sourceModal = event.target instanceof Element ? event.target.closest('dialog:modal') : null;\n\n    event.promise\n      .then(async (result) => {\n        // AYUNEL OVERRIDE 2026-10-03: POST succeeded but cart GET failed; product form shows a confirmed-add /cart link.\n        // Do not open an old drawer over that message or invite a second add.\n        if (result?.detail?.didError || result?.detail?.cartRefreshFailed) return;\n        const drawer = cartDrawer();\n        if (!drawer) return;\n        if (!result?.detail?.sections?.[SECTION_ID]) {\n          // 2\u70B9\u30BB\u30C3\u30C8 / \u6536\u85CF\u9875:\u56DE\u5305\u4E0D\u5E26\u5F39\u7A97\u5185\u5BB9 \u2192 \u5148\u6362\u597D\u518D\u5F39(\u5931\u8D25\u6216\u8D85\u65F6\u4E5F\u7167\u5E38\u5F39)\n          await Promise.race([\n            refetchDrawer(drawer).catch(() => {}),\n            new Promise((resolve) => setTimeout(resolve, REFETCH_WAIT_MS)),\n          ]);\n        }\n        const openDrawer = () => {\n          if (!drawer.isOpen) drawer.open();\n        };\n        if (sourceModal instanceof HTMLDialogElement && sourceModal.open) {\n          sourceModal.addEventListener('close', openDrawer, { once: true });\n        } else {\n          openDrawer();\n        }\n      })\n      .catch(() => {\n        // \u52A0\u8D2D\u88AB\u4E2D\u6B62 / \u51FA\u9519:\u4E0D\u5F39(\u5931\u8D25\u63D0\u793A\u7531\u5404\u5165\u53E3\u81EA\u5DF1\u663E\u793A)\n      });\n  });\n\n  // \u2461 \u6D4F\u89C8\u5668\u76F4\u63A5\u5173\u5F39\u7A97:\u80FD\u62E6\u5C31\u6539\u8D70\u5B98\u65B9 close(),\u62E6\u4E0D\u4F4F\u5C31\u8865\u6536\u5C3E\n  document.addEventListener(\n    'cancel',\n    (event) => {\n      const drawer = drawerOfDialog(event.target);\n      if (!drawer || !drawer.isOpen) return;\n      event.preventDefault();\n      drawer.close();\n    },\n    true\n  );\n\n  document.addEventListener(\n    'close',\n    (event) => {\n      const drawer = drawerOfDialog(event.target);\n      // dialog \u5DF2\u88AB\u5B98\u65B9\u91CD\u65B0\u6253\u5F00(\u6362\u5F62\u6001 / \u8865\u5F00)= \u4E0D\u662F\u6D4F\u89C8\u5668\u66FF\u5BA2\u4EBA\u5173\u7684,\u8DF3\u8FC7\n      if (drawer?.isOpen && !event.target.open) drawer.close();\n    },\n    true\n  );\n\n  // \u2463 \u70B9\u5F39\u7A97\u5916\u9762(\u624B\u673A:\u4E0A\u65B9\u900F\u660E\u90A3\u622A)\u5C31\u5173 \u2014\u2014 SO\u00C9JU \u540C\u6B3E\n  document.addEventListener(\n    'click',\n    (event) => {\n      const drawer = drawerOfDialog(event.target);\n      if (!drawer?.isOpen) return;\n      const dialog = /** @type {HTMLDialogElement} */ (event.target);\n      if (dialog.querySelector('dialog[open]')) return; // \u5F39\u7A97\u91CC\u8FD8\u5F00\u7740\u522B\u7684\u5C0F\u5F39\u7A97\u65F6\u4E0D\u5173(\u540C\u5B98\u65B9 #hasOpenNestedDialog)\n      const inner = dialog.querySelector('.cart-drawer__inner');\n      if (inner) {\n        const r = inner.getBoundingClientRect();\n        const inside =\n          event.clientX >= r.left && event.clientX <= r.right && event.clientY >= r.top && event.clientY <= r.bottom;\n        if (inside) return;\n      }\n      drawer.close();\n    },\n    true\n  );\n\n  // \u2464 \u5F39\u7A97\u5F00\u7740\u65F6:\u624B\u6307\u4E0B\u9762\u6CA1\u6709\u300C\u8FD9\u4E2A\u65B9\u5411\u8FD8\u80FD\u6EDA\u300D\u7684\u533A\u57DF \u2192 \u8FD9\u4E00\u4E0B\u6ED1\u52A8\u62E6\u6389(\u4E0D\u8BA9\u6EDA\u52A8\u7A7F\u900F\u5230\u540E\u9762\u7684\u5546\u54C1\u9875)\n  //    \u53EA\u5728\u5F39\u7A97\u6253\u5F00\u671F\u95F4\u6302(\u7EC8\u5BA1:\u5E38\u9A7B\u7684 passive:false \u89E6\u6478\u76D1\u542C\u4F1A\u8BA9\u5168\u7AD9\u624B\u673A\u8D77\u6ED1\u90FD\u5148\u7B49\u4E3B\u7EBF\u7A0B);\u5F00 / \u5173\u8DDF\u5B98\u65B9\n  //    theme-drawer:open / theme-drawer:close \u4E8B\u4EF6\u8D70(\u5192\u6CE1,target = <theme-drawer id=\"cart-drawer\">)\u3002\n  let lastX = 0;\n  let lastY = 0;\n  const onDrawerTouchStart = (event) => {\n    if (event.touches.length !== 1) return;\n    lastX = event.touches[0].clientX;\n    lastY = event.touches[0].clientY;\n  };\n  const onDrawerTouchMove = (event) => {\n    const drawer = cartDrawer();\n    if (!drawer?.isOpen) return;\n    if (event.touches.length !== 1) return; // \u53CC\u6307\u7F29\u653E\u4E0D\u7BA1(\u653E\u5927\u770B\u5B57\u662F\u65E0\u969C\u788D\u9700\u8981)\n    const target = event.target instanceof Element ? event.target : null;\n    if (!target || !drawer.contains(target)) return;\n\n    const { clientX: x, clientY: y } = event.touches[0];\n    const dx = x - lastX;\n    const dy = y - lastY;\n    lastX = x;\n    lastY = y;\n    if (Math.abs(dx) > Math.abs(dy)) return; // \u6A2A\u5411\u624B\u52BF\u4E0D\u7BA1(\u5F39\u7A97\u91CC\u6CA1\u6709\u6A2A\u6ED1,\u4E5F\u4E0D\u62E6\u522B\u4EBA\u7684)\n\n    if (!canScrollInDirection(target, drawer, dy) && event.cancelable) event.preventDefault();\n  };\n  const TOUCHSTART_OPTS = { capture: true, passive: true };\n  const TOUCHMOVE_OPTS = { capture: true, passive: false };\n\n  document.addEventListener('theme-drawer:open', (event) => {\n    if (event.target?.id !== DRAWER_ID) return;\n    // \u540C\u4E00\u51FD\u6570 + \u540C capture \u91CD\u590D\u6DFB\u52A0\u4F1A\u88AB\u6D4F\u89C8\u5668\u53BB\u91CD(\u5B98\u65B9 #bringToFront \u4F1A\u518D\u53D1\u4E00\u6B21 open)\n    document.addEventListener('touchstart', onDrawerTouchStart, TOUCHSTART_OPTS);\n    document.addEventListener('touchmove', onDrawerTouchMove, TOUCHMOVE_OPTS);\n  });\n\n  document.addEventListener('theme-drawer:close', (event) => {\n    if (event.target?.id !== DRAWER_ID) return;\n    document.removeEventListener('touchstart', onDrawerTouchStart, { capture: true });\n    document.removeEventListener('touchmove', onDrawerTouchMove, { capture: true });\n  });\n\n  // AYUNEL OVERRIDE 2026-10-03: Horizon 4.2 component-cart-items owns refresh on persisted / back_forward.\n  // Keep only AYUNEL's close/unlock responsibility here; a second render would abort the native restore.\n  window.addEventListener('pageshow', (event) => {\n    const navigation = globalThis.performance?.getEntriesByType?.('navigation')[0];\n    if (!event.persisted && navigation?.type !== 'back_forward') return;\n    const drawer = cartDrawer();\n    if (drawer?.isOpen) drawer.close();\n  });\n}\n"],
  "mappings": "AAoDA,OAAS,mBAAsB,kBAC/B,OAAS,oBAAuB,0BAEhC,MAAM,UAAY,cACZ,WAAa,sBAGb,WAAa,IAA0B,SAAS,eAAe,SAAS,EAGxE,eAAkB,QACtB,kBAAkB,mBAAqB,OAAO,eAAe,KAAO,UAC5C,OAAO,cAC3B,KAEA,gBAAkB,IAGlB,cAAiB,QACrB,gBAAgB,cAAc,WAAY,CACxC,MAAO,GACP,KAAM,YACN,iBAAkB,OAAO,cAAc,0BAA0B,IAAM,IACzE,CAAC,EAQH,SAAS,qBAAqB,OAAQ,SAAU,GAAI,CAClD,QAAS,GAAK,OAAQ,IAAM,KAAO,SAAU,GAAK,GAAG,cAAe,CAClE,MAAM,UAAY,iBAAiB,EAAE,EAAE,UACvC,IAAK,YAAc,QAAU,YAAc,WAAa,GAAG,aAAe,GAAG,aAAe,IACtF,GAAK,GAAK,GAAG,UAAY,GACzB,GAAK,GAAK,GAAG,UAAY,GAAG,aAAe,GAAG,aAAe,GAC7D,KAAO,GAAG,MAAO,EAGzB,CACA,MAAO,EACT,CAEA,GAAI,CAAC,OAAO,qBAAsB,CAChC,OAAO,qBAAuB,GAG9B,SAAS,iBAAiB,eAAe,gBAAkB,OAAU,CACnE,GAAI,MAAM,SAAW,OAAS,CAAC,MAAM,QAAS,OAC9C,MAAM,YAAc,MAAM,kBAAkB,QAAU,MAAM,OAAO,QAAQ,cAAc,EAAI,KAE7F,MAAM,QACH,KAAK,MAAO,QAAW,CAGtB,GAAI,QAAQ,QAAQ,UAAY,QAAQ,QAAQ,kBAAmB,OACnE,MAAM,OAAS,WAAW,EAC1B,GAAI,CAAC,OAAQ,OACR,QAAQ,QAAQ,WAAW,UAAU,GAExC,MAAM,QAAQ,KAAK,CACjB,cAAc,MAAM,EAAE,MAAM,IAAM,CAAC,CAAC,EACpC,IAAI,QAAS,SAAY,WAAW,QAAS,eAAe,CAAC,CAC/D,CAAC,EAEH,MAAM,WAAa,IAAM,CAClB,OAAO,QAAQ,OAAO,KAAK,CAClC,EACI,uBAAuB,mBAAqB,YAAY,KAC1D,YAAY,iBAAiB,QAAS,WAAY,CAAE,KAAM,EAAK,CAAC,EAEhE,WAAW,CAEf,CAAC,EACA,MAAM,IAAM,CAEb,CAAC,CACL,CAAC,EAGD,SAAS,iBACP,SACC,OAAU,CACT,MAAM,OAAS,eAAe,MAAM,MAAM,EACtC,CAAC,QAAU,CAAC,OAAO,SACvB,MAAM,eAAe,EACrB,OAAO,MAAM,EACf,EACA,EACF,EAEA,SAAS,iBACP,QACC,OAAU,CACT,MAAM,OAAS,eAAe,MAAM,MAAM,EAEtC,QAAQ,QAAU,CAAC,MAAM,OAAO,MAAM,OAAO,MAAM,CACzD,EACA,EACF,EAGA,SAAS,iBACP,QACC,OAAU,CACT,MAAM,OAAS,eAAe,MAAM,MAAM,EAC1C,GAAI,CAAC,QAAQ,OAAQ,OACrB,MAAM,OAA2C,MAAM,OACvD,GAAI,OAAO,cAAc,cAAc,EAAG,OAC1C,MAAM,MAAQ,OAAO,cAAc,qBAAqB,EACxD,GAAI,MAAO,CACT,MAAM,EAAI,MAAM,sBAAsB,EAGtC,GADE,MAAM,SAAW,EAAE,MAAQ,MAAM,SAAW,EAAE,OAAS,MAAM,SAAW,EAAE,KAAO,MAAM,SAAW,EAAE,OAC1F,MACd,CACA,OAAO,MAAM,CACf,EACA,EACF,EAKA,IAAI,MAAQ,EACR,MAAQ,EACZ,MAAM,mBAAsB,OAAU,CAChC,MAAM,QAAQ,SAAW,IAC7B,MAAQ,MAAM,QAAQ,CAAC,EAAE,QACzB,MAAQ,MAAM,QAAQ,CAAC,EAAE,QAC3B,EACM,kBAAqB,OAAU,CACnC,MAAM,OAAS,WAAW,EAE1B,GADI,CAAC,QAAQ,QACT,MAAM,QAAQ,SAAW,EAAG,OAChC,MAAM,OAAS,MAAM,kBAAkB,QAAU,MAAM,OAAS,KAChE,GAAI,CAAC,QAAU,CAAC,OAAO,SAAS,MAAM,EAAG,OAEzC,KAAM,CAAE,QAAS,EAAG,QAAS,CAAE,EAAI,MAAM,QAAQ,CAAC,EAC5C,GAAK,EAAI,MACT,GAAK,EAAI,MACf,MAAQ,EACR,MAAQ,EACJ,OAAK,IAAI,EAAE,EAAI,KAAK,IAAI,EAAE,IAE1B,CAAC,qBAAqB,OAAQ,OAAQ,EAAE,GAAK,MAAM,YAAY,MAAM,eAAe,CAC1F,EACM,gBAAkB,CAAE,QAAS,GAAM,QAAS,EAAK,EACjD,eAAiB,CAAE,QAAS,GAAM,QAAS,EAAM,EAEvD,SAAS,iBAAiB,oBAAsB,OAAU,CACpD,MAAM,QAAQ,KAAO,YAEzB,SAAS,iBAAiB,aAAc,mBAAoB,eAAe,EAC3E,SAAS,iBAAiB,YAAa,kBAAmB,cAAc,EAC1E,CAAC,EAED,SAAS,iBAAiB,qBAAuB,OAAU,CACrD,MAAM,QAAQ,KAAO,YACzB,SAAS,oBAAoB,aAAc,mBAAoB,CAAE,QAAS,EAAK,CAAC,EAChF,SAAS,oBAAoB,YAAa,kBAAmB,CAAE,QAAS,EAAK,CAAC,EAChF,CAAC,EAID,OAAO,iBAAiB,WAAa,OAAU,CAC7C,MAAM,WAAa,WAAW,aAAa,mBAAmB,YAAY,EAAE,CAAC,EAC7E,GAAI,CAAC,MAAM,WAAa,YAAY,OAAS,eAAgB,OAC7D,MAAM,OAAS,WAAW,EACtB,QAAQ,QAAQ,OAAO,MAAM,CACnC,CAAC,CACH",
  "names": []
}
