PageSourceSearch

https://www.tpypy.com/

html tpypy.com collected 2026-10-08 19:50:08 UTC 145,017 bytes, 3,598 lines download raw bytes

1<!doctype html>
2<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
3<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
4<!--[if IE 8]><html class="no-js lt-ie9" lang="en"> <![endif]-->
5<!--[if IE 9 ]><html class="ie9 no-js"> <![endif]-->
6<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js"> <!--<![endif]-->
7<head>
8
9  <!-- Basic page needs ================================================== -->
10  <meta charset="utf-8">
11  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
12
13  
14  <link rel="icon" href="https://cdn.store-assets.com/s/1306561/f/11132142.jpg" />
15  
16
17  <!-- Title and description ================================================== -->
18  <title>
19  御品元冰火湯圓
20  </title>
21
22  
23  <meta name="description" content="秉持傳統手做元宵,產品皆為天然食材,無添加防腐劑。">
24  
25
26  <!-- Social meta ================================================== -->
27  
28
29  <meta property="og:type" content="website">
30  <meta property="og:title" content="御品元冰火湯圓">
31  <meta property="og:url" content="https://www.tpypy.com">
32  
33  
34    <meta property="og:image" content="https://cdn.store-assets.com/s/1306561/f/11132170.jpg">
35    <meta property="og:image:secure_url" content="https://cdn.store-assets.com/s/1306561/f/11132170.jpg">
36  
37
38
39<meta property="og:description" content="秉持傳統手做元宵,產品皆為天然食材,無添加防腐劑。">
40<meta property="og:site_name" content="御品元冰火湯圓">
41
42
43
44  <meta name="twitter:card" content="summary">
45
46
47
48  <meta name="twitter:site" content="@">
49
50
51  <meta name="twitter:title" content="御品元冰火湯圓">
52  
53    <meta name="twitter:description" content="">
54  
55  
56    <meta property="twitter:image" content="https://cdn.store-assets.com/s/1306561/f/11132170.jpg">
57    <meta property="twitter:image:secure_url" content="https://cdn.store-assets.com/s/1306561/f/11132170.jpg">
58  
59
60
61
62
63  <!-- Helpers ================================================== -->
64  <link rel="canonical" href="https://www.tpypy.com">
65  <meta name="viewport" content="width=device-width,initial-scale=1">
66  <meta name="theme-color" content="#121212">
67  
68  
68<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript" ></script>
68
69  
70  <!-- Header hook for plugins ================================================== -->
71  
72<!-- ScriptTags -->
73<script>window.__st={p: "index",cid: null,cem: null,cph: null,cfn: null,cln: null,cge: null,cdb: null,ccc: null};</script>
73<script src='/assets/events.js'></script>
73<script>(function(){function asyncLoad(){var urls=['/assets/traffic.js?v=1'];for(var i=0;i<urls.length;i++){var s=document.createElement('script');s.type='text/javascript';s.async=true;s.src=urls[i];var x=document.getElementsByTagName('script')[0];x.parentNode.insertBefore(s, x);}}window.attachEvent ? window.attachEvent('onload', asyncLoad) : window.addEventListener('load', asyncLoad, false);})();</script>
73
74<!-- /ScriptTags -->
75
76  
77  
78  
78<script src="https://store-themes.easystore.co/1306561/themes/63057/assets/global.js?t=1787083337" defer="defer"></script>
78
79
80  
81  
82  
82<script>
83  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
84  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
85  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
86  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
87
88  ga('create', '', 'auto','myTracker');
89  ga('myTracker.send', 'pageview');
90
91  </script>
91
92  
93  
93<script src="/assets/storefront.js?id=1d419de2011a5572c98b" type="text/javascript" ></script>
93
94  
95
96  <!-- CSS ================================================== -->
97  <style>
98      @font-face {
99        font-family: 'Fuzzy Bubbles';
100        font-style: normal;
101        font-weight: regular;
102        src: local('Fuzzy Bubbles regular'), local('Fuzzy Bubbles-regular'), url(https://fonts.gstatic.com/s/fuzzybubbles/v3/6qLGKZMbrgv9pwtjPEVNV0F2NnP5Zxsreko.ttf) format('truetype');
103      }
104
105      @font-face {
106        font-family: 'Archivo Black';
107        font-style: normal;
108        font-weight: regular;
109        src: local('Archivo Black regular'), local('Archivo Black-regular'), url(https://fonts.gstatic.com/s/archivoblack/v10/HTxqL289NzCGg4MzN6KJ7eW6OYuP_x7yx3A.ttf) format('truetype');
110      }
111
112      :root {
113        --font-body-family: 'Fuzzy Bubbles', handwriting;
114        --font-body-style: normal;
115        --font-body-weight: 400;
116
117        --font-heading-family: 'Archivo Black', sans-serif;
118        --font-heading-style: normal;
119        --font-heading-weight: 700;
120
121        --color-heading-text: 18,18,18;
122        --color-base-text: 18,18,18;
123        --color-base-background-1: 254,254,254;
124        --color-base-background-2: 254,254,254;
125        
126        --color-base-solid-button-labels: 255,255,255;
127        --color-base-outline-button-labels: 18,18,18;
128        
129        --color-base-accent-1: 18,18,18;
130        --color-base-accent-2: 18,18,18;
131        --payment-terms-background-color: 254,254,254;
132
133        --gradient-base-background-1: 254,254,254;
134        --gradient-base-background-2: 254,254,254;
135        --gradient-base-accent-1: 18,18,18;
136        --gradient-base-accent-2: 18,18,18;
137
138        --page-width: 145rem;
139      }
140
141      *,
142      *::before,
143      *::after {
144        box-sizing: inherit;
145      }
146
147      html {
148        box-sizing: border-box;
149        font-size: 62.5%;
150        height: 100%;
151      }
152
153      body {
154        display: grid;
155        grid-template-rows: auto auto 1fr auto;
156        grid-template-columns: 100%;
157        min-height: 100%;
158        margin: 0;
159        font-size: 1.5rem;
160        letter-spacing: 0.06rem;
161        line-height: 1.8;
162        font-family: var(--font-body-family);
163        font-style: var(--font-body-style);
164        font-weight: var(--font-body-weight);
165        
166      }
167
168      @media screen and (min-width: 750px) {
169        body {
170          font-size: 1.6rem;
171        }
172      }
173   </style>
174  
175  <link href="https://store-themes.easystore.co/1306561/themes/63057/assets/base.css?t=1787083337" rel="stylesheet" type="text/css" media="screen" />
176
177  
178  
179
180  
180<script>document.documentElement.className = document.documentElement.className.replace('no-js', 'js');</script>
180
181</head>
182
183<body id="---------------------" class="template-index" >
184	
185  
186<!-- Snippet:global/body_start: Console Extension -->
187<div id='es_console' style='display: none;'>1306561</div>
188<!-- /Snippet -->
189
190	
191 	<style>
192  header {
193    --logo-width: 120px;
194  }
195  .header-wrapper,
196  .header-wrapper .list-menu--disclosure,
197  .header-wrapper .search-modal{
198    background-color: #FFFFFF;
199  }
200  .header-wrapper .search-modal .field__input{
201    background-color: rgb(var(--color-background));
202  }
203  .header-wrapper summary .icon-caret,
204  .header-wrapper .header__menu-item a,
205  .header-wrapper .list-menu__item,
206  .header-wrapper .link--text{
207    color: #000000;
208  }
209  
210  .search-modal__form{
211    position: relative;
212  }
213  
214  .dropdown {
215    display: none;
216    position: absolute;
217    top: 100%;
218    left: 0;
219    width: 100%;
220    padding: 5px 0;
221    background-color: #fff;
222    color:#000;
223    z-index: 1000;
224    border-bottom-left-radius: 15px;
225    border-bottom-right-radius: 15px;
226    border: 1px solid rgba(var(--color-foreground), 1);
227    border-top: none;
228    overflow-x: hidden;
229    overflow-y: auto;
230    max-height: 350px;
231  }
232  
233  .dropdown-item {
234    padding: 0.4rem 2rem;
235    cursor: pointer;
236    line-height: 1.4;
237    overflow: hidden;
238    text-overflow: ellipsis;
239    white-space: nowrap;
240  }
241  
242  .dropdown-item:hover{
243    background-color: #f3f3f3;
244  }
245  
246  .search__input.is-focus{
247    border-radius: 15px;
248    border-bottom-left-radius: 0;
249    border-bottom-right-radius: 0;
250    border: 1px solid rgba(var(--color-foreground), 1);
251    border-bottom: none;
252    box-shadow: none;
253  }
254  
255  .clear-all {
256    text-align: right;
257    padding: 0 2rem 0.2rem;
258    line-height: 1;
259    font-size: 70%;
260    margin-bottom: -2px;
261  }
262  
263  .clear-all:hover{
264    background-color: #fff;
265  }
266  
267  .search-input-focus .easystore-section-header-hidden{
268    transform: none;
269  }
270  .referral-notification {
271    position: absolute;
272    top: 100%;
273    right: 0;
274    background: white;
275    border: 1px solid #e0e0e0;
276    border-radius: 8px;
277    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
278    width: 280px;
279    z-index: 1000;
280    padding: 16px;
281    margin-top: 8px;
282    font-size: 14px;
283    line-height: 1.4;
284  }
285  
286  .referral-notification::before {
287    content: '';
288    position: absolute;
289    top: -8px;
290    right: 20px;
291    width: 0;
292    height: 0;
293    border-left: 8px solid transparent;
294    border-right: 8px solid transparent;
295    border-bottom: 8px solid white;
296  }
297  
298  .referral-notification::after {
299    content: '';
300    position: absolute;
301    top: -9px;
302    right: 20px;
303    width: 0;
304    height: 0;
305    border-left: 8px solid transparent;
306    border-right: 8px solid transparent;
307    border-bottom: 8px solid #e0e0e0;
308  }
309  
310  .referral-notification h4 {
311    margin: 0 0 8px 0;
312    color: #2196F3;
313    font-size: 16px;
314    font-weight: 600;
315  }
316  
317  .referral-notification p {
318    margin: 0 0 12px 0;
319    color: #666;
320  }
321  
322  .referral-notification .referral-code {
323    background: #f5f5f5;
324    padding: 8px;
325    border-radius: 4px;
326    font-family: monospace;
327    font-size: 13px;
328    text-align: center;
329    margin: 8px 0;
330    border: 1px solid #ddd;
331  }
332  
333  .referral-notification .close-btn {
334    position: absolute;
335    top: 8px;
336    right: 8px;
337    background: none;
338    border: none;
339    font-size: 18px;
340    color: #999;
341    cursor: pointer;
342    padding: 0;
343    width: 20px;
344    height: 20px;
345    line-height: 1;
346  }
347  
348  .referral-notification .close-btn:hover {
349    color: #333;
350  }
351  
352  .referral-notification .action-btn {
353    background: #2196F3;
354    color: white;
355    border: none;
356    padding: 8px 16px;
357    border-radius: 4px;
358    cursor: pointer;
359    font-size: 12px;
360    margin-right: 8px;
361    margin-top: 8px;
362  }
363  
364  .referral-notification .action-btn:hover {
365    background: #1976D2;
366  }
367  
368  .referral-notification .dismiss-btn {
369    background: transparent;
370    color: #666;
371    border: 1px solid #ddd;
372    padding: 8px 16px;
373    border-radius: 4px;
374    cursor: pointer;
375    font-size: 12px;
376    margin-top: 8px;
377  }
378  
379  .referral-notification .dismiss-btn:hover {
380    background: #f5f5f5;
381  }
382  .referral-modal__dialog {
383    transform: translate(-50%, 0);
384    transition: transform var(--duration-default) ease, visibility 0s;
385    z-index: 10000;
386    position: fixed;
387    top: 20vh;
388    left: 50%;
389    width: 100%;
390    max-width: 350px;
391    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
392    border-radius: 12px;
393    background-color: #fff;
394    color: #000;
395    padding: 20px;
396    text-align: center;
397  }
398
399  .modal-overlay.referral-modal-overlay {
400    position: fixed;
401    top: 0;
402    left: 0;
403    width: 100%;
404    height: 100%;
405    background-color: rgba(0, 0, 0, 0.7);
406    z-index: 2001;
407    display: block;
408    opacity: 1;
409    transition: opacity var(--duration-default) ease, visibility 0s;
410  }
411</style>
412
413<link rel="preload" href="https://store-themes.easystore.co/1306561/themes/63057/assets/section-header.css?t=1787083337" as="style" onload="this.onload=null;this.rel='stylesheet'">
414<link rel="preload" href="https://store-themes.easystore.co/1306561/themes/63057/assets/component-list-menu.css?t=1787083337" as="style" onload="this.onload=null;this.rel='stylesheet'">
415<link rel="preload" href="https://store-themes.easystore.co/1306561/themes/63057/assets/component-menu-drawer.css?t=1787083337" as="style" onload="this.onload=null;this.rel='stylesheet'">
416<link rel="preload" href="https://store-themes.easystore.co/1306561/themes/63057/assets/component-cart-notification.css?v1.1?t=1787083337" as="style" onload="this.onload=null;this.rel='stylesheet'">
417
418<script src="https://store-themes.easystore.co/1306561/themes/63057/assets/cart-notification.js?t=1787083337" defer="defer"></script>
vendor: 2 bytes, line 418
418
419<script src="https://store-themes.easystore.co/1306561/themes/63057/assets/details-modal.js?t=1787083337" defer="defer"></script>
419
420
421<svg xmlns="http://www.w3.org/2000/svg" class="hidden">
422  <symbol id="icon-search" viewbox="0 0 18 19" fill="none">
423    <path fill-rule="evenodd" clip-rule="evenodd" d="M11.03 11.68A5.784 5.784 0 112.85 3.5a5.784 5.784 0 018.18 8.18zm.26 1.12a6.78 6.78 0 11.72-.7l5.4 5.4a.5.5 0 11-.71.7l-5.41-5.4z" fill="currentColor"/>
424  </symbol>
425
426  <symbol id="icon-close" class="icon icon-close" fill="none" viewBox="0 0 18 17">
427    <path d="M.865 15.978a.5.5 0 00.707.707l7.433-7.431 7.579 7.282a.501.501 0 00.846-.37.5.5 0 00-.153-.351L9.712 8.546l7.417-7.416a.5.5 0 10-.707-.708L8.991 7.853 1.413.573a.5.5 0 10-.693.72l7.563 7.268-7.418 7.417z" fill="currentColor">
428  </symbol>
429</svg>
430
431
432<div id="easystore-section-header">
433  <sticky-header class="header-wrapper header-wrapper--border-bottom">
434    <header class="header header--middle-left page-width header--has-menu" itemscope itemtype="http://schema.org/Organization">
435      <header-drawer data-breakpoint="tablet">
436        <details class="menu-drawer-container menu-opening">
437          <summary class="header__icon header__icon--menu header__icon--summary link link--text focus-inset" aria-label="Menu" role="button" aria-expanded="true" aria-controls="menu-drawer">
438            <span>
439              
440
441
442    <svg class="icon icon-hamburger " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M32.5,65h535a25,25,0,0,0,0-50H32.5a25,25,0,0,0,0,50Z" fill="currentColor"/><path d="M567.5,275H32.5a25,25,0,0,0,0,50h535a25,25,0,0,0,0-50Z" fill="currentColor"/><path d="M567.5,535H32.5a25,25,0,0,0,0,50h535a25,25,0,0,0,0-50Z" fill="currentColor"/></svg>
443
444  
445
446              
447
448
449    <svg class="icon icon-close " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M335.36,300,581.87,53.48a25,25,0,0,0-35.35-35.35L300,264.64,53.48,18.13A25,25,0,0,0,18.13,53.48L264.64,300,18.13,546.52a25,25,0,0,0,35.35,35.35L300,335.36,546.52,581.87a25,25,0,0,0,35.35-35.35Z" fill="currentColor"/></svg>
450
451  
452
453            </span>
454          </summary>
455          <div id="menu-drawer" class="menu-drawer motion-reduce" tabindex="-1">
456            <div class="menu-drawer__inner-container">
457              <div class="menu-drawer__navigation-container">
458                <nav class="menu-drawer__navigation">
459                  <ul class="menu-drawer__menu list-menu" role="list">
460                    
461                    
462                      
463                        <li>
464                          <a href="/"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
465                            首頁
466                          </a>
467                        </li>
468                      
469                    
470                    
471                      
472                        <li>
473                          <a href="/collections/all"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
474                            所有商品
475                          </a>
476                        </li>
477                      
478                    
479                    
480                      
481                        <li>
482                          <a href="/blogs/news"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
483                            最新消息
484                          </a>
485                        </li>
486                      
487                    
488                    
489                      
490                        <li>
491                          <a href="/store-locator"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
492                            本店地址
493                          </a>
494                        </li>
495                      
496                    
497                    
498                      
499                        
500                        <li>
501                          <details>
502                                <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags">
503                                  <a href="/pages/home"  class="link--text list-menu__item menu-drawer__menu-item">
504                                    台北總店
505                                  </a>
506                                  
507
508
509    <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg>
510
511  
512
513                                  
514
515
516    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
517      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
518    </svg>
519
520  
521
522                                </summary>
523                                <div class="menu-drawer__submenu motion-reduce" tabindex="-1">
524                                  <div class="menu-drawer__inner-submenu">
525                                    <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true">
526                                      
527
528
529    <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg>
530
531  
532
533                                      台北總店
534                                    </button>
535                                    <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1">
536                                      
537                                        
538                                        
539                                          <li>
540                                            <a href="https://www.instagram.com/yupinyuan_tw?igsh=bGJ1emtycm9vZWhz&utm_source=qr"  target="_blank"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
541                                              IG(台北總店)
542                                            </a>
543                                          </li>
544                                        
545                                      
546                                        
547                                        
548                                          <li>
549                                            <a href="https://zh-tw.facebook.com/Ice.Fire.Dumpling/"  target="_blank"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
550                                              FB(台北總店)
551                                            </a>
552                                          </li>
553                                        
554                                      
555                                        
556                                        
557                                          <li>
558                                            <a href="https://lin.ee/p71oiiy"  target="_blank"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
559                                              LINE(台北總店)
560                                            </a>
561                                          </li>
562                                        
563                                      
564                                      
565                                    </ul>
566                                  </div>
567                                </div>
568                          </details>
569                        </li>
570                      
571                    
572                    
573                      
574                        
575                        <li>
576                          <details>
577                                <summary class="menu-drawer__menu-item list-menu__item link link--text focus-inset" role="button" aria-expanded="false" aria-controls="link-Bags">
578                                  <a href="https://www.tpypy.com/"  class="link--text list-menu__item menu-drawer__menu-item">
579                                    台北饒河店
580                                  </a>
581                                  
582
583
584    <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg>
585
586  
587
588                                  
589
590
591    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
592      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
593    </svg>
594
595  
596
597                                </summary>
598                                <div class="menu-drawer__submenu motion-reduce" tabindex="-1">
599                                  <div class="menu-drawer__inner-submenu">
600                                    <button class="menu-drawer__close-button link link--text focus-inset" aria-expanded="true">
601                                      
602
603
604    <svg class="icon icon-arrow " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 339.56"><path d="M31.06,196.67H504l-88.56,88.56a26.89,26.89,0,1,0,38,38L588,188.79a26.89,26.89,0,0,0,0-38L453.49,16.29a26.89,26.89,0,0,0-38,38L504,142.88H31.06a26.9,26.9,0,0,0,0,53.79Z" fill="currentColor"/></svg>
605
606  
607
608                                      台北饒河店
609                                    </button>
610                                    <ul class="menu-drawer__menu list-menu" role="list" tabindex="-1">
611                                      
612                                        
613                                        
614                                          <li>
615                                            <a href="https://www.instagram.com/yu_pin_yuan101/?utm_source=qr"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
616                                              IG(台北饒河店)
617                                            </a>
618                                          </li>
619                                        
620                                      
621                                        
622                                        
623                                          <li>
624                                            <a href="https://www.facebook.com/Ice.Fire.Dumpling.Taichung.Tangyuan.Sweet?mibextid=LQQJ4d"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
625                                              FB(台北饒河店)
626                                            </a>
627                                          </li>
628                                        
629                                      
630                                        
631                                        
632                                          <li>
633                                            <a href="https://lin.ee/KuLtM6l"  class="menu-drawer__menu-item link link--text list-menu__item focus-inset">
634                                              LINE(台北饒河店)
635                                            </a>
636                                          </li>
637                                        
638                                      
639                                      
640                                    </ul>
641                                  </div>
642                                </div>
643                          </details>
644                        </li>
645                      
646                    
647                    
648                      
649                        <li>
650                          <a href="https://docs.google.com/forms/d/1erFjT8VnhIHqmcleAOUaw23fLFcIyn_SOXNhZk6P7E4/edit?pli=1"  target="_blank"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
651                            預定自取/外送下單區(台北總店)
652                          </a>
653                        </li>
654                      
655                    
656                    
657                      
658                        <li>
659                          <a href="https://lin.ee/p71oiiy"  target="_blank"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
660                            團購、批發請點我
661                          </a>
662                        </li>
663                      
664                    
665                    
666                      
667                        <li>
668                          <a href="https://forms.gle/wcrr55emMkRMasDk7"  target="_blank"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
669                            元宵節熟食預購專區
670                          </a>
671                        </li>
672                      
673                    
674                  </ul>
675                </nav>
676
677                <div class="menu-drawer__utility-links">
678
679                  
680
681
682
683
684                  
685                  
686                  
687                    <a href="/account/login" class="menu-drawer__account link link--text focus-inset h5">
688                       
689
690
691    <svg class="icon icon-account " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M300,296.19c-70.7,0-137.11,28.74-187,80.93-49.59,51.87-76.9,120.77-76.9,194v25H563.89v-25c0-73.22-27.31-142.12-76.9-194C437.11,324.93,370.7,296.19,300,296.19ZM87.42,546.11C99.29,433.81,190.1,346.19,300,346.19s200.71,87.62,212.58,199.92Z" fill="currentColor"/><path d="M300,285.34c77.6,0,140.73-63.13,140.73-140.73S377.6,3.89,300,3.89,159.27,67,159.27,144.61,222.4,285.34,300,285.34Zm0-231.45a90.73,90.73,0,1,1-90.73,90.72A90.82,90.82,0,0,1,300,53.89Z" fill="currentColor"/></svg>
692
693  
694 
695                      
696                      登入
697                    </a>
698                  
699                    <a href="/account/register" class="menu-drawer__account link link--text focus-inset h5">
700                      
701                       
702
703
704    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-plus " fill="none" viewBox="0 0 10 10">
705      <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"></path>
706    </svg>
707
708  
709 
710                      註冊帳號
711                    </a>
712                  
713                  
714                  
715                </div>
716              </div>
717            </div>
718          </div>
719        </details>
720      </header-drawer>
721  
722      
723        <a href="/" class="header__heading-link link link--text focus-inset" itemprop="url">
724          <img src="https://cdn.store-assets.com/s/1306561/f/11132170.jpg" class="header__heading-logo" alt="御品元冰火湯圓" loading="lazy" itemprop="logo">
725        </a>
726      
727
728      
729      <div class="header__search-input" tabindex="-1">
730        <form action="/search" method="get" role="search" class="search search-modal__form">
731          <div class="field">
732            <input class="search__input field__input" 
733              id="Search-In-Modal"
734              type="search"
735              name="q"
736              value=""
737              placeholder="搜尋"
738              autocomplete="off"
739            >
740            <label class="field__label" for="Search-In-Modal">搜尋</label>
741            <div class="dropdown" id="searchDropdown"></div>
742            <input type="hidden" name="search_history" class="hidden_search_history">
743            <input type="hidden" name="options[prefix]" value="last">
744            <button clas
744s="search__button field__button" aria-label="搜尋">
745              <svg class="icon icon-search" aria-hidden="true" focusable="false" role="presentation">
746                <use href="#icon-search">
747              </svg>
748            </button> 
749          </div>
750        </form>
751      </div>
752      
753
754      <nav class="header__inline-menu">
755        <ul class="list-menu list-menu--inline" role="list">
756          
757            
758              
759                <li>
760                  <a href="/"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
761                    首頁
762                  </a>
763                </li>
764              
765            
766            
767              
768                <li>
769                  <a href="/collections/all"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
770                    所有商品
771                  </a>
772                </li>
773              
774            
775            
776              
777                <li>
778                  <a href="/blogs/news"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
779                    最新消息
780                  </a>
781                </li>
782              
783            
784            
785              
786                <li>
787                  <a href="/store-locator"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
788                    本店地址
789                  </a>
790                </li>
791              
792            
793            
794              
795                
796                <li>
797                  <details-disclosure>
798                    <details>
799                      <summary class="header__menu-item list-menu__item link focus-inset">
800                        <a href="/pages/home"  >台北總店</a>
801                        
802
803
804    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
805      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
806    </svg>
807
808  
809
810                      </summary>
811                      <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1">
812                        
813                        
814                        
815                          
816                            
817                            <li>
818                              <a href="https://www.instagram.com/yupinyuan_tw?igsh=bGJ1emtycm9vZWhz&utm_source=qr"  target="_blank"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
819                                IG(台北總店)
820                              </a>
821                            </li>
822                          
823                        
824                        
825                          
826                            
827                            <li>
828                              <a href="https://zh-tw.facebook.com/Ice.Fire.Dumpling/"  target="_blank"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
829                                FB(台北總店)
830                              </a>
831                            </li>
832                          
833                        
834                        
835                          
836                            
837                            <li>
838                              <a href="https://lin.ee/p71oiiy"  target="_blank"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
839                                LINE(台北總店)
840                              </a>
841                            </li>
842                          
843                        
844                      </ul>
845                    </details>
846                  </details-disclosure>
847                </li>
848              
849            
850            
851              
852                
853                <li>
854                  <details-disclosure>
855                    <details>
856                      <summary class="header__menu-item list-menu__item link focus-inset">
857                        <a href="https://www.tpypy.com/"  >台北饒河店</a>
858                        
859
860
861    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
862      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
863    </svg>
864
865  
866
867                      </summary>
868                      <ul class="header__submenu list-menu list-menu--disclosure caption-large motion-reduce" role="list" tabindex="-1">
869                        
870                        
871                        
872                          
873                            
874                            <li>
875                              <a href="https://www.instagram.com/yu_pin_yuan101/?utm_source=qr"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
876                                IG(台北饒河店)
877                              </a>
878                            </li>
879                          
880                        
881                        
882                          
883                            
884                            <li>
885                              <a href="https://www.facebook.com/Ice.Fire.Dumpling.Taichung.Tangyuan.Sweet?mibextid=LQQJ4d"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
886                                FB(台北饒河店)
887                              </a>
888                            </li>
889                          
890                        
891                        
892                          
893                            
894                            <li>
895                              <a href="https://lin.ee/KuLtM6l"  class="header__menu-item list-menu__item link link--text focus-inset caption-large">
896                                LINE(台北饒河店)
897                              </a>
898                            </li>
899                          
900                        
901                      </ul>
902                    </details>
903                  </details-disclosure>
904                </li>
905              
906            
907            
908              
909                <li>
910                  <a href="https://docs.google.com/forms/d/1erFjT8VnhIHqmcleAOUaw23fLFcIyn_SOXNhZk6P7E4/edit?pli=1"  target="_blank"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
911                    預定自取/外送下單區(台北總店)
912                  </a>
913                </li>
914              
915            
916            
917              
918                <li>
919                  <a href="https://lin.ee/p71oiiy"  target="_blank"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
920                    團購、批發請點我
921                  </a>
922                </li>
923              
924            
925            
926              
927                <li>
928                  <a href="https://forms.gle/wcrr55emMkRMasDk7"  target="_blank"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
929                    元宵節熟食預購專區
930                  </a>
931                </li>
932              
933            
934            
935            
936              
937                
938                  
939                
940                  
941                
942              
943            
944        </ul>
945      </nav>
946      <div class="header__icons">
947
948        
949          
950            <div class="header__icon header__icon--account link link--text focus-inset small-hide medium-hide" style="position: relative;">
951              <a href="/account/login" class="header__icon link link--text focus-inset p-2">
952                
953
954
955    <svg class="icon icon-account " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M300,296.19c-70.7,0-137.11,28.74-187,80.93-49.59,51.87-76.9,120.77-76.9,194v25H563.89v-25c0-73.22-27.31-142.12-76.9-194C437.11,324.93,370.7,296.19,300,296.19ZM87.42,546.11C99.29,433.81,190.1,346.19,300,346.19s200.71,87.62,212.58,199.92Z" fill="currentColor"/><path d="M300,285.34c77.6,0,140.73-63.13,140.73-140.73S377.6,3.89,300,3.89,159.27,67,159.27,144.61,222.4,285.34,300,285.34Zm0-231.45a90.73,90.73,0,1,1-90.73,90.72A90.82,90.82,0,0,1,300,53.89Z" fill="currentColor"/></svg>
956
957  
958
959                <span id="my-account" class="header__link-label">登入</span>
960              </a>
961
962              <!-- Referral Notification Popup for Desktop -->
963              <div id="referralNotification" class="referral-notification" style="display: none;">
964                <button class="close-btn" onclick="dismissReferralNotification()">&times;</button>
965                <div style="text-align: center; margin-bottom: 16px;">
966                  <div style="width: 100px; height: 100px; margin: 0 auto;">
967                    <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg">
968                  </div>
969                </div>
970                <p id="referralSignupMessage" style="text-align: center; font-size: 14px; color: #666; margin: 0 0 20px 0;">
971                  您的好友送您   回饋金!立即註冊領取。
972                </p>
973                <div style="text-align: center;">
974                  <button class="btn" onclick="goToSignupPage()" style="width: 100%;">
975                    註冊
976                  </button>
977                </div>
978              </div>
979            </div>
980          
981        
982
983        <a href="/cart" class="header__icon link link--text focus-inset" id="cart-icon-bubble">
984          <span class="header__icon--cart">
985            
986
987
988    <svg class="icon icon-cart-empty " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496.56 600"><path d="M453.52,128.63a25,25,0,0,0-24.91-22.8H364.72a117.48,117.48,0,0,0-232.89,0H67.94A25,25,0,0,0,43,128.63L8.8,515.21a72.11,72.11,0,0,0,19.05,55.6,79,79,0,0,0,58.22,25.3H410.49a79,79,0,0,0,58.22-25.3,72.11,72.11,0,0,0,19.05-55.6ZM248.28,53.89a67.58,67.58,0,0,1,65.65,51.94H182.63A67.57,67.57,0,0,1,248.28,53.89ZM431.83,537.05a28.85,28.85,0,0,1-21.34,9.06H86.07a28.85,28.85,0,0,1-21.34-9.06,22.69,22.69,0,0,1-6.13-17.43L90.82,155.83h40v51.23a25,25,0,0,0,50,0V155.83h135v51.23a25,25,0,0,0,50,0V155.83h40L438,519.62A22.68,22.68,0,0,1,431.83,537.05Z" fill="currentColor"/></svg>
989
990  
991
992            <div class="cart-count-bubble hidden">
993              <span aria-hidden="true" class="js-content-cart-count">0</span>
994            </div>
995          </span>
996          <span class="header__link-label medium-hide small-hide">
997            購物車
998          </span>
999        </a>
1000
1001        
1002          
1003          <!-- Referral Notification Modal for Mobile -->
1004          <details-modal class="referral-modal" id="referralMobileModal">
1005            <details>
1006              <summary class="referral-modal__toggle" aria-haspopup="dialog" aria-label="Open referral modal" style="display: none;">
1007              </summary>
1008              <div class="modal-overlay referral-modal-overlay"></div>
1009              <div class="referral-modal__dialog" role="dialog" aria-modal="true" aria-label="Referral notification">
1010                <div class="referral-modal__content">
1011                  <button type="button" class="modal__close-button" aria-label="Close" onclick="closeMobileReferralModal()" style="position: absolute; top: 16px; right: 16px; background: none; border: none; font-size: 24px; cursor: pointer;">
1012                    &times;
1013                  </button>
1014                  
1015                  <div style="margin-bottom: 24px;">
1016                    <div style="width: 120px; height: 120px; margin: 0 auto 20px;">
1017                      <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg" style="width: 100%; height: 100%;">
1018                    </div>
1019                  </div>
1020                  
1021                  <p id="referralSignupMessageMobile" style="font-size: 16px; color: #333; margin: 0 0 30px 0; line-height: 1.5;">
1022                    您的好友送您   回饋金!立即註冊領取。
1023                  </p>
1024                  
1025                  <button type="button" class="btn" onclick="goToSignupPageFromMobile()" style="width: 100%;">
1026                    註冊
1027                  </button>
1028                </div>
1029              </div>
1030            </details>
1031          </details-modal>
1032          
1033        
1034        
1035      </div>
1036    </header>
1037  </sticky-header>
1038  
1039<cart-notification>
1040  <div class="cart-notification-wrapper page-width color-background-1">
1041    <div id="cart-notification" class="cart-notification focus-inset" aria-modal="true" aria-label="已加入購物車" role="dialog" tabindex="-1">
1042      <div class="cart-notification__header">
1043        <h2 class="cart-notification__heading caption-large">
1044
1045
1046    <svg class="icon icon-checkmark color-foreground-text " aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 9" fill="none">
1047      <path fill-rule="evenodd" clip-rule="evenodd" d="M11.35.643a.5.5 0 01.006.707l-6.77 6.886a.5.5 0 01-.719-.006L.638 4.845a.5.5 0 11.724-.69l2.872 3.011 6.41-6.517a.5.5 0 01.707-.006h-.001z" fill="currentColor"></path>
1048    </svg>
1049
1050  
1051 已加入購物車</h2>
1052        <button type="button" class="cart-notification__close modal__close-button link link--text focus-inset" aria-label="accessibility.close">
1053          
1054
1055
1056    <svg class="icon icon-close " data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 600 600"><path d="M335.36,300,581.87,53.48a25,25,0,0,0-35.35-35.35L300,264.64,53.48,18.13A25,25,0,0,0,18.13,53.48L264.64,300,18.13,546.52a25,25,0,0,0,35.35,35.35L300,335.36,546.52,581.87a25,25,0,0,0,35.35-35.35Z" fill="currentColor"/></svg>
1057
1058  
1059
1060        </button>
1061      </div>
1062      <div id="cart-notification-product" class="cart-notification-product"></div>
1063      <div class="cart-notification__links">
1064        <a href="/cart" id="cart-notification-button" class="button button--secondary button--full-width">查看購物車 (<span class="js-content-cart-count">0</span>)</a>
1065        <form action="/cart" method="post" id="cart-notification-form">
1066          <input type="hidden" name="_token" value="6cbTyCiCbcMqkUBsbG4d9fXH0IE7qT6ixs2TZMuy">
1067          <input type="hidden" name="current_currency" value="">
1068          <button class="button button--primary button--full-width" name="checkout" value="true">結帳</button>
1069        </form>
1070        <button type="button" class="link button-label">繼續購物</button>
1071      </div>
1072    </div>
1073  </div>
1074</cart-notification>
1075<style>
1076  .cart-notification {
1077     display: none;
1078  }
1079</style>
1080<script>
1081document.getElementById('cart-notification-form').addEventListener('submit',(event)=>{
1082  if(event.submitter) event.submitter.classList.add('loading');
1083})
1084
1085</script>
1085
1086
1087</div>
1088
1089
1090<script>
1091
1092  class StickyHeader extends HTMLElement {
1093    constructor() {
1094      super();
1095    }
1096
1097    connectedCallback() {
1098      this.header = document.getElementById('easystore-section-header');
1099      this.headerBounds = {};
1100      this.currentScrollTop = 0;
1101      this.preventReveal = false;
1102
1103      this.onScrollHandler = this.onScroll.bind(this);
1104      this.hideHeaderOnScrollUp = () => this.preventReveal = true;
1105
1106      this.addEventListener('preventHeaderReveal', this.hideHeaderOnScrollUp);
1107      window.addEventListener('scroll', this.onScrollHandler, false);
1108
1109      this.createObserver();
1110    }
1111
1112    disconnectedCallback() {
1113      this.removeEventListener('preventHeaderReveal', this.hideHeaderOnScrollUp);
1114      window.removeEventListener('scroll', this.onScrollHandler);
1115    }
1116
1117    createObserver() {
1118      let observer = new IntersectionObserver((entries, observer) => {
1119        this.headerBounds = entries[0].intersectionRect;
1120        observer.disconnect();
1121      });
1122
1123      observer.observe(this.header);
1124    }
1125
1126    onScroll() {
1127      const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
1128
1129      if (scrollTop > this.currentScrollTop && scrollTop > this.headerBounds.bottom) {
1130        requestAnimationFrame(this.hide.bind(this));
1131      } else if (scrollTop < this.currentScrollTop && scrollTop > this.headerBounds.bottom) {
1132        if (!this.preventReveal) {
1133          requestAnimationFrame(this.reveal.bind(this));
1134        } else {
1135          window.clearTimeout(this.isScrolling);
1136
1137          this.isScrolling = setTimeout(() => {
1138            this.preventReveal = false;
1139          }, 66);
1140
1141          requestAnimationFrame(this.hide.bind(this));
1142        }
1143      } else if (scrollTop <= this.headerBounds.top) {
1144        requestAnimationFrame(this.reset.bind(this));
1145      }
1146
1147
1148      this.currentScrollTop = scrollTop;
1149    }
1150
1151    hide() {
1152      this.header.classList.add('easystore-section-header-hidden', 'easystore-section-header-sticky');
1153      this.closeMenuDisclosure();
1154      // this.closeSearchModal();
1155    }
1156
1157    reveal() {
1158      this.header.classList.add('easystore-section-header-sticky', 'animate');
1159      this.header.classList.remove('easystore-section-header-hidden');
1160    }
1161
1162    reset() {
1163      this.header.classList.remove('easystore-section-header-hidden', 'easystore-section-header-sticky', 'animate');
1164    }
1165
1166    closeMenuDisclosure() {
1167      this.disclosures = this.disclosures || this.header.querySelectorAll('details-disclosure');
1168      this.disclosures.forEach(disclosure => disclosure.close());
1169    }
1170
1171    // closeSearchModal() {
1172    //   this.searchModal = this.searchModal || this.header.querySelector('details-modal');
1173    //   this.searchModal.close(false);
1174    // }
1175  }
1176
1177  customElements.define('sticky-header', StickyHeader);
1178
1179  
1180  class DetailsDisclosure extends HTMLElement{
1181    constructor() {
1182      super();
1183      this.mainDetailsToggle = this.querySelector('details');
1184      // this.mainDetailsToggle.addEventListener('focusout', this.onFocusOut.bind(this));
1185      this.mainDetailsToggle.addEventListener('mouseover', this.open.bind(this));
1186      this.mainDetailsToggle.addEventListener('mouseleave', this.close.bind(this));
1187    }
1188
1189    onFocusOut() {
1190      setTimeout(() => {
1191        if (!this.contains(document.activeElement)) this.close();
1192      })
1193    }
1194
1195    open() {
1196      this.mainDetailsToggle.setAttribute('open',1)
1197    }
1198
1199    close() {
1200      this.mainDetailsToggle.removeAttribute('open')
1201    }
1202  }
1203
1204  customElements.define('details-disclosure', DetailsDisclosure);
1205
1206  function clearAll() {
1207    localStorage.removeItem('searchHistory'); 
1208    
1209    var customer = "";
1210    if(customer) {
1211      // Your logic to clear all data or call an endpoint
1212      fetch('/account/search_histories', {
1213          method: 'DELETE',
1214          headers: {
1215            "Content-Type": "application/json",
1216            "X-Requested-With": "XMLHttpRequest"
1217          },
1218          body: JSON.stringify({
1219            _token: "6cbTyCiCbcMqkUBsbG4d9fXH0IE7qT6ixs2TZMuy"
1220          }),
1221      })
1222      .then(response => response.json())
1223    }
1224  }
1225  // End - delete search history from local storage
1226  
1227  // search history dropdown  
1228  var searchInputs = document.querySelectorAll('.search__input');
1229  
1230  if(searchInputs.length > 0) {
1231    
1232    searchInputs.forEach((searchInput)=> {
1233    
1234      searchInput.addEventListener('focus', function() {
1235        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
1236        searchDropdown.innerHTML = ''; // Clear existing items
1237  
1238        // retrieve data from local storage
1239        var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || [];
1240  
1241        // Convert JSON to string
1242        var search_history_json = JSON.stringify(searchHistoryData);
1243  
1244        // Set the value of the hidden input
1245        searchInput.closest('form').querySelector(".hidden_search_history").value = search_history_json;
1246  
1247        // create dropdown items
1248        var clearAllItem = document.createElement('div');
1249        clearAllItem.className = 'dropdown-item clear-all';
1250        clearAllItem.textContent = 'Clear';
1251        clearAllItem.addEventListener('click', function() {
1252          clearAll();
1253          searchDropdown.style.display = 'none';
1254          searchInput.classList.remove('is-focus');
1255        });
1256        searchDropdown.appendChild(clearAllItem);
1257  
1258        // create dropdown items
1259        searchHistoryData.forEach(function(item) {
1260          var dropdownItem = document.createElement('div');
1261          dropdownItem.className = 'dropdown-item';
1262          dropdownItem.textContent = item.term;
1263          dropdownItem.addEventListener('click', function() {
1264            searchInput.value = item.term;
1265            searchInput.closest('form').submit();
1266            searchDropdown.style.display = 'none';
1267          });
1268          searchDropdown.appendChild(dropdownItem);
1269        });
1270  
1271        if(searchHistoryData.length > 0){
1272          // display the dropdown
1273          searchInput.classList.add('is-focus');
1274          document.body.classList.add('search-input-focus');
1275          searchDropdown.style.display = 'block';
1276        }
1277      });
1278  
1279      searchInput.addEventListener("focusout", (event) => {
1280        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
1281        searchInput.classList.remove('is-focus');
1282        searchDropdown.classList.add('transparent');
1283        setTimeout(()=>{
1284          searchDropdown.style.display = 'none';
1285          searchDropdown.classList.remove('transparent');
1286          document.body.classList.remove('search-input-focus');
1287        }, 400);
1288      });
1289    })
1290  }
1291  // End - search history dropdown
1292
1293  // referral notification popup
1294  const referralMessageTemplate = '您的好友送您 __CURRENCY_CODE__ __CREDIT_AMOUNT__ 回饋金!立即註冊領取。';
1295  const shopCurrency = 'NT$';
1296
1297  function getCookie(name) {
1298    const value = `; ${document.cookie}`;
1299    const parts = value.split(`; ${name}=`);
1300    if (parts.length === 2) return parts.pop().split(';').shift();
1301    return null;
1302  }
1303
1304  function removeCookie(name) {
1305    document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
1306  }
1307
1308  function showReferralNotification() {
1309    const referralCode = getCookie('customer_referral_code');
1310    
1311    
1312    const customerReferralCode = null;
1313    
1314    
1315    const activeReferralCode = referralCode || customerReferralCode;
1316    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
1317    
1318    if (referralData.timestamp && referralData.expirationDays) {
1319      const expirationTime = referralData.timestamp + (referralData.expirationDays * 24 * 60 * 60 * 1000);
1320      if (Date.now() > expirationTime) {
1321        localStorage.removeItem('referral_notification_data');
1322        return;
1323      }
1324    }
1325    
1326    if (referralData.dismissed) return;
1327    
1328    if (activeReferralCode) {
1329      if (referralData.creditAmount) {
1330        displayReferralNotification(referralData.creditAmount);
1331      } else {
1332        fetchReferralCampaignData(activeReferralCode);
1333      }
1334    }
1335  }
1336    
1337  function fetchReferralCampaignData(referralCode) {
1338    fetch(`/customer/referral_program/campaigns/${referralCode}`)
1339      .then(response => {
1340        if (!response.ok) {
1341          throw new Error('Network response was not ok');
1342        }
1343        return response.json();
1344      })
1345      .then(data => {
1346        let refereeCreditAmount = null;
1347        if (data.data.campaign && data.data.campaign.referral_rules) {
1348          const refereeRule = data.data.campaign.referral_rules.find(rule => 
1349            rule.target_type === 'referee' && 
1350            rule.event_name === 'customer/create' && 
1351            rule.entitlement && 
1352            rule.entitlement.type === 'credit'
1353          );
1354          
1355          if (refereeRule) {
1356            refereeCreditAmount = refereeRule.entitlement.amount;
1357          }
1358        }
1359        
1360        const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
1361        referralData.creditAmount = refereeCreditAmount;
1362        referralData.dismissed = referralData.dismissed || false;
1363        referralData.timestamp = Date.now();
1364        referralData.expirationDays = 3;
1365        localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
1366        
1367        displayReferralNotification(refereeCreditAmount);
1368      })
1369      .catch(error => {
1370        removeCookie('customer_referral_code');
1371      });
1372  }
1373    
1374  function displayReferralNotification(creditAmount = null) {
1375    const isMobile = innerWidth <= 749;
1376    
1377    if (isMobile) {
1378      const mobileModal = document.querySelector('#referralMobileModal details');
1379      const mobileMessageElement = document.getElementById('referralSignupMessageMobile');
1380      
1381      if (mobileModal && mobileMessageElement) {
1382        if (creditAmount) {
1383          const finalMessage = referralMessageTemplate
1384            .replace('__CREDIT_AMOUNT__', creditAmount)
1385            .replace('__CURRENCY_CODE__', shopCurrency);
1386          
1387          mobileMessageElement.textContent = finalMessage;
1388        }
1389        
1390        mobileModal.setAttribute('open', '');
1391      }
1392    } else {
1393      const notification = document.getElementById('referralNotification');
1394      
1395      if (notification) {
1396        if (creditAmount) {
1397          const messageElement = document.getElementById('referralSignupMessage');
1398          if (messageElement) {
1399            const finalMessage = referralMessageTemplate
1400              .replace('__CREDIT_AMOUNT__', creditAmount)
1401              .replace('__CURRENCY_CODE__', shopCurrency);
1402            
1403            messageElement.textContent = finalMessage;
1404          }
1405        }
1406        
1407        notification.style.display = 'block';
1408      }
1409    }
1410  }
1411
1412  showReferralNotification();
1413
1414  addEventListener('beforeunload', function() {
1415    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
1416    
1417    if (referralData.creditAmount !== undefined) {
1418      referralData.creditAmount = null;
1419      localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
1420    }
1421  });
1422
1423  function closeReferralNotification() {
1424    const notification = document.getElementById('referralNotification');
1425    if (notification) {
1426      notification.style.display = 'none';
1427    }
1428  }
1429
1430  function dismissReferralNotification() {
1431    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
1432    
1433    referralData.dismissed = true;
1434    referralData.timestamp = referralData.timestamp || Date.now();
1435    referralData.expirationDays = referralData.expirationDays || 3;
1436    
1437    localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
1438    
1439    closeReferralNotification();
1440  }
1441
1442  function goToSignupPage() {
1443    location.href = '/account/register';
1444    dismissReferralNotification();
1445  }
1446
1447  function closeMobileReferralModal() {
1448    const mobileModal = document.querySelector('#referralMobileModal details');
1449    if (mobileModal) {
1450      mobileModal.removeAttribute('open');
1451    }
1452    
1453    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
1454    referralData.dismissed = true;
1455    referralData.timestamp = referralData.timestamp || Date.now();
1456    referralData.expirationDays = referralData.expirationDays || 3;
1457    localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
1458  }
1459
1460  function goToSignupPageFromMobile() {
1461    location.href = '/account/register';
1462    closeMobileReferralModal();
1463  }
1464  // End - referral notification popup
1465</script>
1465
1466
1467
1468  <main id="MainContent" class="content-for-layout focus-none" role="main" tabindex="-1">
1469    
1470    
1471
1472
1473
1474<div id='content_for_index'><div id='easystore-section-1652840809423'> <link
1475  rel="preload"
1476  href="https://store-themes.easystore.co/1306561/themes/63057/assets/splide.min.css?t=1787083337"
1477  as="style"
1478  onload="this.onload=null;this.rel='stylesheet'">
1479<link
1480  rel="preload"
1481  href="https://store-themes.easystore.co/1306561/themes/63057/assets/component-slider.css?v2?t=1787083337"
1482  as="style"
1483  onload="this.onload=null;this.rel='stylesheet'">
1484
1485<style>
1486  
1487    
1488    
1489    
1490    [data-slide-id="slide-1652840809423-1"] .slider__content {
1491      background-color: #E1E1E1
1492      ;
1493      color: #000000
1494      ;
1495    }
1496    [data-slide-id="slide-1652840809423-1"] .slider__content .btn {
1497      background-color: #000000
1498      ;
1499      border-color: #000000
1500      ;
1501      color: #E1E1E1
1502      ;
1503    }
1504  
1505    
1506    
1507    
1508    [data-slide-id="slide-1652840809423-2"] .slider__content {
1509      background-color: #E1E1E1
1510      ;
1511      color: #000000
1512      ;
1513    }
1514    [data-slide-id="slide-1652840809423-2"] .slider__content .btn {
1515      background-color: #000000
1516      ;
1517      border-color: #000000
1518      ;
1519      color: #E1E1E1
1520      ;
1521    }
1522  
1523    
1524    
1525    
1526    [data-slide-id="slide-1652840809423-3"] .slider__content {
1527      background-color: #E1E1E1
1528      ;
1529      color: #000000
1530      ;
1531    }
1532    [data-slide-id="slide-1652840809423-3"] .slider__content .btn {
1533      background-color: #000000
1534      ;
1535      border-color: #000000
1536      ;
1537      color: #E1E1E1
1538      ;
1539    }
1540  
1541</style>
1542
1543<div class="slider-section">
1544  <div id="slider-1652840809423" class="splide slider-component">
1545    <div class="splide__track">
1546      <ul class="splide__list">
1547        
1548          
1549          
1550          
1551          
1552            <li data-slide-id="slide-1652840809423-1" data-splide-interval="5000"class="splide__slide">
1553              <div class="split-slideshow__slider split-slideshow__slider--right">
1554                
1555                  <div class="slider__image-wrapper">
1556                    
1557                      <a href="https://www.tpypy.com/collections/all">
1558                      
1559                      
1560                        <img
1561                          src="https://cdn.store-assets.com/s/1306561/f/14363242.jpg?width=550&format=webp"
1562                          alt="御品元冰火湯圓 | 御品元冰火湯圓"
1563                          class="slide-mobile-img"
1564                          width="100%"
1565                          loading="lazy">
1566                      
1567                      <img
1568                        srcset="https://cdn.store-assets.com/s/1306561/f/14363242.jpg?width=550&format=webp 550w, https://cdn.store-assets.com/s/1306561/f/14363242.jpg?width=710&format=webp 710w, https://cdn.store-assets.com/s/1306561/f/14363242.jpg?width=1500&format=webp 1500w"
1569                        src="https://cdn.store-assets.com/s/1306561/f/14363242.jpg?width=550&format=webp"
1570                        sizes="(min-width: 990px) 950px, (min-width: 750px) 710px, 550px"
1571                        alt="御品元冰火湯圓 | 御品元冰火湯圓"
1572                        width="100%"
1573                        loading="lazy">
1574                      
1575                      </a>
1576                    
1577                  </div>
1578                
1579                
1580                  <div class="slider__content">
1581                    <div>
1582                      
1583                        <h2 class="h1">御品元冰火湯圓</h2>
1584                      
1585                      
1586                        <p>堅持古法手工製成,真材實料,品質保證。</p>
1587                      
1588                      
1589                        <a href="https://www.tpypy.com/collections/all" class="btn">立即購買</a>
1590                      
1591                    </div>
1592                  </div>
1593                
1594              </div>
1595            </li>
1596          
1597        
1598          
1599          
1600          
1601          
1602            <li data-slide-id="slide-1652840809423-2" data-splide-interval="5000"class="splide__slide">
1603              <div class="split-slideshow__slider split-slideshow__slider--left">
1604                
1605                  <div class="slider__image-wrapper">
1606                    
1607                      <a href="https://www.tpypy.com/collections/all">
1608                      
1609                      
1610                        <img
1611                          src="https://cdn.store-assets.com/s/1306561/f/14363156.jpg?width=550&format=webp"
1612                          alt="秉持傳統手作元宵 | 御品元冰火湯圓"
1613                          class="slide-mobile-img"
1614                          width="100%"
1615                          loading="lazy">
1616                      
1617                      <img
1618                        srcset="https://cdn.store-assets.com/s/1306561/f/14363156.jpg?width=550&format=webp 550w, https://cdn.store-assets.com/s/1306561/f/14363156.jpg?width=710&format=webp 710w, https://cdn.store-assets.com/s/1306561/f/14363156.jpg?width=1500&format=webp 1500w"
1619                        src="https://cdn.store-assets.com/s/1306561/f/14363156.jpg?width=550&format=webp"
1620                        sizes="(min-width: 990px) 950px, (min-width: 750px) 710px, 550px"
1621                        alt="秉持傳統手作元宵 | 御品元冰火湯圓"
1622                        width="100%"
1623                        loading="lazy">
1624                      
1625                      </a>
1626                    
1627                  </div>
1628                
1629                
1630                  <div class="slider__content">
1631                    <div>
1632                      
1633                        <h2 class="h1">秉持傳統手作元宵</h2>
1634                      
1635                      
1636                        <p>使用兩年以上老糯米,口感Q彈帶勁</p>
1637                      
1638                      
1639                        <a href="https://www.tpypy.com/collections/all" class="btn">立即購買</a>
1640                      
1641                    </div>
1642                  </div>
1643                
1644              </div>
1645            </li>
1646          
1647        
1648          
1649          
1650          
1651          
1652            <li data-slide-id="slide-1652840809423-3" data-splide-interval="5000"class="splide__slide">
1653              <div class="split-slideshow__slider split-slideshow__slider--right">
1654                
1655                  <div class="slider__image-wrapper">
1656                    
1657                      <a href="https://www.tpypy.com/collections/all">
1658                      
1659                      
1660                        <img
1661                          src="https://cdn.store-assets.com/s/1306561/f/14363154.jpg?width=550&format=webp"
1662                          alt="使用純天然食材 | 御品元冰火湯圓"
1663                          class="slide-mobile-img"
1664                          width="100%"
1665                          loading="lazy">
1666                      
1667                      <img
1668                        srcset="https://cdn.store-assets.com/s/1306561/f/14363154.jpg?width=550&format=webp 550w, https://cdn.store-assets.com/s/1306561/f/14363154.jpg?width=710&format=webp 710w, https://cdn.store-assets.com/s/1306561/f/14363154.jpg?width=1500&format=webp 1500w"
1669                        src="https://cdn.store-assets.com/s/1306561/f/14363154.jpg?width=550&format=webp"
1670                        sizes="(min-width: 990px) 950px, (min-width: 750px) 710px, 550px"
1671                        alt="使用純天然食材 | 御品元冰火湯圓"
1672                        width="100%"
1673                        loading="lazy">
1674                      
1675                      </a>
1676                    
1677                  </div>
1678                
1679                
1680                  <div class="slider__content">
1681                    <div>
1682                      
1683                        <h2 class="h1">使用純天然食材</h2>
1684                      
1685                      
1686                        <p>全部成分皆為天然食材,絕無添加防腐劑</p>
1687                      
1688                      
1689                        <a href="https://www.tpypy.com/collections/all" class="btn">立即購買</a>
1690                      
1691                    </div>
1692                  </div>
1693                
1694              </div>
1695            </li>
1696          
1697        
1698      </ul>
1699    </div>
1700  </div>
1701
1702</div>
1703
1704
1705<script src="https://store-themes.easystore.co/1306561/themes/63057/assets/splide.min.js?t=1787083337" type="text/javascript" ></script>
1705
1706
1707<script>
1708
1709  document.addEventListener('DOMContentLoaded', function() {
1710    if (document.querySelector('#slider-1652840809423')) {
1711      var splide = new Splide('#slider-1652840809423', {
1712        type: 'fade',
1713        
1714          autoplay : true,
1715        
1716        pauseOnHover: false,
1717        pagination: true,
1718        rewind: true
1719      });
1720
1721      splide.mount();
1722    }
1723  });
1724</script>
1724
1725
1726
1727 </div><div id='easystore-section-1688481311493'> <link rel="preload" href="https://store-themes.easystore.co/1306561/themes/63057/assets/section-image-banner.css?t=1787083337" as="style" onload="this.onload=null;this.rel='stylesheet'">
1728
1729<style>
1730  @media screen and (max-width: 749px) {
1731    #Banner1688481311493::before,
1732    #Banner1688481311493 .banner__media::before,
1733    #Banner1688481311493:not(.banner--mobile-bottom) .banner__content::before {
1734      padding-bottom: 50%;
1735      content: '';
1736      display: block;
1737    }
1738  }
1739
1740  @media screen and (min-width: 750px) {
1741    #Banner1688481311493::before,
1742    #Banner1688481311493 .banner__media::before {
1743      padding-bottom: 50%;
1744      content: '';
1745      display: block;
1746    }
1747  }
1748
1749  #Banner1688481311493::after {
1750    opacity: 0;
1751  }
1752</style>
1753
1754<div id="Banner1688481311493" class="banner  banner--mobile-bottom banner--desktop-transparent">
1755  
1756    <div class="banner__media media banner__media-half">
1757      <img
1758        srcset="https://cdn.store-assets.com/s/1306561/f/11615161.jpg?width=375&format=webp 375w,https://cdn.store-assets.com/s/1306561/f/11615161.jpg?width=750&format=webp 750w,https://cdn.store-assets.com/s/1306561/f/11615161.jpg?width=1500&format=webp 1500w"
1759        sizes="(min-width: 750px) 50vw, 100vw"
1760        src="https://cdn.store-assets.com/s/1306561/f/11615161.jpg?width=1500&format=webp"
1761        alt="https://cdn.store-assets.com/s/1306561/f/11615161.jpg"
1762        class="banner__media-image-half"
1763        loading="lazy"
1764      >
1765    </div>
1766  
1767  
1768    <div class="banner__media media banner__media-half">
1769      <img
1770        srcset="https://cdn.store-assets.com/s/1306561/f/12039546.jpeg?width=375&format=webp 375w,https://cdn.store-assets.com/s/1306561/f/12039546.jpeg?width=750&format=webp 750w,https://cdn.store-assets.com/s/1306561/f/12039546.jpeg?width=1500&format=webp 1500w"
1771        sizes="(min-width: 750px) 50vw, 100vw"
1772        src="https://cdn.store-assets.com/s/1306561/f/12039546.jpeg?width=1500&format=webp"
1773        alt="https://cdn.store-assets.com/s/1306561/f/12039546.jpeg"
1774        class="banner__media-image-half"
1775        loading="lazy"
1776      >
1777    </div>
1778  
1779  <div class="banner__content banner__content--center page-width">
1780    <div class="banner__box color-background-1">
1781      
1782      
1783        
1784            <h2 class="banner__heading h1">
1785              <span>秉持傳統手做</span>
1786            </h2>
1787          
1788      
1789      
1790        
1791            <div class="banner__text">
1792              <span>堅持古法製成,從原物料到成品嚴格把關</span>
1793            </div>
1794          
1795      
1796      
1797        
1798            <div class="banner__buttons banner__buttons--multiple">
1799              
1800                <a  href="https://www.instagram.com/yupinyuan_tw?igsh=bGJ1emtycm9vZWhz&utm_source=qr" class="button button--primary">了解更多</a>
1801              
1802            </div>
1803        
1804      
1805    </div>
1806  </div>
1807</div>
1808
1809
1810 </div><div id='easystore-section-1649057694043'> <link
1811  rel="preload"
1812  href="https://store-themes.easystore.co/1306561/themes/63057/assets/component-price.css?t=1787083337"
1813  as="style"
1814  onload="this.onload=null;this.rel='stylesheet'">
1815<link
1816  rel="preload"
1817  href="https://store-themes.easystore.co/1306561/themes/63057/assets/component-card.css?t=1787083337"
1818  as="style"
1819  onload="this.onload=null;this.rel='stylesheet'">
1820<link
1821  rel="preload"
1822  href="https://store-themes.easystore.co/1306561/themes/63057/assets/component-product-grid.css?t=1787083337"
1823  as="style"
1824  onload="this.onload=null;this.rel='stylesheet'">
1825<link
1826  rel="preload"
1827  href="https://store-themes.easystore.co/1306561/themes/63057/assets/component-loading-overlay.css?t=1787083337"
1828  as="style"
1829  onload="this.onload=null;this.rel='stylesheet'">
1830
1831<link
1832  rel="preload"
1833  href="https://store-themes.easystore.co/1306561/themes/63057/assets/component-slider.css?t=1787083337"
1834  as="style"
1835  onload="this.onload=null;this.rel='stylesheet'">
1836<link
1837  rel="preload"
1838  href="https://store-themes.easystore.co/1306561/themes/63057/assets/template-collection.css?t=1787083337"
1839  as="style"
1840  onload="this.onload=null;this.rel='stylesheet'">
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850<style>
1851  #section-1649057694043 .product-card-wrapper {
1852    background-color: rgba(237, 237, 237, 1);
1853  }
1854</style>
1855
1856
1857<div id="section-1649057694043" class="spaced-section page-width page-width-desktop">
1858  <div class="title-wrapper-with-link title-wrapper--self-padded-tablet-down">
1859    <h2 class="title">全部都是手工,自己做的!</h2>
1860
1861    
1862  </div>
1863
1864  
1865
1866    <slider-component class="slider-mobile-gutter">
1867      <ul class="grid grid--2-col product-grid grid--3-col-tablet grid--4-col-desktop grid--quarter-max   slider slider--tablet grid--peek" role="list">
1868        
1869          <li class="grid__item slider__slide">
1870            
1871
1872
1873
1874
1875
1876
1877
1878  
1879
1880
1881
1882
1883  
1884
1885
1886<div class="product-card-wrapper card-wrapper">
1887  <a href="/collections/feature-on-homepage/products/御品元禮品袋" class="full-unstyled-link">
1888    
1889      <add-to-cart-button>
1890        <div class="card__badge card__badge-top-right card__badge-float-edge">
1891          <span class="badge badge-circle badge--bottom-right addToClassList" data-variant-id="60589932" data-product-handle="御品元禮品袋" data-product-price="30" data-product-price-max="30.0" data-product-available="1" data-product-id="13075272" data-token="6cbTyCiCbcMqkUBsbG4d9fXH0IE7qT6ixs2TZMuy" data-quantity="1" data-url="/collections/feature-on-homepage/products/御品元禮品袋">	
1892            
1893
1894
1895    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-plus " fill="none" viewBox="0 0 10 10">
1896      <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"></path>
1897    </svg>
1898
1899  
1900
1901          </span>
1902          <div class="loading-overlay hidden">
1903            <div class="loading-overlay__spinner">
1904              <svg aria-hidden="true" focusable="false" role="presentation" class="spinner" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
1905                  <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle>
1906              </svg>
1907            </div>
1908          </div>
1909        </div>
1910      </add-to-cart-button>
1911    
1912    <div class="card card--product grid-link__image--product" tabindex="-1">
1913      <div class="card__inner">
1914        <div class="media media--transparent media--square media--hover-effect">
1915          <img src="https://cdn.store-assets.com/s/1306561/i/81192509.jpeg?width=480&format=webp" alt="IMG_6634-1734076589852" loading="lazy">
1916          
1917        </div>
1918        
1919        
1920      </div>
1921    </div>
1922    
1923    <div class="card-information">
1924      <div class="card-information__wrapper">
1925        
1926        <span class="card-information__text">
1927          御品元禮品袋
1928        </span>
1929        
1930        <span class="caption-large light"></span>
1931        
1932
1933<div class="price
1934  
1935  
1936  "
1937  >
1938
1939  <dl>
1940    <div class="price__regular">
1941      <dt>
1942        <span class="visually-hidden visually-hidden--inline">Regular price</span>
1943      </dt>
1944      <dd >
1945        <span class="price-item price-item--regular">
1946          
1947            
1948  
1949    <span class=money data-ori-price='30.00'>NT$ 30.00 </span>
1950  
1951
1952          
1953        </span>
1954      </dd>
1955    </div>
1956    <div class="price__sale">
1957      <dt>
1958        <span class="visually-hidden visually-hidden--inline">Sale price</span>
1959      </dt>
1960      <dd >
1961        <span  class="price-item price-item--sale">
1962          
1963            
1964  
1965    <span class=money data-ori-price='30.00'>NT$ 30.00 </span>
1966  
1967
1968          
1969        </span>
1970      </dd>
1971      
1972      <dt class="price__compare">
1973        <span class="visually-hidden visually-hidden--inline">Regular price</span>
1974      </dt>
1975      <dd class="price__compare">
1976        <s class="price-item price-item--regular">
1977          
1978            <span class=money data-ori-price='0.00'>NT$ 0.00 </span> 
1979          
1980          
1981        </s>
1982      </dd>
1983      
1984    </div>
1985  </dl>
1986  
1987</div>
1988
1989      </div>
1990      
1991    </div>
1992  </a>
1993</div>
1994
1995
1996          </li>
1997        
1998          <li class="grid__item slider__slide">
1999            
2000
2001
2002
2003
2004
2005
2006
2007  
2008
2009
2010
2011
2012  
2013
2014
2015<div class="product-card-wrapper card-wrapper">
2016  <a href="/collections/feature-on-homepage/products/御品元冰火湯圓" class="full-unstyled-link">
2017    
2018      <add-to-cart-button>
2019        <div class="card__badge card__badge-top-right card__badge-float-edge">
2020          <span class="badge badge-circle badge--bottom-right addToClassList" data-variant-id="46310588" data-product-handle="御品元冰火湯圓" data-product-price="220" data-product-price-max="220.0" data-product-available="1" data-product-id="10080249" data-token="6cbTyCiCbcMqkUBsbG4d9fXH0IE7qT6ixs2TZMuy" data-quantity="1" data-url="/collections/feature-on-homepage/products/御品元冰火湯圓">	
2021            
2022
2023
2024    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-plus " fill="none" viewBox="0 0 10 10">
2025      <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"></path>
2026    </svg>
2027
2028  
2029
2030          </span>
2031          <div class="loading-overlay hidden">
2032            <div class="loading-overlay__spinner">
2033              <svg aria-hidden="true" focusable="false" role="presentation" class="spinner" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
2034                  <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle>
2035              </svg>
2036            </div>
2037          </div>
2038        </div>
2039      </add-to-cart-button>
2040    
2041    <div class="card card--product grid-link__image--product" tabindex="-1">
2042      <div class="card__inner">
2043        <div class="media media--transparent media--square media--hover-effect">
2044          <img src="https://cdn.store-assets.com/s/1306561/i/64343907.jpeg?width=480&format=webp" alt="S__3481663" loading="lazy">
2045          
2046        </div>
2047        
2048        
2049      </div>
2050    </div>
2051    
2052    <div class="card-information">
2053      <div class="card-information__wrapper">
2054        
2055        <span class="card-information__text">
2056          傳統手作芝麻元宵(冷凍)
2057        </span>
2058        
2059        <span class="caption-large light"></span>
2060        
2061
2062<div class="price
2063  
2064  
2065  "
2066  >
2067
2068  <dl>
2069    <div class="price__regular">
2070      <dt>
2071        <span class="visually-hidden visually-hidden--inline">Regular price</span>
2072      </dt>
2073      <dd >
2074        <span class="price-item price-item--regular">
2075          
2076            
2077  
2078    <span class=money data-ori-price='220.00'>NT$ 220.00 </span>
2079  
2080
2081          
2082        </span>
2083      </dd>
2084    </div>
2085    <div class="price__sale">
2086      <dt>
2087        <span class="visually-hidden visually-hidden--inline">Sale price</span>
2088      </dt>
2089      <dd >
2090        <span  class="price-item price-item--sale">
2091          
2092            
2093  
2094    <span class=money data-ori-price='220.00'>NT$ 220.00 </span>
2095  
2096
2097          
2098        </span>
2099      </dd>
2100      
2101      <dt class="price__compare">
2102        <span class="visually-hidden visually-hidden--inline">Regular price</span>
2103      </dt>
2104      <dd class="price__compare">
2105        <s class="price-item price-item--regular">
2106          
2107            <span class=money data-ori-price='220.00'>NT$ 220.00 </span> 
2108          
2109          
2110        </s>
2111      </dd>
2112      
2113    </div>
2114  </dl>
2115  
2116</div>
2117
2118      </div>
2119      
2120    </div>
2121  </a>
2122</div>
2123
2124
2125          </li>
2126        
2127          <li class="grid__item slider__slide">
2128            
2129
2130
2131
2132
2133
2134
2135
2136  
2137
2138
2139
2140
2141  
2142
2143
2144<div class="product-card-wrapper card-wrapper">
2145  <a href="/collections/feature-on-homepage/products/傳統手作花生元宵-冷凍-" class="full-unstyled-link">
2146    
2147      <add-to-cart-button>
2148        <div class="card__badge card__badge-top-right card__badge-float-edge">
2149          <span class="badge badge-circle badge--bottom-right addToClassList" data-variant-id="46310605" data-product-handle="傳統手作花生元宵-冷凍-" data-product-price="220" data-product-price-max="220.0" data-product-available="1" data-product-id="10080255" data-token="6cbTyCiCbcMqkUBsbG4d9fXH0IE7qT6ixs2TZMuy" data-quantity="1" data-url="/collections/feature-on-homepage/products/傳統手作花生元宵-冷凍-">	
2150            
2151
2152
2153    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-plus " fill="none" viewBox="0 0 10 10">
2154      <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"></path>
2155    </svg>
2156
2157  
2158
2159          </span>
2160          <div class="loading-overlay hidden">
2161            <div class="loading-overlay__spinner">
2162              <svg aria-hidden="true" focusable="false" role="presentation" class="spinner" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
2163                  <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle>
2164              </svg>
2165            </div>
2166          </div>
2167        </div>
2168      </add-to-cart-button>
2169    
2170    <div class="card card--product grid-link__image--product" tabindex="-1">
2171      <div class="card__inner">
2172        <div class="media media--transparent media--square media--hover-effect">
2173          <img src="https://cdn.store-assets.com/s/1306561/i/64495022.jpeg?width=480&format=webp" alt="S__3498454" loading="lazy">
2174          
2175        </div>
2176        
2177        
2178      </div>
2179    </div>
2180    
2181    <div class="card-information">
2182      <div class="card-information__wrapper">
2183        
2184        <span class="card-information__text">
2185          傳統手作花生元宵(冷凍)
2186        </span>
2187        
2188        <span class="caption-large light"></span>
2189        
2190
2191<div class="price
2192  
2193  
2194  "
2195  >
2196
2197  <dl>
2198    <div class="price__regular">
2199      <dt>
2200        <span class="visually-hidden visually-hidden--inline">Regular price</span>
2201      </dt>
2202      <dd >
2203        <span class="price-item price-item--regular">
2204          
2205            
2206  
2207    <span class=money data-ori-price='220.00'>NT$ 220.00 </span>
2208  
2209
2210          
2211        </span>
2212      </dd>
2213    </div>
2214    <div class="price__sale">
2215      <dt>
2216        <span class="visually-hidden visually-hidden--inline">Sale price</span>
2217      </dt>
2218      <dd >
2219        <span  class="price-item price-item--sale">
2220          
2221            
2222  
2223    <span class=money data-ori-price='220.00'>NT$ 220.00 </span>
2224  
2225
2226          
2227        </span>
2228      </dd>
2229      
2230      <dt class="price__compare">
2231        <span class="visually-hidden visually-hidden--inline">Regular price</span>
2232      </dt>
2233      <dd class="price__compare">
2234        <s class="price-item price-item--regular">
2235          
2236            <span class=money data-ori-price='220.00'>NT$ 220.00 </span> 
2237          
2238          
2239        </s>
2240      </dd>
2241      
2242    </div>
2243  </dl>
2244  
2245</div>
2246
2247      </div>
2248      
2249    </div>
2250  </a>
2251</div>
2252
2253
2254          </li>
2255        
2256          <li class="grid__item slider__slide">
2257            
2258
2259
2260
2261
2262
2263
2264
2265  
2266
2267
2268
2269
2270  
2271
2272
2273<div class="product-card-wrapper card-wrapper">
2274  <a href="/collections/feature-on-homepage/products/桂花蜜" class="full-unstyled-link">
2275    
2276      <add-to-cart-button>
2277        <div class="card__badge card__badge-top-right card__badge-float-edge">
2278          <span class="badge badge-circle badge--bottom-right addToClassList" data-variant-id="48364148" data-product-handle="桂花蜜" data-product-price="60" data-product-price-max="60.0" data-product-available="1" data-product-id="10525441" data-token="6cbTyCiCbcMqkUBsbG4d9fXH0IE7qT6ixs2TZMuy" data-quantity="1" data-url="/collections/feature-on-homepage/products/桂花蜜">	
2279            
2280
2281
2282    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-plus " fill="none" viewBox="0 0 10 10">
2283      <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"></path>
2284    </svg>
2285
2286  
2287
2288          </span>
2289          <div class="loading-overlay hidden">
2290            <div class="loading-overlay__spinner">
2291              <svg aria-hidden="true" focusable="false" role="presentation" class="spinner" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
2292                  <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle>
2293              </svg>
2294            </div>
2295          </div>
2296        </div>
2297      </add-to-cart-button>
2298    
2299    <div class="card card--product grid-link__image--product" tabindex="-1">
2300      <div class="card__inner">
2301        <div class="media media--transparent media--square media--hover-effect">
2302          <img src="https://cdn.store-assets.com/s/1306561/i/64343925.jpeg?width=480&format=webp" alt="桂花蜜(自己拍)" loading="lazy">
2303          
2304        </div>
2305        
2306        
2307      </div>
2308    </div>
2309    
2310    <div class="card-information">
2311      <div class="card-information__wrapper">
2312        
2313        <span class="card-information__text">
2314          桂花蜜
2315        </span>
2316        
2317        <span class="caption-large light"></span>
2318        
2319
2320<div class="price
2321  
2322  
2323  "
2324  >
2325
2326  <dl>
2327    <div class="price__regular">
2328      <dt>
2329        <span class="visually-hidden visually-hidden--inline">Regular price</span>
2330      </dt>
2331      <dd >
2332        <span class="price-item price-item--regular">
2333          
2334            
2335  
2336    <span class=money data-ori-price='60.00'>NT$ 60.00 </span>
2337  
2338
2339          
2340        </span>
2341      </dd>
2342    </div>
2343    <div class="price__sale">
2344      <dt>
2345        <span class="visually-hidden visually-hidden--inline">Sale price</span>
2346      </dt>
2347      <dd >
2348        <span  class="price-item price-item--sale">
2349          
2350            
2351  
2352    <span class=money data-ori-price='60.00'>NT$ 60.00 </span>
2353  
2354
2355          
2356        </span>
2357      </dd>
2358      
2359      <dt class="price__compare">
2360        <span class="visually-hidden visually-hidden--inline">Regular price</span>
2361      </dt>
2362      <dd class="price__compare">
2363        <s class="price-item price-item--regular">
2364          
2365            <span class=money data-ori-price='60.00'>NT$ 60.00 </span> 
2366          
2367          
2368        </s>
2369      </dd>
2370      
2371    </div>
2372  </dl>
2373  
2374</div>
2375
2376      </div>
2377      
2378    </div>
2379  </a>
2380</div>
2381
2382
2383          </li>
2384        
2385      </ul>
2386      
2387        <div class="slider-buttons no-js-hidden">
2388          <button
2389            type="button"
2390            class="slider-button slider-button--prev"
2391            name="previous">
2392
2393
2394    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
2395      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
2396    </svg>
2397
2398  
2399</button>
2400          <div class="slider-counter caption">
2401            <span class="slider-counter--current">1</span>
2402            <span aria-hidden="true">
2403              /
2404            </span>
2405            <span class="slider-counter--total">4</span>
2406          </div>
2407          <button
2408            type="button"
2409            class="slider-button slider-button--next"
2410            name="next">
2411
2412
2413    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
2414      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
2415    </svg>
2416
2417  
2418</button>
2419        </div>
2420      
2421    </slider-component>
2422
2423    
2424
2425  
2426
2427</div>
2428
2429 </div><div id='easystore-section-1649058117248'> <link rel="preload" href="https://store-themes.easystore.co/1306561/themes/63057/assets/section-multicolumn.css?t=1787083337" as="style" onload="this.onload=null;this.rel='stylesheet'">
2430<link rel="preload" href="https://store-themes.easystore.co/1306561/themes/63057/assets/component-slider.css?t=1787083337" as="style" onload="this.onload=null;this.rel='stylesheet'">
2431<div class="multicolumn background-primary">
2432  <div class="page-width">
2433    <div class="title-wrapper-with-link title-wrapper--self-padded-mobile">
2434      <h2 class="title">
2435        更多資訊
2436      </h2>
2437      
2438    </div>
2439    <slider-component class="slider-mobile-gutter">
2440      <ul class="multicolumn-list grid grid--1-col grid--3-col-tablet slider slider--mobile grid--peek"
2441        id="Slider-"
2442        role="list"
2443      >
2444        
2445        
2446        
2447          <li class="multicolumn-list__item grid__item slider__slide center">
2448            <div class="multicolumn-card">
2449              
2450                
2451                
2452                <div class="multicolumn-card__image-wrapper multicolumn-card__image-wrapper--full-width">
2453                  <a href="/collections/all" class="media media--transparent media--portrait"
2454                    >
2455                    
2456                    <img
2457                      srcset="https://cdn.store-assets.com/s/1306561/f/11615401.jpg?width=550&format=webp 550w, https://cdn.store-assets.com/s/1306561/f/11615401.jpg?width=710&format=webp 710w, https://cdn.store-assets.com/s/1306561/f/11615401.jpg?width=1420&format=webp 1420w"
2458                      src="https://cdn.store-assets.com/s/1306561/f/11615401.jpg?width=550&format=webp"
2459                      sizes="(min-width: 990px) 710px,
2460                        (min-width: 750px) 550px,
2461                        550px"
2462                      alt=""
2463                      loading="lazy"
2464                    >
2465                    
2466                  </a>
2467                </div>
2468              
2469              <div class="multicolumn-card__info">
2470                
2471                  <h3>古法手工製成</h3>
2472                
2473                
2474                  <div class="rte">從原物料開始製作,手工、天然</div>
2475                
2476                
2477                  <a href="/collections/all" class="button button--secondary">立即下單</a>
2478                
2479              </div>
2480            </div>
2481          </li>
2482        
2483        
2484        
2485          <li class="multicolumn-list__item grid__item slider__slide center">
2486            <div class="multicolumn-card">
2487              
2488                
2489                
2490                <div class="multicolumn-card__image-wrapper multicolumn-card__image-wrapper--full-width">
2491                  <a href="/collections/all" class="media media--transparent media--portrait"
2492                    >
2493                    
2494                    <img
2495                      srcset="https://cdn.store-assets.com/s/1306561/f/11929992.jpg?width=550&format=webp 550w, https://cdn.store-assets.com/s/1306561/f/11929992.jpg?width=710&format=webp 710w, https://cdn.store-assets.com/s/1306561/f/11929992.jpg?width=1420&format=webp 1420w"
2496                      src="https://cdn.store-assets.com/s/1306561/f/11929992.jpg?width=550&format=webp"
2497                      sizes="(min-width: 990px) 710px,
2498                        (min-width: 750px) 550px,
2499                        550px"
2500                      alt=""
2501                      loading="lazy"
2502                    >
2503                    
2504                  </a>
2505                </div>
2506              
2507              <div class="multicolumn-card__info">
2508                
2509                  <h3>自家熬煮桂花蜜</h3>
2510                
2511                
2512                  <div class="rte">以大火釀出桂花香,原料天然樸實無化學添加</div>
2513                
2514                
2515                  <a href="/collections/all" class="button button--secondary">立即下單</a>
2516                
2517              </div>
2518            </div>
2519          </li>
2520        
2521        
2522        
2523          <li class="multicolumn-list__item grid__item slider__slide center">
2524            <div class="multicolumn-card">
2525              
2526                
2527                
2528                <div class="multicolumn-card__image-wrapper multicolumn-card__image-wrapper--full-width">
2529                  <a href="https://lin.ee/p71oiiy" class="media media--transparent media--portrait"
2530                    >
2531                    
2532                    <img
2533                      srcset="https://cdn.store-assets.com/s/1306561/f/11132651.jpg?width=550&format=webp 550w, https://cdn.store-assets.com/s/1306561/f/11132651.jpg?width=710&format=webp 710w, https://cdn.store-assets.com/s/1306561/f/11132651.jpg?width=1420&format=webp 1420w"
2534                      src="https://cdn.store-assets.com/s/1306561/f/11132651.jpg?width=550&format=webp"
2535                      sizes="(min-width: 990px) 710px,
2536                        (min-width: 750px) 550px,
2537                        550px"
2538                      alt=""
2539                      loading="lazy"
2540                    >
2541                    
2542                  </a>
2543                </div>
2544              
2545              <div class="multicolumn-card__info">
2546                
2547                  <h3>聯絡我們</h3>
2548                
2549                
2550                  <div class="rte">任何有關本店問題,歡迎與我們聯絡!</div>
2551                
2552                
2553                  <a href="https://lin.ee/p71oiiy" class="button button--secondary">馬上聯絡</a>
2554                
2555              </div>
2556            </div>
2557          </li>
2558        
2559      </ul>
2560
2561      
2562        <div class="slider-buttons no-js-hidden medium-hide">
2563          <button type="button" class="slider-button slider-button--prev" name="previous" aria-label="accessibility.previous_slide">
2564
2565
2566    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
2567      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
2568    </svg>
2569
2570  
2571</button>
2572          <div class="slider-counter caption">
2573            <span class="slider-counter--current">1</span>
2574            <span aria-hidden="true"> / </span>
2575            <span class="visually-hidden">accessibility.of</span>
2576            <span class="slider-counter--total">3</span>
2577          </div>
2578          <button type="button" class="slider-button slider-button--next" name="next" aria-label="accessibility.next_slide">
2579
2580
2581    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
2582      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
2583    </svg>
2584
2585  
2586</button>
2587        </div>
2588      
2589    </slider-component>
2590    <div class="center small-hide medium-hide">
2591      
2592    </div>
2593  </div>
2594</div>
2595
2596
2597 </div></div>
2598
2599
2600
2601
2602
2603    
2604  </main>
2605 	<style>
2606  .footer{
2607    background-color: #010517;
2608    color: #FEFEFE;
2609    --color-foreground: 254,254,254;
2610  }
2611  .footer .link--text,
2612  .footer .list-menu__item--link,
2613  .footer .footer-block__details-content .list-menu__item--link{
2614    color: #FEFEFE;
2615  }
2616  .footer-block__heading{
2617    color: #FFFFFF;
2618  }
2619</style>
2620
2621<link rel="preload" href="https://store-themes.easystore.co/1306561/themes/63057/assets/section-footer.css?t=1787083337" as="style" onload="this.onload=null;this.rel='stylesheet'">
2622
2623<footer class="footer color-background-1">
2624  <div class="footer__content-top page-width">
2625    <div class="grid grid--1-col grid--4-col-tablet ">
2626      
2627      
2628      
2629        <div class="grid__item">
2630          
2631              <h2 class="footer-block__heading">關注我們~</h2>
2632              <ul class="footer__list-social list-unstyled list-social footer-block__details-content" role="list">
2633                
2634                
2635                  <li class="list-social__item">
2636                    <a href="https://zh-tw.facebook.com/Ice.Fire.Dumpling/" class="link link--text list-social__link">
2637                      
2638
2639
2640    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-facebook "
2641    viewBox="0 0 18 18">
2642      <path fill="currentColor"
2643        d="M16.42.61c.27 0 .5.1.69.28.19.2.28.42.28.7v15.44c0 .27-.1.5-.28.69a.94.94 0 01-.7.28h-4.39v-6.7h2.25l.31-2.65h-2.56v-1.7c0-.4.1-.72.28-.93.18-.2.5-.32 1-.32h1.37V3.35c-.6-.06-1.27-.1-2.01-.1-1.01 0-1.83.3-2.45.9-.62.6-.93 1.44-.93 2.53v1.97H7.04v2.65h2.24V18H.98c-.28 0-.5-.1-.7-.28a.94.94 0 01-.28-.7V1.59c0-.27.1-.5.28-.69a.94.94 0 01.7-.28h15.44z">
2644      </path>
2645    </svg>
2646
2647  
2648
2649                    </a>
2650                  </li>
2651                
2652                
2653                  <li class="list-social__item">
2654                    <a href="https://www.instagram.com/yupinyuan_tw?igsh=bGJ1emtycm9vZWhz&utm_source=qr" class="link link--text list-social__link">
2655                      
2656
2657
2658    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-instagram "
2659    viewBox="0 0 18 18">
2660      <path fill="currentColor"
2661        d="M8.77 1.58c2.34 0 2.62.01 3.54.05.86.04 1.32.18 1.63.3.41.17.7.35 1.01.66.3.3.5.6.65 1 .12.32.27.78.3 1.64.05.92.06 1.2.06 3.54s-.01 2.62-.05 3.54a4.79 4.79 0 01-.3 1.63c-.17.41-.35.7-.66 1.01-.3.3-.6.5-1.01.66-.31.12-.77.26-1.63.3-.92.04-1.2.05-3.54.05s-2.62 0-3.55-.05a4.79 4.79 0 01-1.62-.3c-.42-.16-.7-.35-1.01-.66-.31-.3-.5-.6-.66-1a4.87 4.87 0 01-.3-1.64c-.04-.92-.05-1.2-.05-3.54s0-2.62.05-3.54c.04-.86.18-1.32.3-1.63.16-.41.35-.7.66-1.01.3-.3.6-.5 1-.65.32-.12.78-.27 1.63-.3.93-.05 1.2-.06 3.55-.06zm0-1.58C6.39 0 6.09.01 5.15.05c-.93.04-1.57.2-2.13.4-.57.23-1.06.54-1.55 1.02C1 1.96.7 2.45.46 3.02c-.22.56-.37 1.2-.4 2.13C0 6.1 0 6.4 0 8.77s.01 2.68.05 3.61c.04.94.2 1.57.4 2.13.23.58.54 1.07 1.02 1.56.49.48.98.78 1.55 1.01.56.22 1.2.37 2.13.4.94.05 1.24.06 3.62.06 2.39 0 2.68-.01 3.62-.05.93-.04 1.57-.2 2.13-.41a4.27 4.27 0 001.55-1.01c.49-.49.79-.98 1.01-1.56.22-.55.37-1.19.41-2.13.04-.93.05-1.23.05-3.61 0-2.39 0-2.68-.05-3.62a6.47 6.47 0 00-.4-2.13 4.27 4.27 0 00-1.02-1.55A4.35 4.35 0 0014.52.46a6.43 6.43 0 00-2.13-.41A69 69 0 008.77 0z">
2662      </path>
2663      <path fill="currentColor"
2664        d="M8.8 4a4.5 4.5 0 100 9 4.5 4.5 0 000-9zm0 7.43a2.92 2.92 0 110-5.85 2.92 2.92 0 010 5.85zM13.43 5a1.05 1.05 0 100-2.1 1.05 1.05 0 000 2.1z">
2665      </path>
2666    </svg>
2667
2668  
2669
2670                    </a>
2671                  </li>
2672                
2673                
2674                
2675                
2676                  <li class="list-social__item">
2677                    <a href="https://lin.ee/Ha0R8Qz" class="link link--text list-social__link">
2678                      
2679
2680
2681    <svg class="icon icon-line-footer " fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 750 750"><path d="M375,.5C168.17.5.5,168.17.5,375S168.17,749.5,375,749.5,749.5,581.83,749.5,375,581.83.5,375,.5ZM570.75,476.91C518.48,537.06,401.6,610.33,375,621.53s-22.66-7.13-21.57-13.42c.63-3.76,3.55-21.33,3.55-21.33.83-6.36,1.66-16.23-.83-22.52-2.81-7-13.83-10.54-21.95-12.29C214.51,536.14,125.9,452.45,125.9,352.53,125.9,241,237.64,150.38,375,150.38s249.1,90.68,249.1,202.15h0C624.14,397.14,606.85,437.32,570.75,476.91Z"/><polygon points="324.38 298.65 324.38 298.65 324.38 298.65 324.38 298.65"/><path d="M324.38,298.65H306.91a4.86,4.86,0,0,0-4.86,4.85V412a4.86,4.86,0,0,0,4.86,4.85h17.47a4.86,4.86,0,0,0,4.85-4.85V303.5A4.86,4.86,0,0,0,324.38,298.65Z"/><path d="M444.67,298.65h-17.5a4.85,4.85,0,0,0-4.85,4.85V368l-49.73-67.17a4.57,4.57,0,0,0-.38-.49,2.76,2.76,0,0,0-.29-.3l-.09-.09a2.65,2.65,0,0,0-.26-.21l-.12-.1-.25-.18-.15-.08-.26-.14-.15-.08-.28-.12-.16,0-.28-.1-.18,0-.27-.06H351.08a4.85,4.85,0,0,0-4.85,4.84V412a4.85,4.85,0,0,0,4.85,4.85h17.48a4.85,4.85,0,0,0,4.85-4.85V347.54l49.81,67.26a5.15,5.15,0,0,0,1.22,1.2h.06l.29.18.14.07.24.12.23.1.15,0,.32.11H426a4.69,4.69,0,0,0,1.24.16h17.48a4.85,4.85,0,0,0,4.86-4.84h0V303.5A4.87,4.87,0,0,0,444.67,298.65Z"/><path d="M282.26,389.67h0l0,0H234.79V303.5a4.85,4.85,0,0,0-4.83-4.85H212.47a4.84,4.84,0,0,0-4.85,4.84h0V412a4.74,4.74,0,0,0,1.35,3.32.27.27,0,0,0,.07.08l.07.07a4.81,4.81,0,0,0,3.33,1.35h69.81a4.84,4.84,0,0,0,4.84-4.84h0V394.52A4.84,4.84,0,0,0,282.26,389.67Z"/><path d="M541.16,371.34a4.85,4.85,0,0,0,4.85-4.85h0V349a4.85,4.85,0,0,0-4.84-4.85H493.72V325.84l47.42,0A4.83,4.83,0,0,0,546,321V303.5a4.85,4.85,0,0,0-4.84-4.86H471.34A4.81,4.81,0,0,0,468,300l-.05.05-.08.09a4.82,4.82,0,0,0-1.34,3.33V412a4.77,4.77,0,0,0,1.35,3.33l.07.07.07.07a4.8,4.8,0,0,0,3.32,1.36h69.81A4.85,4.85,0,0,0,546,412h0V394.5a4.85,4.85,0,0,0-4.84-4.85H493.72V371.34Z"/></svg>
2682
2683  
2684
2685                    </a>
2686                  </li>
2687                
2688                
2689                
2690                
2691              </ul>
2692            
2693        </div>
2694      
2695      
2696      
2697        <div class="grid__item">
2698          
2699              <h2 class="footer-block__heading">
2700                哪裡可以找到我們?
2701              </h2>
2702              <ul class="footer-block__details-content list-unstyled">
2703                
2704                <li>
2705                  <a href="/store-locator"  class="link link--text list-menu__item list-menu__item--link">
2706                    本店地址
2707                  </a>
2708                </li>
2709                
2710                
2711              </ul>
2712            
2713        </div>
2714      
2715      
2716      
2717        <div class="grid__item">
2718          
2719              <h2 class="footer-block__heading">我們的堅持!</h2>
2720              <div class="footer-block__details-content">
2721                <p>古法手工製作,口味細心鑽研,品質嚴格把關。</p>
2722              </div>
2723            
2724        </div>
2725      
2726      
2727      
2728        <div class="grid__item">
2729          
2730              <h2 class="footer-block__heading">連絡電話:</h2>
2731              <div class="footer-block__details-content">
2732                <p>0955861816</p>
2733              </div>
2734            
2735        </div>
2736      
2737    </div>
2738  </div>
2739  <div class="footer__content-bottom">
2740    <div class="footer__content-bottom-wrapper page-width">
2741      <div class="footer__column footer__column--info">
2742
2743        
2744
2745
2746
2747        
2748        <div class="footer__copyright caption">
2749          <div class="copyright__content">© 2026 御品元冰火湯圓. Powered by <a href="http://www.easystore.co/?utm_source=storefront&utm_medium=sf_ref_footer&utm_campaign=sf_ref">EasyStore</a></div>
2750        </div>
2751
2752        <div class="footer__copyright caption">
2753          
2754            <div>
2755            
2756            
2757              
2758                <a href="/legal/terms-of-service">服務條款</a>
2759              
2760              
2761            
2762              
2763                | <a href="/legal/privacy-policy">隱私政策</a>
2764              
2765              
2766            
2767              
2768                | <a href="/legal/refund-policy">退款政策</a>
2769              
2770              
2771            
2772            </div>
2773         
2774        </div>
2775        
2776      </div>
2777    </div>
2778  </div>
2779</footer>
2780
2781
2782
2783  
2784
2785  
2785<script>
2786  EasyStore.Currencies.init([{"name":"New Taiwan Dollar","code":"TWD","rate":"1.0","format_prefix":"NT$","format_suffix":null,"format_decimals":0,"thousand_separator":",","is_primary":true}], 1)
2787</script>
2787
2788
2789
2790
2791  
2791<script>
2792    let page_template = 'index';
2793
2794    if(document.querySelector('.currency-picker')) {
2795      EasyStore.Currencies.change(document.querySelector('.currency-picker').value)
2796      EasyStore.Currencies.convertAll() 
2797    }
2798
2799    document.querySelectorAll('.currency-picker').forEach((el)=>{
2800      el.addEventListener('change',(event)=>{
2801        EasyStore.Currencies.change(event.target.value)
2802
2803        
2804          if (page_template == 'cart') {
2805            const params = new URLSearchParams(window.location.search);
2806            params.set('delete_cache', 1);
2807            window.location.search = params;
2808          } else {
2809            window.location.reload();
2810          }
2811
2812          return
2813        
2814
2815        document.querySelectorAll('[name=currencies],[name=current_currency]').forEach((el)=>{
2816          el.value = event.target.value
2817        })
2818
2819        if(page_template == 'cart') location.reload();
2820      })
2821    })
2822  </script>
2822
2823
2824
2825
2826
2827  
2827<script>
2828
2829    window.variantStrings = {
2830      addToCart: `加入購物車`,
2831      soldOut: `<span style='font-size:14px;'>售完</span>`,
2832      unavailable: `暫無供應`,
2833    }
2834
2835    window.accessibilityStrings = {
2836      shareSuccess: `鏈接已復製到剪貼板`,
2837    }
2838  </script>
2838
2839  
2839<script>
2840
2841  /*
2842
2843    ------
2844    Events
2845    ------
2846
2847    pages/viewed
2848
2849    customers/signup
2850
2851    customers/login
2852
2853    products/searched
2854
2855    collections/viewed
2856
2857    products/viewed
2858
2859    products/shared
2860
2861    wishlists/item_added
2862
2863    carts/items_added
2864
2865    carts/viewed
2866
2867    carts/item_removed
2868
2869    checkouts/initiated
2870
2871    checkouts/shipping_info_added
2872
2873    checkouts/payment_info_added
2874
2875    checkouts/completed
2876
2877    orders/placed
2878
2879    orders/purchased
2880
2881    payments/captured
2882
2883    payments/failed
2884
2885  */
2886
2887  window.__latest_cart = window.__latest_cart || null;
2888
2889  const _selector = document.querySelector.bind(document),
2890        _selectorAll = document.querySelectorAll.bind(document)
2891
2892  document.addEventListener('DOMContentLoaded', (event) => {
2893
2894    const default_currency = getCookie("currency")
2895    const customer_id = window.__st.cid
2896    const template    = window.__st.p
2897
2898    onPageView()
2899
2900    //-----------------------//
2901    //        Configs        //
2902    //-----------------------//
2903
2904    window.dataLayer = window.dataLayer || []
2905
2906    Array.prototype.last = Array.prototype.last || function() {
2907      return this[this.length - 1] || null
2908    }
2909
2910    Array.prototype.first = Array.prototype.first || function() {
2911      return this[0] || null
2912    }
2913
2914    //----------------------//
2915    //       Triggers       //
2916    //----------------------//
2917
2918    const XHR = window.XMLHttpRequest
2919
2920    function xhr() {
2921
2922      const xhr = new XHR()
2923
2924      xhr.addEventListener("readystatechange", function() {
2925
2926        if(xhr.readyState != 4) return
2927
2928        try {
2929
2930          const response_url = xhr.responseURL
2931
2932          if (response_url.includes("cart/add")) {
2933
2934            window.__latest_cart = JSON.parse(xhr.response)
2935
2936            onCartItemsAdded() // ok
2937
2938          }
2939
2940          if (response_url.includes("cart/remove_item_quantity")) {
2941
2942            window.__latest_cart = JSON.parse(xhr.response)
2943
2944            onCartItemRemoved() // ok
2945
2946          }
2947
2948          if (response_url.includes("new_cart?retrieve=true")) {
2949
2950            result = JSON.parse(xhr.response)
2951
2952            if (result.cart) {
2953              window.__latest_cart = result.cart
2954            }
2955
2956          }
2957
2958        } catch(e) {
2959
2960          console.error(e)
2961
2962        }
2963
2964      }, false);
2965
2966      return xhr
2967
2968    }
2969
2970    window.XMLHttpRequest = xhr
2971
2972    switch(template) {
2973
2974      case 'cart': onCartView() // ok
2975      break
2976      case 'product': onProductView() // ok
2977      break
2978      case 'collection': onCollectionView() // ok
2979      break
2980      case 'blog': onBlogView()
2981      break
2982      case 'article': onArticleView()
2983      break
2984      case 'payment_completed': onOrderPlace()
2985      break
2986      case 'payment_fail': onPaymentFail()
2987      break
2988
2989    }
2990
2991    // _selector('form[action="/checkout/payments"]').addEventListener("submit", onPaymentInfoAdded(_selector('form[action="/checkout/payments"]')))
2992    if (_selector('form[action="/checkout/detail"]'))                            _selector('form[action="/checkout/detail"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/detail"]'))})  // ok
2993    if (_selector('form[action="/checkout/shipping"]'))                          _selector('form[action="/checkout/shipping"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/shipping"]'))})  // ok
2994    if (_selector('form[action="/account/register"]'))                           _selector('form[action="/account/register"]').addEventListener("submit", onSignUp)  // ok
2995    if (_selector('form[action="/account/login"]'))                              _selector('form[action="/account/login"]').addEventListener("submit", onLogin)  // ok
2996    if (_selector('form[action="/search"]'))                                     _selector('form[action="/search"]').addEventListener("submit", onProductSearch()) // ok
2997    if (_selector('#line-login-btn'))                                            _selector('#line-login-btn').addEventListener('click', onLineLogin) // ok
2998    if (_selector('#PlaceOrder'))                                                _selector('#PlaceOrder').addEventListener("click", ()=>{onCheckoutComplete(_selector('form[action="/checkout/payments"]'))});  // ok
2999    if (_selector('#add_wishlist'))                                              _selector('#add_wishlist').addEventListener("click", onWishlistItemAdded) // ok
3000    if (_selectorAll('a[href="/account/logout"]'))                               _selectorAll('a[href="/account/logout"]').forEach(logoutButton => logoutButton.addEventListener("click", onLogout)) // ok
3001    if (_selector('.CartDrawerTrigger.cart-page-link'))                          _selector('.CartDrawerTrigger.cart-page-link').addEventListener("click", onCartView) // ok
3002    if (_selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link'))    _selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link').addEventListener("click", onCartView) // ok
3003    if (_selectorAll('a[class^="share-"]'))                                      _selectorAll('a[class^="share-"]').forEach(shareButton => shareButton.addEventListener("click", ()=>{onProductShare(shareButton)}) ) // ok
3004    if (_selectorAll('[name$="checkout"]'))                                      _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
3005
3006    // For append elements
3007    const bodyMutationObserver = new MutationObserver(() => {
3008      if (_selector('#form__spc #PlaceOrder'))             _selector('#form__spc #PlaceOrder').addEventListener("click", onSinglePageCheckout) // ok
3009      if (_selectorAll('[name$="checkout"]'))              _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
3010    });
3011    bodyMutationObserver.observe(_selector("body"), {subtree: true, childList: true});
3012
3013    //------------------------------//
3014    //        Event handlers        //
3015    //------------------------------//
3016
3017    function onPageView() {
3018
3019      EasyStore.Event.dispatch('pages/viewed', {
3020        page: {
3021          type: template,
3022          title: document.title,
3023          description: _selector('meta[name=description]') ? _selector('meta[name=description]').getAttribute('content') : null,
3024          url: location.href,
3025        }
3026      })
3027
3028    }
3029
3030    function onSignUp() {
3031
3032      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
3033      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
3034
3035      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
3036
3037      let data = {}
3038
3039      if (email_regex.test(email_or_phone)) {
3040        data.method = 'email'
3041        data.email = email_or_phone
3042      }
3043
3044      if (phone_regex.test(email_or_phone)) {
3045        data.method = "phone"
3046        data.phone = email_or_phone
3047      }
3048
3049      if (!data.method) return
3050
3051      EasyStore.Event.dispatch('customers/signup', data)
3052
3053    }
3054
3055    function onLogin() {
3056
3057      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
3058      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
3059
3060      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
3061
3062      let data = {}
3063
3064      if (email_regex.test(email_or_phone)) {
3065        data.method = 'email'
3066        data.email = email_or_phone
3067      }
3068
3069      if (phone_regex.test(email_or_phone)) {
3070        data.method = "phone"
3071        data.phone = email_or_phone
3072      }
3073
3074      if (!data.method) return
3075
3076      EasyStore.Event.dispatch('customers/login', data)
3077
3078    }
3079
3080    function onLineLogin() {
3081
3082      EasyStore.Event.dispatch('customers/login', { method: 'line' })
3083
3084    }
3085
3086    function onLogout() {
3087
3088      EasyStore.Event.dispatch('customers/logout', { customer_id })
3089
3090    }
3091
3092    function onBlogView() {
3093
3094      const blog = ""
3095
3096      EasyStore.Event.dispatch('blogs/viewed', { blog })
3097
3098    }
3099
3100    function onArticleView() {
3101
3102      const article = ""
3103
3104      EasyStore.Event.dispatch('articles/viewed', { article })
3105
3106    }
3107
3108    function onProductSearch() {
3109
3110      const query = _selector('input[name=q]').value
3111
3112      if (!query) return
3113
3114      EasyStore.Event.dispatch('products/searched', { query })
3115
3116    }
3117
3118    function onCollectionView() {
3119
3120      const collection = {"id":3996139,"handle":"feature-on-homepage","name":"\u9996\u9801\u63a8\u85a6","title":"\u9996\u9801\u63a8\u85a6","url":"\/collections\/feature-on-homepage","description":"","content":"","featured_image":{"src":null},"products":[{"id":13075272,"handle":"\u5fa1\u54c1\u5143\u79ae\u54c1\u888b","name":"\u5fa1\u54c1\u5143\u79ae\u54c1\u888b","title":"\u5fa1\u54c1\u5143\u79ae\u54c1\u888b","url":"\/products\/\u5fa1\u54c1\u5143\u79ae\u54c1\u888b","share_url":"https:\/\/www.tpypy.com\/products\/\u5fa1\u54c1\u5143\u79ae\u54c1\u888b","price":30,"price_min":"30.0","price_max":"30.0","price_varies":false,"compare_at_price":0,"compare_at_price_min":"0.0","compare_at_price_max":"0.0","compare_at_price_varies":false,"available":true,"options_with_values":[],"options_by_name":[],"options":["Title"],"has_only_default_variant":true,"sole_variant_id":60589932,"variants":[{"id":60589932,"title":"Default Title","sku":"","taxable":false,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":81192509,"alt":"IMG_6634-1734076589852","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","height":2400,"width":1800,"position":1,"type":"Images"},"price":3000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null}],"selected_variant":{"id":60589932,"title":"Default Title","sku":"","taxable":false,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":81192509,"alt":"IMG_6634-1734076589852","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","height":2400,"width":1800,"position":1,"type":"Images"},"price":3000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"first_available_variant":{"id":60589932,"title":"Default Title","sku":"","taxable":false,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":81192509,"alt":"IMG_6634-1734076589852","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","height":2400,"width":1800,"position":1,"type":"Images"},"price":3000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"selected_or_first_available_variant":{"id":60589932,"title":"Default Title","sku":"","taxable":false,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":81192509,"alt":"IMG_6634-1734076589852","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","height":2400,"width":1800,"position":1,"type":"Images"},"price":3000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","featured_image":{"id":81192509,"alt":"IMG_6634-1734076589852","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","height":2400,"width":1800,"position":1,"type":"Images"},"secondary_image":{"alt":"","img_url":"","src":"","type":""},"images":[{"id":81192509,"alt":"IMG_6634-1734076589852","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","height":2400,"width":1800,"position":1,"type":"Images"}],"media":[{"id":81192509,"alt":"IMG_6634-1734076589852","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","height":2400,"width":1800,"position":1,"type":"Images"}],"featured_media":{"id":81192509,"alt":"IMG_6634-1734076589852","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/81192509.jpeg","height":2400,"width":1800,"position":1,"type":"Images"},"metafields":[],"expires":null,"published_at":"2024-12-13T15:57:02.000+08:00","created_at":"2024-12-13T15:56:04.000+08:00","is_wishlisted":null,"highlight":{"data":null,"state":null,"is_auto_generation_required":false},"common_questions":{"data":null,"state":null,"is_auto_generation_required":false}},{"id":10080249,"handle":"\u5fa1\u54c1\u5143\u51b0\u706b\u6e6f\u5713","name":"\u50b3\u7d71\u624b\u4f5c\u829d\u9ebb\u5143\u5bb5(\u51b7\u51cd)","title":"\u50b3\u7d71\u624b\u4f5c\u829d\u9ebb\u5143\u5bb5(\u51b7\u51cd)","url":"\/products\/\u5fa1\u54c1\u5143\u51b0\u706b\u6e6f\u5713","share_url":"https:\/\/www.tpypy.com\/products\/\u5fa1\u54c1\u5143\u51b0\u706b\u6e6f\u5713","price":220,"price_min":"220.0","price_max":"220.0","price_varies":false,"compare_at_price":220,"compare_at_price_min":"220.0","compare_at_price_max":"220.0","compare_at_price_varies":false,"available":true,"options_with_values":[],"options_by_name":[],"options":["Title"],"has_only_default_variant":true,"sole_variant_id":46310588,"variants":[{"id":46310588,"title":"Default Title","sku":"001","taxable":false,"barcode":"Sesame","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":64343907,"alt":"S__3481663","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","height":1479,"width":1109,"position":1,"type":"Images"},"price":22000,"compare_at_price":22000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null}],"selected_variant":{"id":46310588,"title":"Default Title","sku":"001","taxable":false,"barcode":"Sesame","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":64343907,"alt":"S__3481663","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","height":1479,"width":1109,"position":1,"type":"Images"},"price":22000,"compare_at_price":22000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"first_available_variant":{"id":46310588,"title":"Default Title","sku":"001","taxable":false,"barcode":"Sesame","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":64343907,"alt":"S__3481663","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","height":1479,"width":1109,"position":1,"type":"Images"},"price":22000,"compare_at_price":22000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"selected_or_first_available_variant":{"id":46310588,"title":"Default Title","sku":"001","taxable":false,"barcode":"Sesame","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":64343907,"alt":"S__3481663","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","height":1479,"width":1109,"position":1,"type":"Images"},"price":22000,"compare_at_price":22000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","featured_image":{"id":64343907,"alt":"S__3481663","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","height":1479,"width":1109,"position":1,"type":"Images"},"secondary_image":{"id":65227267,"alt":"IMG_6631","img_url":"https:\/\/cdn.store-assets.co
3120m\/s\/1306561\/i\/65227267.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/65227267.jpeg","height":1699,"width":1284,"position":2,"type":"Images"},"images":[{"id":64343907,"alt":"S__3481663","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","height":1479,"width":1109,"position":1,"type":"Images"},{"id":65227267,"alt":"IMG_6631","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/65227267.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/65227267.jpeg","height":1699,"width":1284,"position":2,"type":"Images"},{"id":80111824,"alt":"S__7168155_0","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111824.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111824.jpeg","height":1567,"width":1045,"position":3,"type":"Images"},{"id":80111828,"alt":"S__7168150_0","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111828.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111828.jpeg","height":1567,"width":1045,"position":4,"type":"Images"}],"media":[{"id":64343907,"alt":"S__3481663","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","height":1479,"width":1109,"position":1,"type":"Images"},{"id":65227267,"alt":"IMG_6631","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/65227267.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/65227267.jpeg","height":1699,"width":1284,"position":2,"type":"Images"},{"id":80111824,"alt":"S__7168155_0","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111824.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111824.jpeg","height":1567,"width":1045,"position":3,"type":"Images"},{"id":80111828,"alt":"S__7168150_0","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111828.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111828.jpeg","height":1567,"width":1045,"position":4,"type":"Images"}],"featured_media":{"id":64343907,"alt":"S__3481663","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343907.jpeg","height":1479,"width":1109,"position":1,"type":"Images"},"metafields":[],"expires":null,"published_at":"2025-02-10T03:56:00.000+08:00","created_at":"2023-07-04T20:11:17.000+08:00","is_wishlisted":null,"highlight":{"data":null,"state":null,"is_auto_generation_required":false},"common_questions":{"data":null,"state":null,"is_auto_generation_required":false}},{"id":10080255,"handle":"\u50b3\u7d71\u624b\u4f5c\u82b1\u751f\u5143\u5bb5-\u51b7\u51cd-","name":"\u50b3\u7d71\u624b\u4f5c\u82b1\u751f\u5143\u5bb5(\u51b7\u51cd)","title":"\u50b3\u7d71\u624b\u4f5c\u82b1\u751f\u5143\u5bb5(\u51b7\u51cd)","url":"\/products\/\u50b3\u7d71\u624b\u4f5c\u82b1\u751f\u5143\u5bb5-\u51b7\u51cd-","share_url":"https:\/\/www.tpypy.com\/products\/\u50b3\u7d71\u624b\u4f5c\u82b1\u751f\u5143\u5bb5-\u51b7\u51cd-","price":220,"price_min":"220.0","price_max":"220.0","price_varies":false,"compare_at_price":220,"compare_at_price_min":"220.0","compare_at_price_max":"220.0","compare_at_price_varies":false,"available":true,"options_with_values":[],"options_by_name":[],"options":["Title"],"has_only_default_variant":true,"sole_variant_id":46310605,"variants":[{"id":46310605,"title":"Default Title","sku":"002","taxable":false,"barcode":"peanut","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":64495022,"alt":"S__3498454","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","height":1471,"width":1114,"position":1,"type":"Images"},"price":22000,"compare_at_price":22000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null}],"selected_variant":{"id":46310605,"title":"Default Title","sku":"002","taxable":false,"barcode":"peanut","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":64495022,"alt":"S__3498454","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","height":1471,"width":1114,"position":1,"type":"Images"},"price":22000,"compare_at_price":22000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"first_available_variant":{"id":46310605,"title":"Default Title","sku":"002","taxable":false,"barcode":"peanut","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":64495022,"alt":"S__3498454","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","height":1471,"width":1114,"position":1,"type":"Images"},"price":22000,"compare_at_price":22000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"selected_or_first_available_variant":{"id":46310605,"title":"Default Title","sku":"002","taxable":false,"barcode":"peanut","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":64495022,"alt":"S__3498454","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","height":1471,"width":1114,"position":1,"type":"Images"},"price":22000,"compare_at_price":22000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","featured_image":{"id":64495022,"alt":"S__3498454","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","height":1471,"width":1114,"position":1,"type":"Images"},"secondary_image":{"id":65227320,"alt":"IMG_6631","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/65227320.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/65227320.jpeg","height":1699,"width":1284,"position":2,"type":"Images"},"images":[{"id":64495022,"alt":"S__3498454","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","height":1471,"width":1114,"position":1,"type":"Images"},{"id":65227320,"alt":"IMG_6631","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/65227320.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/65227320.jpeg","height":1699,"width":1284,"position":2,"type":"Images"},{"id":80111874,"alt":"S__7168155_0","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111874.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111874.jpeg","height":1567,"width":1045,"position":3,"type":"Images"},{"id":80111875,"alt":"S__7168150_0","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111875.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111875.jpeg","height":1567,"width":1045,"position":4,"type":"Images"}],"media":[{"id":64495022,"alt":"S__3498454","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","height":1471,"width":1114,"position":1,"type":"Images"},{"id":65227320,"alt":"IMG_6631","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/65227320.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/65227320.jpeg","height":1699,"width":1284,"position":2,"type":"Images"},{"id":80111874,"alt":"S__7168155_0","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111874.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111874.jpeg","height":1567,"width":1045,"position":3,"type":"Images"},{"id":80111875,"alt":"S__7168150_0","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111875.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111875.jpeg","height":1567,"width":1045,"position":4,"type":"Images"}],"featured_media":{"id":64495022,"alt":"S__3498454","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64495022.jpeg","height":1471,"width":1114,"position":1,"type":"Images"},"metafields":[],"expires":null,"published_at":"2025-02-10T03:56:00.000+08:00","created_at":"2023-07-04T20:13:06.000+08:00","is_wishlisted":null,"highlight":{"data":null,"state":null,"is_auto_generation_required":false},"common_questions":{"data":null,"state":null,"is_auto_generation_required":false}},{"id":10525441,"handle":"\u6842\u82b1\u871c","name":"\u6842\u82b1\u871c","title":"\u6842\u82b1\u871c","url":"\/products\/\u6842\u82b1\u871c","share_url":"https:\/\/www.tpypy.com\/products\/\u6842\u82b1\u871c","price":60,"price_min":"60.0","price_max":"60.0","price_varies":false,"compare_at_price":60,"compare_at_price_min":"60.0","compare_at_price_max":"60.0","compare_at_price_varies":false,"available":true,"options_with_values":[],"options_by_name":[],"options":["Title"],"has_only_default_variant":true,"sole_variant_id":48364148,"variants":[{"id":48364148,"title":"Default Title","sku":"","taxable":false,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":64343925,"alt":"\u6842\u82b1\u871c(\u81ea\u5df1\u62cd)","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","height":1446,"width":1095,"position":1,"type":"Images"},"price":6000,"compare_at_price":6000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null}],"selected_variant":{"id":48364148,"title":"Default Title","sku":"","taxable":false,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":64343925,"alt":"\u6842\u82b1\u871c(\u81ea\u5df1\u62cd)","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","height":1446,"width":1095,"position":1,"type":"Images"},"price":6000,"compare_at_price":6000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"first_available_variant":{"id":48364148,"title":"Default Title","sku":"","taxable":false,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":64343925,"alt":"\u6842\u82b1\u871c(\u81ea\u5df1\u62cd)","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","height":1446,"width":1095,"position":1,"type":"Images"},"price":6000,"compare_at_price":6000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"selected_or_first_available_variant":{"id":48364148,"title":"Default Title","sku":"","taxable":false,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":64343925,"alt":"\u6842\u82b1\u871c(\u81ea\u5df1\u62cd)","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","height":1446,"width":1095,"position":1,"type":"Images"},"price":6000,"compare_at_price":6000,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","featured_image":{"id":64343925,"alt":"\u6842\u82b1\u871c(\u81ea\u5df1\u62cd)","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","height":1446,"width":1095,"position":1,"type":"Images"},"secondary_image":{"id":80111879,"alt":"S__7168152_0","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111879.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111879.jpeg","height":1567,"width":1045,"position":2,"type":"Images"},"images":[{"id":64343925,"alt":"\u6842\u82b1\u871c(\u81ea\u5df1\u62cd)","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","height":1446,"width":1095,"position":1,"type":"Images"},{"id":80111879,"alt":"S__7168152_0","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111879.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111879.jpeg","height":1567,"width":1045,"position":2,"type":"Images"},{"id":80111884,"alt":"S__7168150_0","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111884.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111884.jpeg","height":1567,"width":1045,"position":3,"type":"Images"}],"media":[{"id":64343925,"alt":"\u6842\u82b1\u871c(\u81ea\u5df1\u62cd)","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","height":1446,"width":1095,"position":1,"type":"Images"},{"id":80111879,"alt":"S__7168152_0","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111879.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111879.jpeg","height":1567,"width":1045,"position":2,"type":"Images"},{"id":80111884,"alt":"S__7168150_0","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111884.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/80111884.jpeg","height":1567,"width":1045,"position":3,"type":"Images"}],"featured_media":{"id":64343925,"alt":"\u6842\u82b1\u871c(\u81ea\u5df1\u62cd)","img_url":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","src":"https:\/\/cdn.store-assets.com\/s\/1306561\/i\/64343925.jpeg","height":1446,"width":1095,"position":1,"type":"Images"},"metafields":[],"expires":null,"published_at":"2025-02-10T03:57:00.000+08:00","created_at":"2023-09-09T05:10:30.000+08:00","is_wishlisted":null,"highlight":{"data":null,"state":null,"is_auto_generation_required":false},"common_questions":{"data":null,"state":null,"is_auto_generation_required":false}}],"sort_by":"featured","product_count":4,"cache_source":"live_api"}
3121
3122      EasyStore.Event.dispatch('collections/viewed', { collection })
3123
3124    }
3125
3126    function onProductView() {
3127
3128      const product = ""
3129
3130      EasyStore.Event.dispatch("products/viewed", { product })
3131
3132    }
3133
3134    function onProductShare(el) {
3135
3136      const product = ""
3137
3138      const channel = el.getAttribute("class").split("-").last()
3139
3140      EasyStore.Event.dispatch('products/shared', { product, channel })
3141
3142    }
3143
3144    function onWishlistItemAdded() {
3145
3146      let product  = ""
3147      const quantity = _selector("#Quantity").value
3148
3149      EasyStore.Event.dispatch('wishlists/item_added', { product })
3150
3151    }
3152
3153    async function onCartItemsAdded() {
3154
3155      const cart = await getCart()
3156
3157      if(cart && cart.items != undefined && cart.items.length > 0) {
3158
3159        EasyStore.Event.dispatch('carts/item_added', { cart })
3160
3161      }
3162
3163    }
3164
3165    async function onCartView() {
3166
3167      const cart = await getCart()
3168
3169      EasyStore.Event.dispatch('carts/viewed', { cart })
3170
3171    }
3172
3173    async function onCartItemRemoved() {
3174
3175      const cart = await getCart()
3176
3177      cart.items = []
3178
3179      if(cart) {
3180
3181        EasyStore.Event.dispatch('carts/item_removed', { cart })
3182
3183      }
3184
3185    }
3186
3187    async function onCheckoutInitiate() {
3188
3189      const cart = await getCart()
3190
3191      EasyStore.Event.dispatch('checkouts/initiated', { cart })
3192
3193    }
3194
3195    async function onShippingInfoAdded(form) {
3196      let checkout = getCheckout()
3197
3198      let form_data = {}
3199      new FormData(form).forEach((value, key) => form_data[key] = value)
3200
3201      let shipping_tier = null
3202
3203      if (form_data.type && form_data.type.startsWith("r_pickup")) {
3204        shipping_tier = `Pickup - ${form_data.pick_location}`
3205      }
3206
3207      if (form_data.s_id) {
3208        shipping_tier = _selector(`input[id='`+form_data.s_id+`']`).getAttribute("data-shipping-name")
3209      }
3210
3211      if (!shipping_tier) return
3212
3213      EasyStore.Event.dispatch('checkouts/shipping_info_added', { checkout, shipping_tier })
3214
3215    }
3216
3217    async function onPaymentInfoAdded(form) {
3218
3219      let checkout = getCheckout()
3220
3221      let payment_type = new FormData(form).get('payment_method')
3222
3223      EasyStore.Event.dispatch("checkouts/payment_info_added", { checkout, payment_type })
3224
3225    }
3226
3227    async function onOrderPlace() {
3228
3229      let cart_token  = getCookie("cart_js")
3230      let previous_cart_token = getCookie("previous_cart_ga4_js")
3231
3232      if (previous_cart_token && previous_cart_token == cart_token) {
3233        // Prevent duplicate purchase tracking
3234        return
3235      }
3236
3237      let order = getOrder()
3238
3239      EasyStore.Event.dispatch('orders/placed', { order })
3240
3241      if(order.is_manual_payment) {
3242
3243        EasyStore.Event.dispatch('orders/purchased', { order })
3244
3245      }
3246
3247      const last_transaction = order.transactions.last()
3248
3249      if (last_transaction.status) {
3250
3251        EasyStore.Event.dispatch('orders/purchased', { order })
3252        EasyStore.Event.dispatch('payments/captured', { order })
3253
3254      }
3255
3256    }
3257
3258    async function onPaymentFail() {
3259
3260      const order = getOrder()
3261
3262      EasyStore.Event.dispatch('payments/failed', { order })
3263
3264    }
3265
3266    async function onCheckoutComplete(form) {
3267
3268      onPaymentInfoAdded(form)
3269
3270      const checkout = getCheckout()
3271
3272      EasyStore.Event.dispatch('checkouts/completed', { checkout })
3273
3274    }
3275
3276    async function onSinglePageCheckout() {
3277
3278      // let checkout = $("[data-app-checkout]").data("app-checkout")
3279
3280      let checkout = getCheckout()
3281
3282      // const payment_type = _selector("#app_spc_payment_method").find(`[class*="label-content"]`).first().find("b").first().text()
3283      const payment_type = _selector("#app_spc_payment_method").getElementsByClassName('label-content')[0].getElementsByTagName('b')[0].innerHTML
3284
3285      const shipping_method = _selector("#delivery_method").value
3286
3287      let shipping_tier = null
3288      let app_spc_customer_info_label = _selector("#app_spc_customer_info").getElementsByClassName('label-content')
3289      if (shipping_method == "shipping") {
3290        shipping_tier = app_spc_customer_info_label[app_spc_customer_info_label.length - 1].getElementsByTagName('b')[0].innerHTML
3291      }
3292
3293      if (shipping_method == "pickup") {
3294        shipping_tier = app_spc_customer_info_label[0].innerHTML
3295      }
3296
3297      if (shipping_tier) {
3298
3299        EasyStore.Event.dispatch('checkouts/shipping_info_added', {
3300          checkout,
3301          shipping_tier,
3302        })
3303
3304      }
3305
3306      if (payment_type) {
3307
3308        EasyStore.Event.dispatch('checkouts/payment_info_added', {
3309          checkout,
3310          payment_type,
3311        })
3312
3313      }
3314
3315      EasyStore.Event.dispatch('checkouts/completed', { checkout })
3316
3317    }
3318
3319  })
3320
3321
3322  //-----------------------//
3323  //       Functions       //
3324  //-----------------------//
3325
3326  function getCookie(name) {
3327
3328    name += "="
3329
3330    decodedCookie = decodeURIComponent(document.cookie)
3331
3332    ca = decodedCookie.split(";")
3333
3334    for(i = 0; i < ca.length; i++) {
3335      c = ca[i]
3336      while (c.charAt(0) == " ") {
3337        c = c.substring(1)
3338      }
3339      if (c.indexOf(name) == 0) {
3340        return c.substring(name.length, c.length)
3341      }
3342    }
3343
3344    return ""
3345
3346  }
3347
3348  const parsePrice = price => {
3349    if(typeof price === 'string') {
3350      return parseFloat(price.split(',').join(''))
3351    }
3352
3353    return price
3354  }
3355
3356  const requestCart = async (method, data) => {
3357
3358  let response = await fetch('/cart.json', {method: 'GET',headers: {'Content-Type': 'application/json'}})
3359    result = await response.json()
3360
3361    return result.cart
3362
3363  }
3364  const getCart = async (latest = false) => {
3365
3366    let cart = window.__latest_cart
3367
3368    const cart_invalid = !cart || !cart.items || (cart.total_price > 0 && !cart.items.length)
3369
3370    if(latest || cart_invalid) {
3371      cart = await requestCart()
3372    }
3373
3374    cart.items = cart.items || []
3375
3376    return mapCart(cart)
3377
3378  }
3379
3380  const getCheckout = async () => {
3381    mapCheckout(window.__latest_cart || await requestCart())
3382  }
3383
3384  const getOrder = async () => {
3385    mapOrder(window.__latest_cart || await requestCart())
3386  }
3387
3388  //-----------------------//
3389  //        Mappers        //
3390  //-----------------------//
3391
3392  const fallbackAttribute = (object, attribute) => {
3393
3394    if(!Array.isArray(attribute)) {
3395      attribute = [attribute]
3396    }
3397
3398    let final_value = null
3399
3400    do {
3401
3402      final_value = object[attribute.shift()]
3403
3404    } while(!final_value && attribute.length)
3405
3406    return final_value
3407
3408  }
3409
3410  const map = (object, mapper) => {
3411
3412    const newObject = {}
3413
3414    for(const key in mapper) {
3415
3416      // Handle different keys between new and old format
3417      newObject[key] = fallbackAttribute(object, mapper[key])
3418
3419      // Cast price to float
3420      if(newObject[key] && ['price', 'amount', 'discount', 'discounts'].some(x => key.endsWith(x))) {
3421        newObject[key] = parsePrice(newObject[key])
3422      }
3423
3424      if(newObject[key] === undefined) {
3425        delete newObject[key]
3426      }
3427
3428    }
3429
3430    return newObject
3431
3432  }
3433
3434  const mapCart = cart => {
3435
3436    const oldCart = cart
3437
3438    const mapper = {
3439      id: 'id',
3440      currency: 'currency',
3441      item_count: 'item_count',
3442      items: 'items',
3443      total_price: 'total_price',
3444      latest_items: 'latest_items'
3445    }
3446
3447    cart = map(cart, mapper)
3448
3449    const discounts = (oldCart.storewide_discounts || []).concat((oldCart.voucher_discounts || []))
3450
3451    cart.discount_applications = discounts.map(discount => ({
3452      title: discount.voucher_code || null,
3453      value: parsePrice(discount.amount),
3454    }))
3455
3456    cart.original_total_price = cart.items.length
3457    ? cart.items
3458      .map(item => item.original_price)
3459      .reduce((sum, price) => sum + price)
3460    : 0
3461
3462    cart.total_discount = cart.discount_applications.length
3463    ? cart.discount_applications
3464      .map(discount => parsePrice(discount.value))
3465      .reduce((sum, value) => sum + value)
3466    : 0
3467
3468    cart.items = cart.items.map(item => mapLineItem(item))
3469
3470    return cart
3471
3472  }
3473
3474  const mapCheckout = checkout => {
3475
3476    const mapper = {
3477      note: 'note',
3478      attributes: 'note_attributes',
3479      billing_address: 'billing_address',
3480      currency: 'currency',
3481      customer_id: 'customer_id',
3482      discounts_amount: 'total_discount',
3483      id: 'id',
3484      line_items: 'order_item',
3485      order_number: 'order_number',
3486      shipping_address: 'shipping_address',
3487      shipping_price: 'shipping_tax',
3488      shipping_method: 'shipping_method_name',
3489      tax_price: 'total_tax',
3490    }
3491
3492    checkout = map(checkout, mapper)
3493
3494    checkout.requires_shipping = checkout.line_items.some(item => item.shipping_required)
3495
3496    checkout.line_items = checkout.line_items.map(item => mapLineItem(item))
3497
3498    return checkout
3499
3500  }
3501
3502  const mapOrder = order => {
3503
3504    const mapper = {
3505      attributes: 'note_attributes',
3506      billing_address: 'billing_address',
3507      cancelled: 'is_cancelled',
3508      cancelled_at: 'cancelled_at',
3509      created_at: 'created_at',
3510      customer_id: 'customer_id',
3511      // discount_applications: 'discount_applications',
3512      email: 'email',
3513      financial_status: 'financial_status',
3514      fulfillment_status: 'fulfillment_status',
3515      line_items: 'order_item',
3516      note: 'note',
3517      order_number: 'order_number',
3518      phone: 'phone',
3519      shipping_address: 'shipping_address',
3520      shipping_methods: 'shipping_methods',
3521      shipping_price: 'total_shipping',
3522      subtotal_price: 'subtotal_price',
3523      // tax_lines: 'tax_lines',
3524      tax_price: 'total_tax',
3525      total_discounts: 'total_discount',
3526      total_net_amount: 'total_amount_include_transaction',
3527      total_price: 'total_price',
3528      transactions: 'transaction_records',
3529      is_manual_payment: 'is_manual_payment',
3530    }
3531
3532    order.email = order.billing_address.email
3533    order.phone = order.billing_address.phone
3534    order.shipping_method = order.shipping_method_name
3535
3536    order = map(order, mapper)
3537
3538    order.line_items = order.line_items.map(item => mapLineItem(item))
3539    order.transactions = order.transactions.map(transaction => mapTransaction(transaction))
3540
3541    return order
3542
3543  }
3544
3545  const mapLineItem = line_item => {
3546
3547    const old_line_item = line_item
3548
3549    const mapper = {
3550      final_price: 'price',
3551      image: 'img_url',
3552      message: 'message',
3553      original_line_price: 'original_line_price',
3554      original_price: 'original_price',
3555      properties: 'properties',
3556      quantity: 'quantity',
3557      requires_shipping: 'shipping_required',
3558      sku: 'sku',
3559      taxable: 'taxable',
3560      title: 'product_name',
3561      product_name: 'product_name',
3562      url: 'url',
3563      product_id: 'product_id',
3564      variant_id: 'variant_id',
3565      id: ['id', 'i_id'],
3566    }
3567
3568    line_item = map(line_item, mapper)
3569
3570    line_item.product_id = line_item.product_id || (old_line_item.product && old_line_item.product.id) || null
3571    line_item.variant_id = line_item.variant_id || (old_line_item.variant && old_line_item.variant.id) || null
3572    line_item.image      = line_item.image || (old_line_item.image && old_line_item.image.url) || null
3573
3574    return line_item
3575
3576  }
3577
3578  const mapTransaction = transaction => {
3579
3580    const mapper = {
3581      amount: 'amount',
3582      created_at: 'created_at',
3583      gateway: 'gateway_type',
3584      id: 'id',
3585      status: 'status',
3586    }
3587
3588    transaction = map(transaction, mapper)
3589
3590    return transaction
3591
3592  }
3593
3594
3595</script>
3595
3596
3597</body>
3598</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.