PageSourceSearch

https://hkhotpot.com/collections/feature-on-homepage/products/home…7%94%9F%E8%9D%A6%E8%BE%A3%E6%A4%92%E9%86%AC

html hkhotpot.com collected 2026-10-07 11:27:47 UTC 164,361 bytes, 3,821 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/332265/f/4561475.png" />
15  
16
17  <!-- Title and description ================================================== -->
18  <title>
19  Homemade Special Shrimp Chili Sauce / 自製生蝦辣椒醬 &ndash; Hong Kong Hotpot
20  </title>
21
22  
23  <meta name="description" content="Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping &amp; Chicken Rice Sauce. Size: 330g">
24  
25
26  <!-- Social meta ================================================== -->
27  
28
29  <meta property="og:type" content="product">
30  <meta property="og:title" content="Homemade Special Shrimp Chili Sauce / 自製生蝦辣椒醬">
31  <meta property="og:url" content="https://www.hkhotpot.com/products/homemade-special-shrimp-chili-sauce-自製生蝦辣椒醬">
32  
33  <meta property="og:image" content="https://cdn.store-assets.com/s/332265/i/31805882.jpg?width=480&format=webp">
34  <meta property="og:image:secure_url" content="https://cdn.store-assets.com/s/332265/i/31805882.jpg?width=480&format=webp">
35  
36  <meta property="og:price:amount" content="38">
37  <meta property="og:price:currency" content="MYR">
38
39
40<meta property="og:description" content="Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping & Chicken Rice Sauce. Size: 330g">
41<meta property="og:site_name" content="Hong Kong Hotpot">
42
43
44
45  <meta name="twitter:card" content="summary">
46
47
48
49
50  <meta name="twitter:title" content="Homemade Special Shrimp Chili Sauce / 自製生蝦辣椒醬">
51  <meta name="twitter:description" content="Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping &amp;amp; Chicken Rice Sauce.
52Size: 330g">
53  <meta name="twitter:image" content="">
54  <meta name="twitter:image:width" content="480">
55  <meta name="twitter:image:height" content="480">
56
57
58
59
60  <!-- Helpers ================================================== -->
61  <link rel="canonical" href="https://www.hkhotpot.com/products/homemade-special-shrimp-chili-sauce-自製生蝦辣椒醬">
62  <meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=3.0">
63  <meta name="theme-color" content="">
64
65  <!-- CSS ================================================== -->
66  <link href="https://store-themes.easystore.co/332265/themes/2877/assets/timber.css?t=1787076014" rel="stylesheet" type="text/css" media="screen" />
67  <link href="https://store-themes.easystore.co/332265/themes/2877/assets/theme.css?t=1787076014" rel="stylesheet" type="text/css" media="screen" />
68
69  
70
71
72
73<link href="https://fonts.googleapis.com/css?family=Rajdhani:400,600&display=swap" rel="stylesheet">
74
75
76  
76<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript" ></script>
76
77  <!-- Header hook for plugins ================================================== -->
78  
79<!-- ScriptTags -->
80<script>window.__st={p: "product",cid: null,cem: null,cph: null,cfn: null,cln: null,cge: null,cdb: null,ccc: null};</script>
80<script src='/assets/events.js'></script>
80<script>(function(){function asyncLoad(){var urls=['/assets/facebook-pixel.js?v=1.2.1590088508','/assets/traffic.js?v=1','https://apps.easystore.co/image-watermark/script.js?shop=chaners.easy.co','https://apps.easystore.co/timer-discount/script.js?shop=chaners.easy.co','https://apps.easystore.co/google-analytics/script.js?shop=chaners.easy.co'];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>
80
81<!-- /ScriptTags -->
82
83
84  
85<!--[if lt IE 9]>
86<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js" type="text/javascript" ></script>
vendor: 2 bytes, line 86
86
87<script src="https://store-themes.easystore.co/332265/themes/2877/assets/respond.min.js?t=1787076014" type="text/javascript" ></script>
87
88<link href="https://store-themes.easystore.co/332265/themes/2877/assets/respond-proxy.html" id="respond-proxy" rel="respond-proxy" />
89<link href="//hkhotpot.com/search?q=7052bd72a2097f78468e4f55caf60dd5" id="respond-redirect" rel="respond-redirect" />
90<script src="//hkhotpot.com/search?q=7052bd72a2097f78468e4f55caf60dd5" type="text/javascript"></script>
90
91<![endif]-->
92
93
94
95  
95<script src="https://store-themes.easystore.co/332265/themes/2877/assets/modernizr.min.js?t=1787076014" type="text/javascript" ></script>
95
96
97  
98  
99  
99<script>
100  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
101  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
102  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
103  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
104
105  ga('create', '', 'auto','myTracker');
106  ga('myTracker.send', 'pageview');
107
108  </script>
108
109  
110</head>
111
112<body id="homemade-special-shrimp-chili-sauce------------------------" class="template-product  has-sticky-btm-bar" >
113
114  <ul id="MobileNav" class="mobile-nav">
115  
116  <li class="mobile-nav_icon-x">
117    
118      
119
120
121
122
123  	
124  	<span class="MobileNavTrigger icon icon-x"></span>
125  </li>
126  
127  
128  <li class="mobile-nav__link" aria-haspopup="true">
129    
130    <a href="/" >
131      Home
132    </a>
133    
134  </li>
135  
136  
137  <li class="mobile-nav__link" aria-haspopup="true">
138    
139    
140    <a href="/collections/all" class="mobile-nav__parent-link">
141      Catalog
142    </a>
143    <span class="mobile-nav__sublist-trigger">
144      <span class="icon-fallback-text mobile-nav__sublist-expand">
145  <span class="icon icon-plus" aria-hidden="true"></span>
146  <span class="fallback-text">+</span>
147</span>
148<span class="icon-fallback-text mobile-nav__sublist-contract">
149  <span class="icon icon-minus" aria-hidden="true"></span>
150  <span class="fallback-text">-</span>
151</span>
152
153    </span>
154    <ul class="mobile-nav__sublist">
155      
156      
157      <li class="mobile-nav__sublist-link" aria-haspopup="true">
158        
159        <a href="/collections/soup" >
160          Soup
161        </a>
162        
163      </li>
164      
165      
166      <li class="mobile-nav__sublist-link" aria-haspopup="true">
167        
168        <a href="/collections/snacks" >
169          Snacks
170        </a>
171        
172      </li>
173      
174      
175      <li class="mobile-nav__sublist-link" aria-haspopup="true">
176        
177        <a href="/collections/fresh-meat" >
178          Fresh Meat
179        </a>
180        
181      </li>
182      
183      
184      <li class="mobile-nav__sublist-link" aria-haspopup="true">
185        
186        <a href="/collections/hand-made-meat-ball-dumpling" >
187          Home Made Meat Ball & Dumpling
188        </a>
189        
190      </li>
191      
192      
193      <li class="mobile-nav__sublist-link" aria-haspopup="true">
194        
195        <a href="/collections/seafood" >
196          Seafood
197        </a>
198        
199      </li>
200      
201      
202      <li class="mobile-nav__sublist-link" aria-haspopup="true">
203        
204        <a href="/collections/vegetable" >
205          Vegetable
206        </a>
207        
208      </li>
209      
210      
211      <li class="mobile-nav__sublist-link" aria-haspopup="true">
212        
213        <a href="/collections/noodle-others" >
214          Noodles & Others
215        </a>
216        
217      </li>
218      
219      
220      <li class="mobile-nav__sublist-link" aria-haspopup="true">
221        
222        
223        <a href="/collections/hk-hotpot-special" class="mobile-nav__parent-link">
224          HK Hotpot Market
225        </a>
226        <span class="mobile-nav__sublist-trigger"><span class="icon-fallback-text mobile-nav__sublist-expand">
227  <span class="icon icon-plus" aria-hidden="true"></span>
228  <span class="fallback-text">+</span>
229</span>
230<span class="icon-fallback-text mobile-nav__sublist-contract">
231  <span class="icon icon-minus" aria-hidden="true"></span>
232  <span class="fallback-text">-</span>
233</span>
234</span>
235        <ul class="mobile-nav__sublist"> 
236          
237          
238          <li class="mobile-nav__sublist-link" aria-haspopup="true">
239            
240            <a href="/collections/ready-to-eat-frozen-food" >
241              Ready to Eat Frozen Food
242            </a>
243            
244          </li>
245          
246          
247          <li class="mobile-nav__sublist-link" aria-haspopup="true">
248            
249            <a href="/collections/frozen-meat-balls" >
250              Frozen Fresh Homemade Meat Balls
251            </a>
252            
253          </li>
254          
255          
256          <li class="mobile-nav__sublist-link" aria-haspopup="true">
257            
258            <a href="/collections/homemade-sauces" >
259              Homemade Sauces
260            </a>
261            
262          </li>
263          
264        </ul>
265        
266      </li>
267      
268    </ul>
269    
270  </li>
271  
272  
273  <li class="mobile-nav__link" aria-haspopup="true">
274    
275    <a href="/blogs/blog" >
276      Blog
277    </a>
278    
279  </li>
280  
281  
282  <li class="mobile-nav__link" aria-haspopup="true">
283    
284    <a href="/store-locator" >
285      Store Locator
286    </a>
287    
288  </li>
289  
290
291  
292
293  
294  
295  
296  <li class="mobile-nav__link">
297    <a href="/account/login">Log in</a>
298  </li>
299  
300  <li class="mobile-nav__link">
301    <a href="/account/register">Create account</a>
302  </li>
303  
304  
305  
306  
307  <li class="mobile-nav__link header-bar__search-wrapper">
308    
309    <div class="header-bar__module header-bar__search mobile-nav_search">
310      
311  <form action="/search" method="get" class="header-bar__search-form clearfix" role="search">
312    
313    <button type="submit" class="btn icon-fallback-text header-bar__search-submit">
314      <span class="icon icon-search" aria-hidden="true"></span>
315      <span class="fallback-text">Search</span>
316    </button>
317    <input type="search" name="q" value="" aria-label="Search" class="header-bar__search-input" placeholder="Search" autocomplete="off">
318    <div class="dropdown" id="searchDropdown"></div>
319    <input type="hidden" name="search_history" id="search_history">
320  </form>
321
322
323
324
325<script>
326  var _search_history_listings = ""
327  if(_search_history_listings != "") localStorage.setItem('searchHistory', JSON.stringify(_search_history_listings));
328
329  function clearAll() {
330    localStorage.removeItem('searchHistory');
331  
332    var customer = "";
333    if(customer) {
334      // Your logic to clear all data or call an endpoint
335      fetch('/account/search_histories', {
336          method: 'DELETE',
337          headers: {
338            "Content-Type": "application/json",
339            "X-Requested-With": "XMLHttpRequest"
340          },
341          body: JSON.stringify({
342            _token: "3cn9XmZUBkQfXsgxPhyvmLvhj45JmBQ0GxNoLBme"
343          }),
344      })
345      .then(response => response.json())
346    }
347  }
348  // End - store view history in local storage
349  
350  // search history dropdown  
351  var searchInputs = document.querySelectorAll('input[type=search]');
352  
353  if(searchInputs.length > 0) {
354    
355    searchInputs.forEach((searchInput)=>{
356    
357      searchInput.addEventListener('focus', function() {
358        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
359        searchDropdown.innerHTML = ''; // Clear existing items
360  
361        // retrieve data from local storage
362        var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || [];
363  
364        // Convert JSON to string
365        var search_history_json = JSON.stringify(searchHistoryData);
366  
367        // Set the value of the hidden input
368        searchInput.closest('form').querySelector("#search_history").value = search_history_json;
369  
370        // create dropdown items
371        var clearAllItem = document.createElement('div');
372        clearAllItem.className = 'dropdown-item clear-all';
373        clearAllItem.textContent = 'Clear';
374        clearAllItem.addEventListener('click', function() {
375            clearAll();
376            searchDropdown.style.display = 'none';
377            searchInput.classList.remove('is-focus');
378        });
379        searchDropdown.appendChild(clearAllItem);
380  
381        // create dropdown items
382        searchHistoryData.forEach(function(item) {
383          var dropdownItem = document.createElement('div');
384          dropdownItem.className = 'dropdown-item';
385          dropdownItem.textContent = item.term;
386          dropdownItem.addEventListener('click', function() {
387            searchInput.value = item.term;
388            searchDropdown.style.display = 'none';
389          });
390          searchDropdown.appendChild(dropdownItem);
391        });
392  
393        if(searchHistoryData.length > 0){
394          // display the dropdown
395          searchInput.classList.add('is-focus');
396          document.body.classList.add('search-input-focus');
397          searchDropdown.style.display = 'block';
398        }
399      });
400  
401      searchInput.addEventListener("focusout", (event) => {
402        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
403        searchInput.classList.remove('is-focus');
404        searchDropdown.classList.add('transparent');
405        setTimeout(()=>{
406          searchDropdown.style.display = 'none';
407          searchDropdown.classList.remove('transparent');
408          document.body.classList.remove('search-input-focus');
409        }, 400);
410      });
411    })
412  }
413  // End - search history dropdown
414</script>
414
415    </div>
416    
417  </li>
418  
419  
420</ul>
421<div id="MobileNavOutside" class="mobile-nav-outside"></div>
422
423
424<div id="PageContainer" class="page-container">
425  
426<!-- Snippet:global/body_start: Console Extension -->
427<div id='es_console' style='display: none;'>332265</div>
428<!-- /Snippet -->
429
430  
431    <style>
432  .search-modal__form{
433    position: relative;
434  }
435  
436  .dropdown-wrapper {
437    position: relative;
438  }
439  
440  .dropdown-wrapper:hover .dropdown {
441    display: block;
442  }
443  
444  .header-icon-nav .dropdown {
445    left: -80px;
446  }
447  
448  .dropdown {
449    display: none;
450    position: absolute;
451    top: 100%;
452    left: 0px;
453    width: 100%;
454    padding: 8px;
455    background-color: #fff;
456    z-index: 1000;
457    border-radius: 5px;
458    border: 1px solid rgba(var(--color-foreground), 1);
459    border-top: none;
460    overflow-x: hidden;
461    overflow-y: auto;
462    max-height: 350px;
463    min-width: 150px;
464    box-shadow: 0 0 5px rgba(0,0,0,0.1);
465  }
466    
467  .dropdown a{
468    text-decoration: none;
469    color: #000 !important;
470  }
471  
472  .dropdown-item {
473    padding: 0.4rem 2rem;
474    cursor: pointer;
475    line-height: 1.4;
476    overflow: hidden;
477    text-overflow: ellipsis;
478    white-space: nowrap;
479  }
480  
481  .dropdown-item:hover{
482    background-color: #f3f3f3;
483  }
484  
485  .search__input.is-focus{
486    border-radius: 15px;
487    border-bottom-left-radius: 0;
488    border-bottom-right-radius: 0;
489    border: 1px solid rgba(var(--color-foreground), 1);
490    border-bottom: none;
491    box-shadow: none;
492  }
493  
494  .clear-all {
495    text-align: right;
496    padding: 0 2rem 0.2rem;
497    line-height: 1;
498    font-size: 70%;
499    margin-bottom: -2px;
500  }
501  
502  .clear-all:hover{
503    background-color: #fff;
504  }
505  
506  .referral-notification {
507    position: absolute;
508    top: 100%;
509    right: -12px;
510    background: white;
511    border: 1px solid #e0e0e0;
512    border-radius: 8px;
513    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
514    width: 280px;
515    z-index: 1000;
516    padding: 16px;
517    margin-top: 8px;
518    font-size: 14px;
519    line-height: 1.4;
520  }
521  
522  .referral-notification::before {
523    content: '';
524    position: absolute;
525    top: -8px;
526    right: 20px;
527    width: 0;
528    height: 0;
529    border-left: 8px solid transparent;
530    border-right: 8px solid transparent;
531    border-bottom: 8px solid white;
532  }
533  
534  .referral-notification::after {
535    content: '';
536    position: absolute;
537    top: -9px;
538    right: 20px;
539    width: 0;
540    height: 0;
541    border-left: 8px solid transparent;
542    border-right: 8px solid transparent;
543    border-bottom: 8px solid #e0e0e0;
544  }
545  
546  .referral-notification h4 {
547    margin: 0 0 8px 0;
548    color: #2196F3;
549    font-size: 16px;
550    font-weight: 600;
551  }
552  
553  .referral-notification p {
554    margin: 0 0 12px 0;
555    color: #666;
556  }
557  
558  .referral-notification .referral-code {
559    background: #f5f5f5;
560    padding: 8px;
561    border-radius: 4px;
562    font-family: monospace;
563    font-size: 13px;
564    text-align: center;
565    margin: 8px 0;
566    border: 1px solid #ddd;
567  }
568  
569  .referral-notification .close-btn {
570    position: absolute;
571    top: 8px;
572    right: 8px;
573    background: none;
574    border: none;
575    font-size: 18px;
576    color: #999;
577    cursor: pointer;
578    padding: 0;
579    width: 20px;
580    height: 20px;
581    line-height: 1;
582  }
583  
584  .referral-notification .close-btn:hover {
585    color: #333;
586  }
587  
588  .referral-notification .action-btn {
589    background: #2196F3;
590    color: white;
591    border: none;
592    padding: 8px 16px;
593    border-radius: 4px;
594    cursor: pointer;
595    font-size: 12px;
596    margin-right: 8px;
597    margin-top: 8px;
598  }
599  
600  .referral-notification .action-btn:hover {
601    background: #1976D2;
602  }
603  
604  .referral-notification .dismiss-btn {
605    background: transparent;
606    color: #666;
607    border: 1px solid #ddd;
608    padding: 8px 16px;
609    border-radius: 4px;
610    cursor: pointer;
611    font-size: 12px;
612    margin-top: 8px;
613  }
614  
615  .referral-notification .dismiss-btn:hover {
616    background: #f5f5f5;
617  }
618  .referral-modal__dialog {
619    transform: translate(-50%, 0);
620    transition: transform var(--duration-default) ease, visibility 0s;
621    z-index: 10000;
622    position: fixed;
623    top: 20vh;
624    left: 50%;
625    width: 100%;
626    max-width: 350px;
627    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
628    border-radius: 12px;
629    background-color: #fff;
630    color: #000;
631    padding: 20px;
632    text-align: center;
633  }
634  .modal-overlay.referral-modal-overlay {
635    position: fixed;
636    top: 0;
637    left: 0;
638    width: 100%;
639    height: 100%;
640    background-color: rgba(0, 0, 0, 0.7);
641    z-index: 2001;
642    display: block;
643    opacity: 1;
644    transition: opacity var(--duration-default) ease, visibility 0s;
645  }
646</style>
647
648<header class="header-bar  sticky-topbar">
649  <div class="header-bg-wrapper">
650    <div class="header-wrapper wrapper">
651      
652
653      <div class="logo-header" role="banner">
654
655              
656                    <div class="h1 site-header__logo" itemscope itemtype="http://schema.org/Organization">
657              
658                    
659                        
660                      	
661                          <a href="/" class="logo-wrapper" itemprop="url">
662                            <img src="https://cdn.store-assets.com/s/332265/f/4561475.png?width=350&format=webp" alt="Hong Kong Hotpot" itemprop="logo">
663                          </a>
664                        
665
666                    
667              
668                </div>
669              
670
671      </div>
672
673      <div class="header-nav-bar medium-down--hide">
674          
675<ul class="site-nav large--text-center" id="AccessibleNav">
676  
677    
678    
679      <li >
680        <a href="/"  class="site-nav__link">Home</a>
681      </li>
682    
683  
684    
685    
686      
687      <li class="site-nav--has-dropdown" aria-haspopup="true">
688        <a href="/collections/all"  class="site-nav__link">
689          Catalog
690          <span class="arrow-icon">
691            <svg id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>arrow down</title><path d="M50,78.18A7.35,7.35,0,0,1,44.82,76L3.15,34.36A7.35,7.35,0,1,1,13.55,24L50,60.44,86.45,24a7.35,7.35,0,1,1,10.4,10.4L55.21,76A7.32,7.32,0,0,1,50,78.18Z"/></svg>
692          </span>
693        </a>
694        <ul class="site-nav__dropdown">
695          
696            
697            
698              <li >
699                <a href="/collections/soup"  class="site-nav__link">Soup</a>
700              </li>
701            
702          
703            
704            
705              <li >
706                <a href="/collections/snacks"  class="site-nav__link">Snacks</a>
707              </li>
708            
709          
710            
711            
712              <li >
713                <a href="/collections/fresh-meat"  class="site-nav__link">Fresh Meat</a>
714              </li>
715            
716          
717            
718            
719              <li >
720                <a href="/collections/hand-made-meat-ball-dumpling"  class="site-nav__link">Home Made Meat Ball & Dumpling</a>
721              </li>
722            
723          
724            
725            
726              <li >
727                <a href="/collections/seafood"  class="site-nav__link">Seafood</a>
728              </li>
729            
730          
731            
732            
733              <li >
734                <a href="/collections/vegetable"  class="site-nav__link">Vegetable</a>
735              </li>
736            
737          
738            
739            
740              <li >
741                <a href="/collections/noodle-others"  class="site-nav__link">Noodles & Others</a>
742              </li>
743            
744          
745            
746            
747              
748              <li class="site-nav_has-child">
749                <a href="/collections/hk-hotpot-special"  class="site-nav__link">
750                  HK Hotpot Market
751                </a>
752                <ul class="site-nav__dropdown_level-3">
753                  
754                    
755                    
756                      <li >
757                        <a href="/collections/ready-to-eat-frozen-food"  class="site-nav__link">Ready to Eat Frozen Food</a>
758                      </li>
759                    
760                  
761                    
762                    
763                      <li >
764                        <a href="/collections/frozen-meat-balls"  class="site-nav__link">Frozen Fresh Homemade Meat Balls</a>
765                      </li>
766                    
767                  
768                    
769                    
770                      <li >
771                        <a href="/collections/homemade-sauces"  class="site-nav__link">Homemade Sauces</a>
772                      </li>
773                    
774                  
775                </ul>
776              </li>
777            
778          
779        </ul>
780      </li>
781    
782  
783    
784    
785      <li >
786        <a href="/blogs/blog"  class="site-nav__link">Blog</a>
787      </li>
788    
789  
790    
791    
792      <li >
793        <a href="/store-locator"  class="site-nav__link">Store Locator</a>
794      </li>
795    
796  
797  
798  
799      
800        
801          
802        
803          
804        
805      
806  
807  
808  
809</ul>
810
811      </div>
812
813      <div class="desktop-header-nav medium-down--hide">
814
815
816        <div class="header-subnav">
817          
818
819
820
821
822
823
824          <div class="header-icon-nav">
825
826                
827
828                
829
830
831                
832                  
833                    <div class="header-bar__module">
834                      
835  <a class="popup-with-form" href="#search-form">
836    
837
838
839
840	<svg class="icon-search svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-search</title><path d="M68.5,65.87a35.27,35.27,0,1,0-5.4,4.5l23.11,23.1a3.5,3.5,0,1,0,5-4.94ZM14.82,41A28.47,28.47,0,1,1,43.28,69.43,28.5,28.5,0,0,1,14.82,41Z"/></svg>    
841
842  
843
844  </a>
845
846
847
848<!-- form itself -->
849<div id="search-form" class="white-popup-block mfp-hide popup-search">
850  <div class="popup-search-content">
851    <form action="/search" method="get" class="input-group search-bar" role="search">
852      
853      <input type="search" name="q" value="" placeholder="Search" class="input-group-field" aria-label="Search" placeholder="Search" autocomplete="off">
854      <div class="dropdown" id="searchDropdown"></div>
855      <input type="hidden" name="search_history" id="search_history">
856      <span class="input-group-btn">
857        <button type="submit" class="btn icon-fallback-text">
858          <span class="icon icon-search" aria-hidden="true"></span>
859          <span class="fallback-text">Search</span>
860        </button>
861      </span>
862    </form>
863  </div>
864</div>
865
866<script src="https://store-themes.easystore.co/332265/themes/2877/assets/magnific-popup.min.js?t=1787076014" type="text/javascript" ></script>
vendor: 1 bytes, line 866
866
867<script>
868$(document).ready(function() {
869	$('.popup-with-form').magnificPopup({
870		type: 'inline',
871		preloader: false,
872		focus: '#name',
873      	mainClass: 'popup-search-bg-wrapper',
874
875		// When elemened is focused, some mobile browsers in some cases zoom in
876		// It looks not nice, so we disable it:
877		callbacks: {
878			beforeOpen: function() {
879				if($(window).width() < 700) {
880					this.st.focus = false;
881				} else {
882					this.st.focus = '#name';
883				}
884			}
885		}
886	});
887  	$('.popup-search-content').click(function(event) {
888      	if($(event.target).attr('class') == "popup-search-content") {
889          $.magnificPopup.close();
890        }
891    });
892});
893</script>
893
894
895
896<script>
897  var _search_history_listings = ""
898  if(_search_history_listings != "") localStorage.setItem('searchHistory', JSON.stringify(_search_history_listings));
899
900  function clearAll() {
901    localStorage.removeItem('searchHistory');
902  
903    var customer = "";
904    if(customer) {
905      // Your logic to clear all data or call an endpoint
906      fetch('/account/search_histories', {
907          method: 'DELETE',
908          headers: {
909            "Content-Type": "application/json",
910            "X-Requested-With": "XMLHttpRequest"
911          },
912          body: JSON.stringify({
913            _token: "3cn9XmZUBkQfXsgxPhyvmLvhj45JmBQ0GxNoLBme"
914          }),
915      })
916      .then(response => response.json())
917    }
918  }
919  // End - store view history in local storage
920  
921  // search history dropdown  
922  var searchInputs = document.querySelectorAll('input[type=search]');
923  
924  if(searchInputs.length > 0) {
925    
926    searchInputs.forEach((searchInput)=>{
927    
928      searchInput.addEventListener('focus', function() {
929        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
930        searchDropdown.innerHTML = ''; // Clear existing items
931  
932        // retrieve data from local storage
933        var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || [];
934  
935        // Convert JSON to string
936        var search_history_json = JSON.stringify(searchHistoryData);
937  
938        // Set the value of the hidden input
939        searchInput.closest('form').querySelector("#search_history").value = search_history_json;
940  
941        // create dropdown items
942        var clearAllItem = document.createElement('div');
943        clearAllItem.className = 'dropdown-item clear-all';
944        clearAllItem.textContent = 'Clear';
945        clearAllItem.addEventListener('click', function() {
946            clearAll();
947            searchDropdown.style.display = 'none';
948            searchInput.classList.remove('is-focus');
949        });
950        searchDropdown.appendChild(clearAllItem);
951  
952        // create dropdown items
953        searchHistoryData.forEach(function(item) {
954          var dropdownItem = document.createElement('div');
955          dropdownItem.className = 'dropdown-item';
956          dropdownItem.textContent = item.term;
957          dropdownItem.addEventListener('click', function() {
958            searchInput.value = item.term;
959            searchDropdown.style.display = 'none';
960          });
961          searchDropdown.appendChild(dropdownItem);
962        });
963  
964        if(searchHistoryData.length > 0){
965          // display the dropdown
966          searchInput.classList.add('is-focus');
967          document.body.classList.add('search-input-focus');
968          searchDropdown.style.display = 'block';
969        }
970      });
971  
972      searchInput.addEventListener("focusout", (event) => {
973        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
974        searchInput.classList.remove('is-focus');
975        searchDropdown.classList.add('transparent');
976        setTimeout(()=>{
977          searchDropdown.style.display = 'none';
978          searchDropdown.classList.remove('transparent');
979          document.body.classList.remove('search-input-focus');
980        }, 400);
981      });
982    })
983  }
984  // End - search history dropdown
985</script>
985
986                    </div>
987                  
988                
989
990
991
992
993                
994                  <div class="header-bar__module dropdown-wrapper">
995                    
996                      <a href="/account/login">
997
998
999
1000    <svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-profile</title><path d="M50,51.8A24.4,24.4,0,1,0,25.6,27.4,24.43,24.43,0,0,0,50,51.8ZM50,10A17.4,17.4,0,1,1,32.6,27.4,17.43,17.43,0,0,1,50,10Z"/><path d="M62.66,57.66H37.34a30.54,30.54,0,0,0-30.5,30.5V93.5a3.5,3.5,0,0,0,3.5,3.5H89.66a3.5,3.5,0,0,0,3.5-3.5V88.16A30.54,30.54,0,0,0,62.66,57.66ZM86.16,90H13.84V88.16a23.53,23.53,0,0,1,23.5-23.5H62.66a23.53,23.53,0,0,1,23.5,23.5Z"/></svg>
1001
1002  
1003</a>
1004
1005                      <!-- Referral Notification Popup for Desktop -->
1006                      <div id="referralNotification" class="referral-notification" style="display: none;">
1007                        <button class="close-btn" onclick="dismissReferralNotification()">&times;</button>
1008                        <div style="text-align: center; margin-bottom: 16px;">
1009                          <div style="width: 100px; height: 100px; margin: 0 auto;">
1010                            <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg">
1011                          </div>
1012                        </div>
1013                        <p id="referralSignupMessage" style="text-align: center; font-size: 14px; color: #666; margin: 0 0 20px 0;">
1014                          Your friend gifted you   credit! Sign up now to redeem.
1015                        </p>
1016                        <div style="text-align: center;">
1017                          <button class="btn" onclick="goToSignupPage()" style="width: 100%; color: #fff;">
1018                            Sign Up
1019                          </button>
1020                        </div>
1021                      </div>
1022                    
1023                  </div>
1024                
1025
1026                <div class="header-bar__module cart-page-link-wrapper">
1027                  <span class="header-bar__sep" aria-hidden="true"></span>
1028                  <a class="CartDrawerTrigger cart-page-link">
1029                    
1030
1031
1032
1033	<svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-bag</title><path d="M91.78,93.11,84.17,24.44a3.5,3.5,0,0,0-3.48-3.11H69.06C67.53,10.94,59.57,3,50,3S32.47,10.94,30.94,21.33H19.31a3.5,3.5,0,0,0-3.48,3.11L8.22,93.11A3.49,3.49,0,0,0,11.69,97H88.31a3.49,3.49,0,0,0,3.47-3.89ZM50,10c5.76,0,10.6,4.83,12,11.33H38.05C39.4,14.83,44.24,10,50,10ZM15.6,90l6.84-61.67h8.23v9.84a3.5,3.5,0,0,0,7,0V28.33H62.33v9.84a3.5,3.5,0,0,0,7,0V28.33h8.23L84.4,90Z"/></svg>	
1034
1035  
1036
1037                    <span class="cart-count header-bar__cart-count hidden-count">0</span>
1038                  </a>
1039                </div>
1040
1041          </div>
1042        </div>
1043
1044
1045
1046      </div>
1047      
1048	  <div class="mobile-header-icons large--hide">
1049        
1050        <div class="large--hide">
1051          
1052  <a class="popup-with-form" href="#search-form">
1053    
1054
1055
1056
1057	<svg class="icon-search svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-search</title><path d="M68.5,65.87a35.27,35.27,0,1,0-5.4,4.5l23.11,23.1a3.5,3.5,0,1,0,5-4.94ZM14.82,41A28.47,28.47,0,1,1,43.28,69.43,28.5,28.5,0,0,1,14.82,41Z"/></svg>    
1058
1059  
1060
1061  </a>
1062
1063
1064
1065<!-- form itself -->
1066<div id="search-form" class="white-popup-block mfp-hide popup-search">
1067  <div class="popup-search-content">
1068    <form action="/search" method="get" class="input-group search-bar" role="search">
1069      
1070      <input type="search" name="q" value="" placeholder="Search" class="input-group-field" aria-label="Search" placeholder="Search" autocomplete="off">
1071      <div class="dropdown" id="searchDropdown"></div>
1072      <input type="hidden" name="search_history" id="search_history">
1073      <span class="input-group-btn">
1074        <button type="submit" class="btn icon-fallback-text">
1075          <span class="icon icon-search" aria-hidden="true"></span>
1076          <span class="fallback-text">Search</span>
1077        </button>
1078      </span>
1079    </form>
1080  </div>
1081</div>
1082
1083<script src="https://store-themes.easystore.co/332265/themes/2877/assets/magnific-popup.min.js?t=1787076014" type="text/javascript" ></script>
vendor: 1 bytes, line 1083
1083
1084<script>
1085$(document).ready(function() {
1086	$('.popup-with-form').magnificPopup({
1087		type: 'inline',
1088		preloader: false,
1089		focus: '#name',
1090      	mainClass: 'popup-search-bg-wrapper',
1091
1092		// When elemened is focused, some mobile browsers in some cases zoom in
1093		// It looks not nice, so we disable it:
1094		callbacks: {
1095			beforeOpen: function() {
1096				if($(window).width() < 700) {
1097					this.st.focus = false;
1098				} else {
1099					this.st.focus = '#name';
1100				}
1101			}
1102		}
1103	});
1104  	$('.popup-search-content').click(function(event) {
1105      	if($(event.target).attr('class') == "popup-search-content") {
1106          $.magnificPopup.close();
1107        }
1108    });
1109});
1110</script>
1110
1111
1112
1113<script>
1114  var _search_history_listings = ""
1115  if(_search_history_listings != "") localStorage.setItem('searchHistory', JSON.stringify(_search_history_listings));
1116
1117  function clearAll() {
1118    localStorage.removeItem('searchHistory');
1119  
1120    var customer = "";
1121    if(customer) {
1122      // Your logic to clear all data or call an endpoint
1123      fetch('/account/search_histories', {
1124          method: 'DELETE',
1125          headers: {
1126            "Content-Type": "application/json",
1127            "X-Requested-With": "XMLHttpRequest"
1128          },
1129          body: JSON.stringify({
1130            _token: "3cn9XmZUBkQfXsgxPhyvmLvhj45JmBQ0GxNoLBme"
1131          }),
1132      })
1133      .then(response => response.json())
1134    }
1135  }
1136  // End - store view history in local storage
1137  
1138  // search history dropdown  
1139  var searchInputs = document.querySelectorAll('input[type=search]');
1140  
1141  if(searchInputs.length > 0) {
1142    
1143    searchInputs.forEach((searchInput)=>{
1144    
1145      searchInput.addEventListener('focus', function() {
1146        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
1147        searchDropdown.innerHTML = ''; // Clear existing items
1148  
1149        // retrieve data from local storage
1150        var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || [];
1151  
1152        // Convert JSON to string
1153        var search_history_json = JSON.stringify(searchHistoryData);
1154  
1155        // Set the value of the hidden input
1156        searchInput.closest('form').querySelector("#search_history").value = search_history_json;
1157  
1158        // create dropdown items
1159        var clearAllItem = document.createElement('div');
1160        clearAllItem.className = 'dropdown-item clear-all';
1161        clearAllItem.textContent = 'Clear';
1162        clearAllItem.addEventListener('click', function() {
1163            clearAll();
1164            searchDropdown.style.display = 'none';
1165            searchInput.classList.remove('is-focus');
1166        });
1167        searchDropdown.appendChild(clearAllItem);
1168  
1169        // create dropdown items
1170        searchHistoryData.forEach(function(item) {
1171          var dropdownItem = document.createElement('div');
1172          dropdownItem.className = 'dropdown-item';
1173          dropdownItem.textContent = item.term;
1174          dropdownItem.addEventListener('click', function() {
1175            searchInput.value = item.term;
1176            searchDropdown.style.display = 'none';
1177          });
1178          searchDropdown.appendChild(dropdownItem);
1179        });
1180  
1181        if(searchHistoryData.length > 0){
1182          // display the dropdown
1183          searchInput.classList.add('is-focus');
1184          document.body.classList.add('search-input-focus');
1185          searchDropdown.style.display = 'block';
1186        }
1187      });
1188  
1189      searchInput.addEventListener("focusout", (event) => {
1190        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
1191        searchInput.classList.remove('is-focus');
1192        searchDropdown.classList.add('transparent');
1193        setTimeout(()=>{
1194          searchDropdown.style.display = 'none';
1195          searchDropdown.classList.remove('transparent');
1196          document.body.classList.remove('search-input-focus');
1197        }, 400);
1198      });
1199    })
1200  }
1201  // End - search history dropdown
1202</script>
1202
1203        </div>
1204
1205
1206        <!--  Mobile cart  -->
1207        <div class="large--hide">
1208          <a class="CartDrawerTrigger cart-page-link mobile-cart-page-link">
1209            
1210
1211
1212
1213	<svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-bag</title><path d="M91.78,93.11,84.17,24.44a3.5,3.5,0,0,0-3.48-3.11H69.06C67.53,10.94,59.57,3,50,3S32.47,10.94,30.94,21.33H19.31a3.5,3.5,0,0,0-3.48,3.11L8.22,93.11A3.49,3.49,0,0,0,11.69,97H88.31a3.49,3.49,0,0,0,3.47-3.89ZM50,10c5.76,0,10.6,4.83,12,11.33H38.05C39.4,14.83,44.24,10,50,10ZM15.6,90l6.84-61.67h8.23v9.84a3.5,3.5,0,0,0,7,0V28.33H62.33v9.84a3.5,3.5,0,0,0,7,0V28.33h8.23L84.4,90Z"/></svg>	
1214
1215  
1216
1217            <span class="cart-count hidden-count">0</span>
1218          </a>
1219        </div>
1220
1221        <!--  Mobile hamburger  -->
1222        <div class="large--hide">
1223          <a class="mobile-nav-trigger MobileNavTrigger">
1224            
1225
1226
1227
1228    <svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-nav-menu</title><path d="M6.7,26.34H93a3.5,3.5,0,0,0,0-7H6.7a3.5,3.5,0,0,0,0,7Z"/><path d="M93.3,46.5H7a3.5,3.5,0,0,0,0,7H93.3a3.5,3.5,0,1,0,0-7Z"/><path d="M93.3,73.66H7a3.5,3.5,0,1,0,0,7H93.3a3.5,3.5,0,0,0,0-7Z"/></svg>
1229
1230  
1231
1232          </a>
1233        </div>
1234      
1235        
1236          
1237          <!-- Referral Notification Modal for Mobile -->
1238          <details-modal class="referral-modal" id="referralMobileModal">
1239            <details>
1240              <summary class="referral-modal__toggle" aria-haspopup="dialog" aria-label="Open referral modal" style="display: none;">
1241              </summary>
1242              <div class="modal-overlay referral-modal-overlay"></div>
1243              <div class="referral-modal__dialog" role="dialog" aria-modal="true" aria-label="Referral notification">
1244                <div class="referral-modal__content">
1245                  <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;">
1246                    &times;
1247                  </button>
1248
1249                  <div style="margin-bottom: 24px;">
1250                    <div style="width: 120px; height: 120px; margin: 0 auto 20px;">
1251                      <img src="https://resources.easystore.co/storefront/icons/channels/vector_referral_program.svg" style="width: 100%; height: 100%;">
1252                    </div>
1253                  </div>
1254
1255                  <p id="referralSignupMessageMobile" style="font-size: 16px; color: #333; margin: 0 0 30px 0; line-height: 1.5;">
1256                    Your friend gifted you   credit! Sign up now to redeem.
1257                  </p>
1258
1259                  <button type="button" class="btn" onclick="goToSignupPageFromMobile()" style="width: 100%; color: #fff;">
1260                    Sign Up
1261                  </button>
1262                </div>
1263              </div>
1264            </details>
1265          </details-modal>
1266          
1267        
1268      
1269      </div>
1270
1271
1272    </div>
1273  </div>
1274</header>
1275
1276
1277
1278
1279
1280
1281    
1282    <main class="wrapper main-content" role="main">
1283      <div class="grid">
1284          <div class="grid__item">
1285            
1286  
1287            
1288<div itemscope itemtype="http://schema.org/Product">
1289
1290  <meta itemprop="url" content="https://hkhotpot.com/products/homemade-special-shrimp-chili-sauce-自製生蝦辣椒醬">
1291  <meta itemprop="image" content="https://cdn.store-assets.com/s/332265/i/31805882.jpg?width=480&format=webp">
1292  
1293
1294  <div class="section-header section-header--breadcrumb medium--hide small--hide">
1295    
1296<nav class="breadcrumb" role="navigation" aria-label="breadcrumbs">
1297  <a href="/" title="Back to the homepage">Home</a>
1298
1299  
1300
1301    
1302      <span aria-hidden="true" class="breadcrumb__sep">&rsaquo;</span>
1303      
1304        
1305        <a href="/collections/feature-on-homepage">Feature on homepage</a>
1306      
1307    
1308    <span aria-hidden="true" class="breadcrumb__sep">&rsaquo;</span>
1309    <span>Homemade Special Shrimp Chili Sauce / 自製生蝦辣椒醬</span>
1310
1311  
1312</nav>
1313
1314
1315  </div>
1316  
1317  <div class="product-single">
1318    <div class="grid product-single__hero">
1319      <div class="grid__item large--seven-twelfths">
1320        
1321        <div id="ProductPhoto" class="product-slider ">
1322          <div id="overlayZoom"></div>
1323          
1324          <div class="flexslider transparent">
1325            <ul class="slides">
1326              
1327              <li data-thumb="https://cdn.store-assets.com/s/332265/i/31805882.jpg?width=1024&format=webp" id="image-id-31805882">
1328                <div class="slide-img product-zoomable mfp-Images" data-image-id="31805882" data-image-type="Images" href="https://cdn.store-assets.com/s/332265/i/31805882.jpg?width=1024&format=webp">
1329                  <img src="https://cdn.store-assets.com/s/332265/i/31805882.jpg?width=1024&format=webp" alt="spicychilisauce.jpg" onmousemove="zoomIn(event)" onmouseout="zoomOut()">
1330                </div>
1331              </li>
1332              
1333            </ul>
1334          </div>
1335          
1336        </div>
1337
1338
1339        
1340        <ul class="gallery hidden">
1341          
1342            
1343            
1344              <li data-image-id="31805882" class="gallery__item" data-mfp-src="https://cdn.store-assets.com/s/332265/i/31805882.jpg?width=1024&format=webp">
1345              </li>
1346            
1347
1348          
1349          
1350        </ul>
1351        
1352
1353        
1354      </div>
1355      <div class="grid__item large--five-twelfths">
1356          <div class="product_option-detail option_tags-wrapper">
1357
1358            
1359            <h1 itemprop="name">Homemade Special Shrimp Chili Sauce / 自製生蝦辣椒醬</h1>
1360
1361            <div itemprop="offers" itemscope itemtype="http://schema.org/Offer">
1362              
1363
1364              <meta itemprop="priceCurrency" content="MYR">
1365              <link itemprop="availability" href="http://schema.org/InStock">
1366
1367              <div class="product-single__prices">
1368                <span id="ProductPrice" class="product-single__price" itemprop="price" content="38">
1369                  <span class=money data-ori-price='38.00'>RM 38.00 </span>
1370                </span>
1371
1372                <s style="display: none;" id="ComparePrice" class="product-single__sale-price" data-expires="">
1373                  <span class=money data-ori-price='0.00'>RM 0.00 </span>
1374                </s>
1375                <span id="ComparePricePercent" class="product-single__sale-percent"></span>
1376              </div>
1377
1378              <form action="/cart/add" method="post" enctype="multipart/form-data" data-addtocart='{"id":5613595,"name":"Homemade Special Shrimp Chili Sauce / 自製生蝦辣椒醬","sku":"","price":38.0,"quantity":1,"variant":"Default Title","category":"Feature on homepage\u0026quot;Homemade Sauces","brands":""}' id="AddToCartForm">
1379                <input type="hidden" name="_token" value="3cn9XmZUBkQfXsgxPhyvmLvhj45JmBQ0GxNoLBme">
1380                  <style>
1381.sf_promo-promo-label, #sf_promo-view-more-tag, .sf_promo-label-unclickable:hover {
1382    color: #4089e4
1383}
1384</style>
1385<div class="sf_promo-tag-wrapper">
1386    <div id="sf_promo-tag-label"></div>
1387    <div class="sf_promo-tag-container">
1388        <div id="sf_promo-tag"></div>
1389        <a id="sf_promo-view-more-tag" class="sf_promo-promo-label hide" onclick="getPromotionList(true)">View More</a>
1390    </div>
1391</div>
1392
1393
1394
1395				<div class="product-option-wrapper">
1396                  
1397
1398
1399
1400
1401                  <select name="id" id="productSelect" class="product-single__variants">
1402                    
1403                      
1404
1405                        <option  selected="selected"  data-sku="" value="25195665">Default Title - <span class=money data-ori-price='3,800.00'>RM 3,800.00 </span></option>
1406
1407                      
1408                    
1409                  </select>
1410
1411                  
1412				
1413                  <div class="product-single__quantity">
1414                    <label for="Quantity">Quantity</label>
1415                    <div>
1416                      <div class="cart-qty-adjust">
1417                        <span class="product-single__btn-qty-adjust" data-adjust="0">
1418                          -
1419                        </span>
1420                        <input type="number" id="Quantity" name="quantity" value="1" min="1" class="quantity-selector cart__quantity-selector">
1421                        <span class="product-single__btn-qty-adjust" data-adjust="1">
1422                          +
1423                        </span>
1424                      </div>
1425                    </div>
1426                  </div>
1427
1428                </div>
1429                
1430
1431                <button type="submit" name="add" id="AddToCart" class="btn addToCart-btn">
1432                  <span id="AddToCartText">Add to Cart</span>
1433                </button>
1434                <a class="btn addToCart-btn top-addToCart-btn hide medium--hide small--hide">
1435                  
1436
1437
1438
1439	<svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"><title>icon-bag</title><path d="M91.78,93.11,84.17,24.44a3.5,3.5,0,0,0-3.48-3.11H69.06C67.53,10.94,59.57,3,50,3S32.47,10.94,30.94,21.33H19.31a3.5,3.5,0,0,0-3.48,3.11L8.22,93.11A3.49,3.49,0,0,0,11.69,97H88.31a3.49,3.49,0,0,0,3.47-3.89ZM50,10c5.76,0,10.6,4.83,12,11.33H38.05C39.4,14.83,44.24,10,50,10ZM15.6,90l6.84-61.67h8.23v9.84a3.5,3.5,0,0,0,7,0V28.33H62.33v9.84a3.5,3.5,0,0,0,7,0V28.33h8.23L84.4,90Z"/></svg>	
1440
1441  
1442<span id="AddToCartText">Add to Cart</span>
1443                </a>
1444                
1445
1446                <div id="floating_action-bar" class="floating-action-bar large--hide">
1447                  <div class="floating-action-bar-wrapper">
1448                    
1449                      
1450                      
1451                      
1452                      
1453                      
1454                      <a href="/" class="btn btn-back-home">
1455                        <img src="https://cdn.easystore.blue/s/201/f/5590.png?width=150&format=webp"/>
1456                        <div>
1457                          Home
1458                        </div>
1459                      </a>
1460                      
1461                    
1462                    <button type="submit" id="MobileAddToCart" name="add" class="btn addToCart-btn" data-float-btn="1">
1463                      <span id="AddToCartText" class="AddToCartTexts">Add to Cart</span>
1464                    </button>
1465                  </div>
1466                </div>
1467
1468              </form>
1469
1470              
1471                
1472  
1473  
1474
1475
1476
1477
1478
1479<div class="social-sharing is-clean" data-permalink="https://hkhotpot.com/products/homemade-special-shrimp-chili-sauce-自製生蝦辣椒醬">
1480
1481  
1482    <a target="_blank" href="//www.facebook.com/sharer.php?u=https://hkhotpot.com/products/homemade-special-shrimp-chili-sauce-自製生蝦辣椒醬" class="share-facebook">
1483      
1484
1485
1486
1487    <svg class="facebook-share-icon-svg circle-share-icon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1024 1024"><defs><clipPath id="clip-path"><rect x="62.11" y="62.04" width="899.89" height="899.96" fill="none"/></clipPath></defs><title>Facebook</title><g id="Layer_1" data-name="Layer 1"><g clip-path="url(#clip-path)"><path d="M962,512C962,263.47,760.53,62,512,62S62,263.47,62,512c0,224.61,164.56,410.77,379.69,444.53V642.08H327.43V512H441.69V412.86c0-112.78,67.18-175.08,170-175.08,49.23,0,100.73,8.79,100.73,8.79V357.31H655.65c-55.9,0-73.34,34.69-73.34,70.28V512H707.12l-20,130.08H582.31V956.53C797.44,922.77,962,736.61,962,512Z" fill="#1877f2"/></g><path d="M687.17,642.08l20-130.08H582.31V427.59c0-35.59,17.44-70.28,73.34-70.28h56.74V246.57s-51.5-8.79-100.73-8.79c-102.79,0-170,62.3-170,175.08V512H327.43V642.08H441.69V956.53a454.61,454.61,0,0,0,140.62,0V642.08Z" fill="#fff"/></g></svg>
1488
1489  
1490
1491    </a>
1492  
1493
1494  
1495    <a target="_blank" href="//twitter.com/share?text=Homemade Special Shrimp Chili Sauce / 自製生蝦辣椒醬&amp;url=https://hkhotpot.com/products/homemade-special-shrimp-chili-sauce-自製生蝦辣椒醬" class="share-twitter">
1496      
1497
1498
1499
1500    <svg class="twitter-share-icon-svg circle-share-icon" viewBox="0 0 24 24" style="padding: 4px;background: #e9e9e9;border-radius: 50%;" stroke-width="2" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
1501      <path stroke="none" d="M0 0h24v24H0z" fill="none" style="fill: none;"/>
1502      <path d="M4 4l11.733 16h4.267l-11.733 -16z" style="fill: none;" />
1503      <path d="M4 20l6.768 -6.768m2.46 -2.46l6.772 -6.772" style="fill: none;" />
1504    </svg>
1505
1506  
1507
1508    </a>
1509  
1510
1511  
1512
1513    
1514      <a target="_blank" href="//pinterest.com/pin/create/button/?url=https://hkhotpot.com/products/homemade-special-shrimp-chili-sauce-自製生蝦辣椒醬&amp;media=&amp;description=Homemade Special Shrimp Chili Sauce / 自製生蝦辣椒醬" class="share-pinterest">
1515        
1516
1517
1518
1519    <svg class="pinterest-share-icon-svg circle-share-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><title>Pinterest</title><g id="Layer_1" data-name="Layer 1"><circle cx="512" cy="512" r="450" fill="#fff"/><path d="M536,962H488.77a23.77,23.77,0,0,0-3.39-.71,432.14,432.14,0,0,1-73.45-10.48c-9-2.07-18-4.52-26.93-6.8a7.6,7.6,0,0,1,.35-1.33c.6-1,1.23-2,1.85-3,18.19-29.57,34.11-60.23,43.17-93.95,7.74-28.83,14.9-57.82,22.3-86.74,2.91-11.38,5.76-22.77,8.77-34.64,2.49,3.55,4.48,6.77,6.83,9.69,15.78,19.58,36.68,31.35,60.16,39,25.41,8.3,51.34,8.07,77.41,4.11C653.11,770,693.24,748.7,726.79,715c32.57-32.73,54.13-72.14,68.33-115.76,12-37,17.81-75.08,19.08-114,1-30.16-1.94-59.73-11.72-88.36C777.38,323.39,728.1,271.81,658,239.82c-45.31-20.67-93.27-28.06-142.89-26.25a391.16,391.16,0,0,0-79.34,10.59c-54.59,13.42-103.37,38.08-143.29,78-61.1,61-91.39,134.14-83.34,221.41,2.3,25,8.13,49.08,18.84,71.86,15.12,32.14,37.78,56.78,71,70.8,11.87,5,20.67.54,23.82-12,2.91-11.56,5.5-23.21,8.88-34.63,2.72-9.19,1.2-16.84-5.15-24-22.84-25.84-31.36-56.83-30.88-90.48A238.71,238.71,0,0,1,300,462.16c10.93-55.27,39.09-99.84,85.3-132.46,33.39-23.56,71-35.54,111.53-38.54,30.47-2.26,60.5,0,89.89,8.75,27.38,8.16,51.78,21.59,71.77,42.17,31.12,32,44.38,71.35,45.61,115.25a383.11,383.11,0,0,1-3.59,61.18c-4.24,32-12.09,63-25.45,92.47-11.37,25.09-26,48-47.45,65.79-23.66,19.61-50.51,28.9-81.43,23.69-34-5.75-57.66-34-57.56-68.44,0-13.46,4.16-26.09,7.8-38.78,8.67-30.19,18-60.2,26.45-90.46,5.26-18.82,9.13-38,6.91-57.8-1.58-14.1-5.77-27.31-15.4-38-16.55-18.4-37.68-22.29-60.75-17-23.26,5.3-39.56,20.36-51.58,40.26-15,24.89-20.26,52.22-19.2,81a179.06,179.06,0,0,0,13.3,62.7,9.39,9.39,0,0,1,.07,5.31c-17.12,72.65-33.92,145.37-51.64,217.87-9.08,37.
151915-14.72,74.52-13.67,112.8.13,4.55,0,9.11,0,14.05-1.62-.67-3.06-1.22-4.46-1.86A452,452,0,0,1,103.27,700.4,441.83,441.83,0,0,1,63.54,547.58c-.41-5.44-1-10.86-1.54-16.29V492.71c.51-5.3,1.13-10.58,1.52-15.89A436.78,436.78,0,0,1,84,373,451.34,451.34,0,0,1,368.54,85.49a439.38,439.38,0,0,1,108.28-22c5.31-.39,10.59-1,15.89-1.52h38.58c1.64.28,3.26.65,4.9.81,14.34,1.42,28.77,2.2,43,4.3a439.69,439.69,0,0,1,140.52,45.62c57.3,29.93,106.14,70.19,146,121.07Q949,340.12,960.52,474.86c.4,4.64,1,9.27,1.48,13.91v46.46a22.06,22.06,0,0,0-.7,3.36,426.12,426.12,0,0,1-10.51,74.23C930,702,886.41,778.26,819.48,840.65c-75.94,70.81-166,110.69-269.55,119.84C545.29,960.91,540.65,961.49,536,962Z" fill="#e60023"/></g></svg>
1520
1521  
1522
1523      </a>
1524    
1525
1526  
1527  
1528  
1529    <a target="_blank" href="//social-plugins.line.me/lineit/share?url=https://hkhotpot.com/products/homemade-special-shrimp-chili-sauce-自製生蝦辣椒醬" class="share-line">
1530      
1531
1532
1533
1534    <svg class="line-share-icon-svg circle-share-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024"><title>LINE</title><g id="Layer_1" data-name="Layer 1"><circle cx="512" cy="512" r="450" fill="#00b900"/><g id="TYPE_A" data-name="TYPE A"><path d="M811.32,485c0-133.94-134.27-242.9-299.32-242.9S212.68,351,212.68,485c0,120.07,106.48,220.63,250.32,239.65,9.75,2.1,23,6.42,26.37,14.76,3,7.56,2,19.42,1,27.06,0,0-3.51,21.12-4.27,25.63-1.3,7.56-6,29.59,25.93,16.13s172.38-101.5,235.18-173.78h0c43.38-47.57,64.16-95.85,64.16-149.45" fill="#fff"/><path d="M451.18,420.26h-21a5.84,5.84,0,0,0-5.84,5.82V556.5a5.84,5.84,0,0,0,5.84,5.82h21A5.83,5.83,0,0,0,457,556.5V426.08a5.83,5.83,0,0,0-5.83-5.82" fill="#00b900"/><path d="M595.69,420.26h-21a5.83,5.83,0,0,0-5.83,5.82v77.48L509.1,422.85a5.39,5.39,0,0,0-.45-.59l0,0a4,4,0,0,0-.35-.36l-.11-.1a3.88,3.88,0,0,0-.31-.26l-.15-.12-.3-.21-.18-.1-.31-.17-.18-.09-.34-.15-.19-.06c-.11-.05-.23-.08-.34-.12l-.21-.05-.33-.07-.25,0a3,3,0,0,0-.31,0l-.3,0H483.26a5.83,5.83,0,0,0-5.83,5.82V556.5a5.83,5.83,0,0,0,5.83,5.82h21a5.83,5.83,0,0,0,5.83-5.82V479l59.85,80.82a5.9,5.9,0,0,0,1.47,1.44l.07,0c.11.08.23.15.35.22l.17.09.28.14.28.12.18.06.39.13.09,0a5.58,5.58,0,0,0,1.49.2h21a5.83,5.83,0,0,0,5.84-5.82V426.08a5.83,5.83,0,0,0-5.84-5.82" fill="#00b900"/><path d="M400.57,529.66H343.52V426.08a5.81,5.81,0,0,0-5.82-5.82h-21a5.82,5.82,0,0,0-5.83,5.82V556.49h0a5.75,5.75,0,0,0,1.63,4,.34.34,0,0,0,.08.09l.09.08a5.75,5.75,0,0,0,4,1.63h83.88a5.82,5.82,0,0,0,5.82-5.83v-21a5.82,5.82,0,0,0-5.82-5.83" fill="#00b900"/><path d="M711.64,452.91a5.81,5.81,0,0,0,5.82-5.83v-21a5.82,5.82,0,0,0-5.82-5.83H627.76a5.79,5.79,0,0,0-4,1.64l-.06.06-.1.11a5.8,5.8,0,0,0-1.61,4h0v130.4h0a5.75,5.75,0,0,0,1.63,4,.34.34,0,0,0,.08.09l.08.08a5.78,5.78,0,0,0,4,1.63h83.88a5.82,5.82,0,0,0,5.82-5.83v-21a5.82,5.82,0,0,0-5.82-5.83h-57v-22h57a5.82,5.82,0,0,0,5.82-5.84v-21a5.82,5.82,0,0,0-5.82-5.83h-57v-22Z" fill="#00b900"/></g></g></svg>
1535
1536  
1537
1538    </a>
1539  
1540
1541</div>
1542
1543              
1544              <hr class="hr--clear hr--small">
1545            </div>
1546
1547            
1548          </div>
1549      </div>
1550      
1551      <div class="grid__item">
1552        <link href="/assets/css/promotion.css?v2.94" rel="stylesheet" type="text/css" media="screen" />
1553 <style>
1554.sf_promo-ribbon{
1555  color: #4089e4;
1556  background-color: #4089e4
1557}
1558.sf_promo-ribbon-text,
1559.sf_promo-ribbon-text span{
1560  color: #fff;
1561  color: #fff;
1562}
1563
1564</style>
1565
1566
1567  <div id="promotion-section" class="sf_promo-container">
1568    <div id="sf_promo-container" >
1569    </div>
1570    <div class="text-center">
1571      <button id="get-more-promotion" class="btn btn--secondary hide" onclick="getPromotionList(true)">View More</button>
1572    </div>
1573  </div>
1574  <div class="text-center">
1575    <button id="view-more-promotion" class="btn btn--secondary hide" onclick="expandPromoSection()">View More</button>
1576  </div>
1577
1578
1579<script>var shop_money_format = "<span class=money data-ori-price='{{amount}}'>RM {{amount}} </span>";</script>
vendor: 1 bytes, line 1579
1579
1580<script src="/assets/js/promotion/promotion.js?v1.11" type="text/javascript"></script>
1580
1581
1582<script>
1583
1584  var param = {limit:5, page:1};
1585
1586  function getPromotionList(load_more){
1587
1588    var element = document.getElementById("sf_promo-container"),
1589        promo_section = document.getElementById("promotion-section"),
1590        promo_btn = document.getElementById("get-more-promotion"),
1591        view_more_btn = document.getElementById("view-more-promotion"),
1592        view_more_tag_btn = document.getElementById("sf_promo-view-more-tag"),
1593        page_value = parseInt(param.page);
1594
1595    if(load_more) {
1596      view_more_tag_btn.classList.add("sf_promo-is-loading");
1597      promo_btn.classList.add("btn--loading");
1598    }
1599
1600    $.ajax({
1601      type: "GET",
1602      data: param,
1603      dataType: 'json',
1604      url: "/products/homemade-special-shrimp-chili-sauce-自製生蝦辣椒醬/promotions",
1605      success: function(response){
1606
1607        document.getElementById("sf_promo-container").innerHTML += response.html;
1608
1609
1610        var promotion_tag_html = "";
1611        var promotion_tag_label_html = "";
1612
1613        var total_addon_discount = 0;
1614
1615        if(response.data.total_promotions > 0){
1616          promotion_tag_label_html += `<div style="display:block;"><label>Promotions</label></div>`;
1617
1618          for (let promotion of response.data.promotions) {
1619            var label_class = "sf_promo-label-unclickable",
1620                svg_icon = "";
1621            if(promotion.promotion_applies_to == "add_on_item" && (promotion.is_free_gift == false || promotion.prerequisite_subtotal_range == null)) { 
1622              total_addon_discount += 1;
1623              label_class = "sf_promo-label-clickable";
1624              svg_icon = `<svg class="sf_promo-svg-icon" xmlns="http://www.w3.org/2000/svg" class="icon icon-tabler icon-tabler-chevron-right" viewBox="0 0 24 24" stroke-width="2.8" stroke="currentColor" fill="none" stroke-linecap="round" stroke-linejoin="round">
1625                            <path stroke="none" d="M0 0h24v24H0z" fill="none"/>
1626                            <polyline points="9 6 15 12 9 18" />
1627                          </svg>`;
1628            }
1629            promotion_tag_html +=
1630            ` <a onclick="promoScrollToView('${promotion.id}')" class="sf_promo-promo-label ${label_class}">
1631                <b class="sf_promo-tag-label-title">${promotion.title.replace('&', '&amp;').replace('>','&gt;').replace('<','&lt;').replace('/','&sol;').replace('“', '&quot;').replace("'","&#39;") }</b>${svg_icon}
1632              </a>
1633            `;
1634          }
1635        }
1636
1637        if(total_addon_discount > 1 && !load_more){
1638          promo_section.classList.add('sf_promo-container-height-opacity','sf_promo-container-white-gradient')
1639          view_more_btn.classList.remove("hide");
1640        }else{
1641          promo_section.classList.remove('sf_promo-container-height-opacity','sf_promo-container-white-gradient')
1642          view_more_btn.classList.add("hide");
1643        }
1644
1645        if(response.data.page_count > param.page) {
1646          view_more_tag_btn.classList.remove("hide");
1647          promo_btn.classList.remove("hide");
1648        }else{
1649          view_more_tag_btn.classList.add("hide");
1650          promo_btn.classList.add("hide");
1651        }
1652
1653        document.getElementById("sf_promo-tag-label").innerHTML = promotion_tag_label_html;
1654        document.getElementById("sf_promo-tag").innerHTML += promotion_tag_html;
1655
1656        view_more_tag_btn.classList.remove("sf_promo-is-loading");
1657        promo_btn.classList.remove("btn--loading");
1658
1659
1660        promoVariantDetailInitial()
1661
1662        page_value = isNaN(page_value) ? 0 : page_value;
1663        page_value++;
1664
1665        param.page = page_value;
1666      },
1667      error: function(xhr){
1668
1669      }
1670    });
1671  }
1672
1673  var is_show_product_page = "1"
1674
1675  if(is_show_product_page){
1676    getPromotionList();
1677  }
1678</script>
1678
1679
1680        <div class="product-description rte" itemprop="description">
1681          <link href='/assets/css/froala_style.min.css' rel='stylesheet' type='text/css'/><div class='fr-view'><p>Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping &amp; Chicken Rice Sauce.</p><p>Size: 330g</p></div>
1682        </div>       
1683        
1684
1685      </div>
1686    </div>
1687  </div>
1688
1689  
1690    <div id="recommend-products-content" class="wrapper">
1691</div>
1692<script>
1693  $(function() {
1694    console.log("Product recommendation enabled.");
1695    $.ajax({
1696      url: "/products/homemade-special-shrimp-chili-sauce-自製生蝦辣椒醬/recommend",
1697      type: 'GET',
1698      dataType: "json",
1699      success: function(res){
1700        if(res.status == "success"){
1701          console.log("Success");
1702          $('#recommend-products-content').html(res.html);
1703          theme.cache.$productGridImages = $('body').find('.grid-link__image--product');
1704          theme.equalHeights();
1705
1706          var allCookies = document.cookie.split(";");
1707          var cookies = {};
1708          for (var i=0; i<allCookies.length; i++){
1709            var pair = allCookies[i].split("=");
1710            cookies[(pair[0]+'').trim()] = unescape(pair[1]);
1711          }
1712          var shopCurrency = 'MYR';
1713          var selectedCurrency = cookies['currency'] != undefined ? cookies['currency'] : 'MYR';
1714          Currency.convertAll(shopCurrency, selectedCurrency);
1715        }
1716        else{
1717          console.log("Not Success");
1718        }
1719      },
1720      fail: function(){
1721        console.log("Failed");
1722      }
1723    });
1724  });
1725</script>
1725
1726
1727
1728  
1729
1730</div>
1731
1732
1733
1734
1735<script src="https://store-themes.easystore.co/332265/themes/2877/assets/jquery.flexslider.min.js?t=1787076014" type="text/javascript" ></script>
1735
1736
1737<script type="text/javascript">
1738  $(".flexslider").addClass("transparent");
1739    var mobileSize = true;
1740	if(window.innerWidth > 768){
1741      	mobileSize = false;
1742    }
1743  window.timberSlider = window.timberSlider || {};
1744
1745  timberSlider.cacheSelectors = function () {
1746    timberSlider.cache = {
1747      $slider: $('.flexslider')
1748    }
1749  };
1750
1751  timberSlider.init = function () {
1752    timberSlider.cacheSelectors();
1753    timberSlider.sliders(); 
1754    $(".flexslider").removeClass("transparent");
1755    
1756  };
1757
1758  timberSlider.sliders = function () {
1759    var $slider = timberSlider.cache.$slider,
1760        sliderArgs = {
1761          animation: 'slide',
1762          animationSpeed: 500,
1763          pauseOnHover: true,
1764          keyboard: false,
1765          slideshow: false,
1766          slideshowSpeed: '4000',
1767          smoothHeight: false,
1768          touch: true,
1769          animationLoop: false,
1770          controlNav: true ,
1771        };
1772
1773    if ($slider.length) {
1774
1775      if ($slider.find('li').length === 1) {
1776        sliderArgs.slideshow = false;
1777        sliderArgs.slideshowSpeed = 0;
1778        sliderArgs.controlNav = false;
1779        sliderArgs.directionNav = false;
1780      }
1781
1782      $slider.flexslider(sliderArgs);
1783    }    
1784  };
1785  
1786
1787  // Initialize slider on doc ready
1788  
1789  $(document).ready(function() {
1790    timberSlider.init();
1791  });
1792
1793</script>
1793
1794
1795
1796
1797
1798	
1798<script src="/assets/option_selection_tag.js?v2" type="text/javascript" ></script>
1798
1799
1800
1801<script>
1802  $(document).ready(function(){
1803     // Hide the add to cart button when price less than 0
1804    var money = $("#ProductPrice").find(".money").text();
1805    var price = Number(money.replace(/[^0-9\.]+/g,""));
1806    var d = $("[data-addtocart]").data("addtocart");
1807    var app_currency = $( "[name='currencies'] option:selected" ).val();
1808    d.currency = app_currency;
1809
1810    
1811
1812    view_cart = "View cart";
1813    continue_shopping = "Continue shopping";
1814
1815    $("#Quantity").change(function(){
1816      var d = $("[data-addtocart]").data("addtocart");
1817      var new_val = $(this).val();  
1818      var app_currency = $( "[name='currencies'] option:selected" ).val();
1819
1820      d.currency = app_currency; 
1821      d.quantity = new_val;
1822      $("[data-addtocart]").data("addtocart",d);
1823    });
1824
1825    $("body").on("change",".single-option-selector",function(){
1826
1827      var money = $("#ProductPrice").find(".money").text();
1828      var price = Number(money.replace(/[^0-9\.]+/g,""));
1829      var app_currency = $( "[name='currencies'] option:selected" ).val();
1830      var v = "";
1831      $(".single-option-selector input:checked").each(function( index ) {
1832        v += ","+ $(this).val();
1833      });
1834
1835      d.variant = v.substring(1);
1836      d.price = price;
1837      d.currency = app_currency;
1838      
1839      if(price <= 0){
1840        $(".addToCart-btn, .BuyNowButton").hide();
1841        $("#floating_action-bar").hide();
1842        $(".product-single__quantity").addClass('is-hide');    
1843      }else{
1844        $(".addToCart-btn, .BuyNowButton").show();  
1845        $("#floating_action-bar").show();  
1846        $(".product-single__quantity").removeClass('is-hide');  
1847        $("[data-addtocart]").data("addtocart",d);
1848      }
1849
1850    });
1851
1852    // retrieve & store view history in local storage
1853    var productViewHistoryData = [];
1854    var storedProductViewHistory = localStorage.getItem('productViewHistory');
1855
1856    if(storedProductViewHistory !== null) {
1857    	productViewHistoryData = JSON.parse(storedProductViewHistory);
1858    }
1859
1860    if(productViewHistoryData.length > 0) {
1861      var currentViewedProduct = {"product_id":5613595,"viewed_at":"2026-10-07T19:27:46.995+08:00"}
1862      var currentViewedAt = new Date(currentViewedProduct.viewed_at);
1863      var matchProductID = false;
1864    
1865      productViewHistoryData.forEach(data => {
1866        // Check if product_id is similar
1867        if (data.product_id == currentViewedProduct.product_id) {
1868          var previousViewedAt = new Date(data.viewed_at);
1869          if (currentViewedAt > previousViewedAt) {
1870            data.viewed_at = currentViewedProduct.viewed_at;
1871          }
1872          matchProductID = true;
1873        }
1874      });
1875    
1876      // sort "viewed_at" desc
1877      productViewHistoryData.sort((a, b) => {
1878        var viewedAt1 = new Date(a.viewed_at);
1879        var viewedAt2 = new Date(b.viewed_at);
1880        return viewedAt2 - viewedAt1;
1881      });
1882    	
1883      if (!matchProductID) {
1884        productViewHistoryData.unshift(currentViewedProduct);
1885      }
1886    }
1887    else {
1888    	productViewHistoryData.push({"product_id":5613595,"viewed_at":"2026-10-07T19:27:46.995+08:00"});
1889    }
1890    
1891    productViewHistoryData = JSON.stringify(productViewHistoryData);
1892    localStorage.setItem('productViewHistory', productViewHistoryData);
1893  
1894    // End - retrieve & store view history in local storage
1895  });
1896
1897EasyStore.money_format = "<span class=money data-ori-price='{{amount}}'>RM {{amount}} </span>";
1898var selectCallback = function(variant, selector) {
1899  // console.log('variant, selector',variant, selector);
1900  timber.productPage({
1901    money_format: "<span class=money data-ori-price='{{amount}}'>RM {{amount}} </span>",
1902    variant: variant,
1903    selector: selector,
1904    translations: {
1905      add_to_cart : "Add to Cart",
1906      sold_out : "Sold Out",
1907      unavailable : "Unavailable"
1908    }
1909  });
1910};
1911
1912jQuery(function($) {
1913  // new EasyStore.OptionSelectors('productSelectTag', {
1914  // 	product: {"id":5613595,"handle":"homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","name":"Homemade Special Shrimp Chili Sauce \/ \u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","title":"Homemade Special Shrimp Chili Sauce \/ \u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","url":"\/products\/homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","share_url":"https:\/\/www.hkhotpot.com\/products\/homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","price":38,"price_min":"38.0","price_max":"38.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":25195665,"variants":[{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null}],"selected_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"first_available_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"selected_or_first_available_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"secondary_image":{"alt":"","img_url":"","src":"","type":""},"images":[{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"}],"media":[{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"}],"featured_media":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"metafields":[],"expires":null,"published_at":"2022-02-21T15:28:00.000+08:00","created_at":"2021-06-24T11:16:32.000+08:00","is_wishlisted":null,"content":"<link href='\/assets\/css\/froala_style.min.css' rel='stylesheet' type='text\/css'\/><div class='fr-view'><p>Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping &amp; Chicken Rice Sauce.<\/p><p>Size: 330g<\/p><\/div>","description":"<link href='\/assets\/css\/froala_style.min.css' rel='stylesheet' type='text\/css'\/><div class='fr-view'><p>Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping &amp; Chicken Rice Sauce.<\/p><p>Size: 330g<\/p><\/div>","meta_description":"Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping & Chicken Rice Sauce. Size: 330g","brands":[],"tags":[],"vendor":null,"collections":[{"handle":"feature-on-homepage","title":"Feature on homepage"},{"handle":"homemade-sauces","title":"Homemade Sauces"}],"highlight":{"data":null,"state":null,"is_auto_generation_required":false},"common_questions":{"data":null,"state":null,"is_auto_generation_required":false},"view_history":{"product_id":5613595,"viewed_at":"2026-10-07T19:27:46.995+08:00"},"cache_source":"live_api","promotions":[]}
1915  // });
1916  new EasyStore.OptionSelectors('productSelect', {
1917    product: {"id":5613595,"handle":"homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","name":"Homemade Special Shrimp Chili Sauce \/ \u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","title":"Homemade Special Shrimp Chili Sauce \/ \u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","url":"\/products\/homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","share_url":"https:\/\/www.hkhotpot.com\/products\/homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","price":38,"price_min":"38.0","price_max":"38.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":25195665,"variants":[{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null}],"selected_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"first_available_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"selected_or_first_available_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"secondary_image":{"alt":"","img_url":"","src":"","type":""},"images":[{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"}],"media":[{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"}],"featured_media":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"metafields":[],"expires":null,"published_at":"2022-02-21T15:28:00.000+08:00","created_at":"2021-06-24T11:16:32.000+08:00","is_wishlisted":null,"content":"<link href='\/assets\/css\/froala_style.min.css' rel='stylesheet' type='text\/css'\/><div class='fr-view'><p>Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping &amp; Chicken Rice Sauce.<\/p><p>Size: 330g<\/p><\/div>","description":"<link href='\/assets\/css\/froala_style.min.css' rel='stylesheet' type='text\/css'\/><div class='fr-view'><p>Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping &amp; Chicken Rice Sauce.<\/p><p>Size: 330g<\/p><\/div>","meta_description":"Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping & Chicken Rice Sauce. Size: 330g","brands":[],"tags":[],"vendor":null,"collections":[{"handle":"feature-on-homepage","title":"Feature on homepage"},{"handle":"homemade-sauces","title":"Homemade Sauces"}],"highlight":{"data":null,"state":null,"is_auto_generation_required":false},"common_questions":{"data":null,"state":null,"is_auto_generation_required":false},"view_history":{"product_id":5613595,"viewed_at":"2026-10-07T19:27:46.995+08:00"},"cache_source":"live_api","promotions":[]},
1918    onVariantSelected: selectCallback,
1919    enableHistoryState: false
1920  });
1921  
1922  // Add label if only one product option and it isn't 'Title'. Could be 'Size'.
1923  
1924
1925  // Hide selectors if we only have 1 variant and its title contains 'Default'.
1926  
1927  $('.selector-wrapper').hide();
1928  
1929});
1930   
1931   
1932//    $('body').on("click", ".selector-wrapper", function(event) {
1933//     console.log($(this).find('.single-option-selector').eq(1));
1934//     // $(this).find('select').eq(1).focus();
1935//      $(this).find('.single-option-selector').eq(0).focus();
1936//      event.preventDefault();
1937//   });
1938   
1939//    BuyNow START
1940   
1941if($('#BuyNowButton').length){
1942  var buyNowText = $('#BuyNowButton').text(),
1943      buyNowCSS = $('#BuyNowButton').attr('style');
1944   $('#MobileAddToCart').before( "<a class='BuyNowButton btn btn--secondary' style='"+ buyNowCSS +"'>"+ buyNowText +"</a>" );  
1945}
1946$("body").on("click",".BuyNowButton",function(){
1947    // Check required field validation for product properties
1948    var requiredFields = $("input[name^='properties'][required], select[name^='properties'][required]");
1949    for (var i = 0; i < requiredFields.length; i++) {
1950      if (!requiredFields[i].checkValidity()) {
1951        requiredFields[i].reportValidity();
1952        return false;
1953      }
1954    }
1955
1956    $(this).addClass('btn--loading');
1957    var v_id = Number($('#productSelect').val()),
1958        v_qty = Number($('#Quantity').val()),
1959        token = '3cn9XmZUBkQfXsgxPhyvmLvhj45JmBQ0GxNoLBme',
1960        currency = $( "[name='currencies'] option:selected" ).val();
1961        input_properties = null,
1962        select_properties = null,
1963        app_id = null;
1964    
1965    input_properties = $("input[name^='properties']");
1966    select_properties = $("select[name^='properties']");
1967    app_id = $( "input[name='app_id']" ).val();
1968
1969    let propertiesParam = {};
1970
1971    for( i = 0; i < input_properties.length ; i++){
1972
1973      let type = input_properties[i].type;
1974      let name = input_properties[i].name;
1975      let value = input_properties[i].value;
1976
1977      name = name.slice(11, name.length - 1);
1978
1979      if(type == 'radio'){
1980
1981        let isChecked = input_properties[i].checked;
1982
1983        if(isChecked == true){
1984
1985          propertiesParam[name] = value;
1986
1987        }
1988
1989      }
1990      else{
1991
1992        propertiesParam[name] = value;
1993
1994      }
1995
1996    }
1997
1998    for( i = 0; i < select_properties.length ; i++){
1999
2000      let name = select_properties[i].name;
2001      let value = select_properties[i].value;
2002
2003      name = name.slice(11, name.length - 1);
2004      propertiesParam[name] = value;
2005
2006    }
2007
2008    let dataParam = {
2009      id: v_id,
2010      quantity: v_qty,
2011      _token: token
2012    };
2013
2014    if(Object.keys(propertiesParam).length > 0){
2015
2016      dataParam.properties = propertiesParam;
2017
2018      if(app_id){
2019
2020        dataParam.app_id = app_id;
2021
2022      }
2023    }
2024
2025    $.ajax({
2026          type: "POST",
2027          dataType: 'json',
2028          url: "/cart/add?retrieve=true",
2029          data: dataParam,
2030        success: function(response){
2031            console.log('success',response);
2032
2033            var data_id = [],
2034                data_qty = [],
2035                cartCount = $('.cart-count'),
2036                cartItems = response.items;
2037
2038            $.each(cartItems, function( index, b ) {
2039
2040                if(b.promotion_id != undefined){
2041                    $.each(b.items, function( index, c ) {
2042                        if(v_id != c.variant.id){
2043                            data_id.push(c.variant.id);
2044                            data_qty.push(0);
2045                        }
2046                    });
2047                }
2048                else if(v_id != b.variant_id){
2049
2050                    data_id.push(b.variant_id);
2051                    data_qty.push(0);
2052
2053                }
2054
2055            });
2056
2057            data_id.push(v_id);
2058            data_qty.push(v_qty);
2059
2060
2061            cartCount.text(response.item_count);
2062
2063            $.ajax({
2064                      type: "POST",
2065                      dataType: 'json',
2066                      url: "/cart",
2067                      data:{
2068                        _token: token,
2069                        ids: data_id,
2070                        updates: data_qty,
2071                        checkout: '',
2072                        current_currency: currency
2073                    },
2074                    success: function(response){
2075                        console.log('success',response);
2076
2077                        if(response.status == 'success'){
2078                            window.location.href = '/checkout/index';
2079                        }else{
2080                            window.location.href = '/cart';
2081                        }
2082                    },
2083                    error: function(xhr){
2084                        console.log('error',xhr);
2085                        window.location.href = '/cart';
2086                    }
2087            });
2088
2089        },
2090        error: function(xhr){
2091            console.log('error',xhr);
2092            $('.BuyNowButton').removeClass('btn--loading');
2093
2094            var data = eval('(' + xhr.responseText + ')'),
2095                response = data.description;
2096
2097            $('#BuyNowButtonError').remove();
2098            $('#BuyNowButton').before('<p id="BuyNowButtonError" class="note errors">'+response+'</p>');
2099
2100        }
2101    });
2102
2103});
2104
2105
2106
2107$( document ).ready(function() {
2108  function checkProduct(){
2109      var money = $("#ProductPrice").find(".money").text(),
2110          price = Number(money.replace(/[^0-9\.]+/g,"")),
2111          disabled = $('#AddToCart').attr('disabled');
2112
2113      if(!$('#productSelect').val() || price <= 0 || disabled != undefined){
2114          $( ".BuyNowButton" ).hide();
2115      }else{
2116          $( ".BuyNowButton" ).show();
2117      }
2118  };checkProduct();
2119
2120  $("body").on("change",".single-option-selector",function(){
2121      checkProduct();
2122  });
2123});
2124//    BuyNow END
2125
2126$( document ).ready(function() {
2127    var winScroll = $(this).scrollTop(),
2128        addToCartBtn = $('#AddToCart'),
2129        topAddToCartBtn = $('.top-addToCart-btn'),
2130        headerBarHeight = $('.header-bar').height();
2131	
2132  	
2133  
2134    $(window).scroll(function(){
2135      var winScroll = $(this).scrollTop();
2136	  
2137      if(winScroll > (addToCartBtn.offset().top * 1.2) && topAddToCartBtn.length){
2138        topAddToCartBtn.removeClass('hide');
2139        topAddToCartBtn.css('top', (headerBarHeight + 40) + 'px');
2140      }else{
2141        topAddToCartBtn.addClass('hide');
2142      }
2143
2144    });
2145  
2146  if(window.innerWidth > 768 && $('.flexslider-has-thumbs').length){
2147    var slider_thumbs_child = $(".flex-control-thumbs li").length;
2148    var slider_thumbs_height = ((slider_thumbs_child / 6) * 80) + 80 ;
2149    $(".product-slider.flexslider-has-thumbs").css("margin-bottom", slider_thumbs_height);
2150    
2151    $("body").on("mouseover",".flex-control-thumbs img",function(){
2152		$(this).trigger( "click" );
2153    });
2154  }
2155});
2156
2157function zoomIn(event) {
2158  if(window.innerWidth > 768){
2159    var element = document.getElementById("overlayZoom");
2160    element.style.display = "inline-block";
2161    var img = $(".flex-active-slide img");
2162    var posX = event.offsetX ? (event.offsetX) : event.pageX - img.offsetLeft;
2163    var posY = event.offsetY ? (event.offsetY) : event.pageY - img.offsetTop;
2164    element.style.backgroundPosition = (-posX ) + "px " + (-posY ) + "px";
2165    element.style.backgroundImage = "url('" + img.attr("src") + "')";
2166    element.style.width = img.width() + "px";
2167    element.style.height = img.height() + "px";
2168    element.className = "active";
2169  }
2170}
2171
2172function zoomOut() {
2173  var element = document.getElementById("overlayZoom");
2174  element.style.display = "none";
2175  element.className = "";
2176}
2177   
2178$('body').on("click", ".product-single__btn-qty-adjust", function() {
2179
2180  var $button = $(this);
2181  var oldValue = $button.parent().find("input.cart__quantity-selector").val();
2182
2183  if ($button.attr('data-adjust') == 1) {
2184    var newVal = parseFloat(oldValue) + 1;
2185  } else {
2186   // Don't allow decrementing below zero
2187    if (oldValue > 1) {
2188      var newVal = parseFloat(oldValue) - 1;
2189    } else {
2190      newVal = 1;
2191    }
2192  }
2193
2194  $button.parent().find("input.cart__quantity-selector").val(newVal);
2195  
2196});
2197   
2198</script>
2198
2199
2200  
2201            
2202          </div>
2203      </div>
2204      
2205      
2206  
2207    </main>
2208  
2209    <footer class="site-footer small--text-center" role="contentinfo">
2210      
2211      
2212      
2213      <div class="wrapper">
2214  
2215        <div class="grid-uniform">
2216  
2217          
2218          
2219          
2220          
2221            
2222          
2223          
2224          
2225            
2226          
2227          
2228          
2229  
2230          
2231              
2232            
2233  
2234          
2235      
2236          
2237          
2238          <div class="grid__item large--one-half ">
2239            <a href="/" class="logo-wrapper" itemprop="url" >
2240              
2241                <img style="max-width: 250px" src="https://cdn.store-assets.com/s/332265/f/4561475.png?width=350&format=webp" alt="Hong Kong Hotpot" itemprop="logo">
2242              
2243            </a>
2244            <p class="site-footer__links">Copyright © {{2020}} HK HOT POT RESTAURANT (002493335-P)    Email: [email protected]</p>
2245          </div>
2246          
2247          
2248            <div class="grid__item large--one-quarter medium--one-half">
2249              
2250              <h4>Quick Links</h4>
2251              
2252              <ul class="site-footer__links">
2253                
2254                  <li><a href="/store-locator" >Store Locator</a></li>
2255                
2256                
2257              </ul>
2258            </div>
2259          
2260  
2261          
2262            <div class="grid__item large--one-quarter medium--one-half">
2263              <h4>Follow Us</h4>
2264                
2265                <ul class="inline-list social-icons">
2266  
2267  
2268    <li>
2269      <a class="icon-fallback-text" href="https://www.facebook.com/" title="Hong Kong Hotpot on Facebook" target="_blank">
2270        
2271
2272
2273
2274    <svg xmlns="http://www.w3.org/2000/svg" class="facebook-icon-svg social-icon-svg" viewBox="0 0 1024 1024">
2275        <title>icon-facebook</title>
2276        <path d="M837.66,223.9a33.73,33.73,0,0,0-3.11-15c-6.78-13.85-17.87-21.09-33.37-21.09q-288.46,0-576.91,0c-.62,0-1.24,0-1.85,0a34.51,34.51,0,0,0-25.88,12.11c-6.31,7.13-8.85,15.57-8.85,25.07q.08,287.7,0,575.4c0,1,0,1.9,0,2.86A32.93,32.93,0,0,0,190,814.71c4.45,11.79,16.3,23.11,35,23.1q153.61-.1,307.24,0c2.36,0,2.36,0,2.36-2.37q0-123.3,0-246.6c0-2.55,0-2.55-2.53-2.55H452.27c-2.26,0-2.26,0-2.26-2.17v-96.3h84.63v-2.46c0-22.12-.11-44.24.06-66.36.07-8.29.57-16.59,1.28-24.85a129.58,129.58,0,0,1,7.43-33c10.86-30,30.59-51.74,60-64.51A133.44,133.44,0,0,1,653,285.82c12.45-.37,24.93,0,37.38.34,9.64.27,19.27.95,28.9,1.6,5.36.36,10.7,1.07,16.06,1.5,1.46.12,1.65.75,1.65,2q0,42.2,0,84.39c0,.59-.06,1.18-.09,1.85h-2.39c-16.28,0-32.56,0-48.84.05-7.63,0-15.23.54-22.65,2.61-11.61,3.23-19.86,10.09-23.65,21.78a55.66,55.66,0,0,0-2.74,16.86c-.14,22.23-.1,44.47-.13,66.7,0,2.25,0,2.25,2.31,2.25h94.66a15.13,15.13,0,0,1,0,1.54c-.38,2.94-.81,5.88-1.18,8.82-1.17,9.16-2.3,18.33-3.48,27.5-1.29,10-2.63,20-3.94,30-1.23,9.44-2.43,18.88-3.67,28.32-.31,2.32-.35,2.32-2.78,2.32h-79a4.62,4.62,0,0,0-1.67,0,2.5,2.5,0,0,0-1.2,1.16,3.68,3.68,0,0,0,0,1.49V835.21c0,2.56,0,2.56,2.53,2.56H797.83c2.13,0,4.27-.07,6.39-.21,11.56-.78,20.61-6.07,27.23-15.48,4.66-6.6,6.24-14.09,6.24-22.11q-.06-287.19,0-574.38Z" fill="#999"/>
2277    </svg>
2278
2279  
2280
2281        <span class="fallback-text">Facebook</span>
2282      </a>
2283    </li>
2284  
2285  
2286  
2287    <li>
2288      <a class="icon-fallback-text" href="https://instagram.com/" title="Hong Kong Hotpot on Instagram" target="_blank">
2289        
2290
2291
2292
2293    <svg xmlns="http://www.w3.org/2000/svg" class="instagram-icon-svg social-icon-svg" viewBox="0 0 1024 1024">
2294        <title>icon-instagram</title>
2295        <path d="M834.35,341.22a231.23,231.23,0,0,0-9.59-46.45,166.71,166.71,0,0,0-52.17-78.33c-17-14.41-36.33-24.44-57.44-31.3-21.52-7-43.69-10.21-66.19-11.12-22.28-.9-44.58-1.73-66.87-1.85-47.68-.26-95.37-.16-143.06,0-27.47.11-54.95.69-82.32,3.39a220.7,220.7,0,0,0-37.43,6.95c-26.2,7.26-50,19-70.24,37.45-18.06,16.4-32.3,35.52-41.87,58.05-9.89,23.29-15.13,47.68-16.69,72.82-1.23,19.78-2.06,39.6-2.32,59.41-.38,28.91-.1,57.82-.1,86.73-.23,39.92-.67,79.85,1,119.76.72,17.66,1.57,35.3,4.6,52.76,3.22,18.52,8.32,36.51,16.71,53.34C232.83,768,268.81,797,317.12,811a246.28,246.28,0,0,0,59.24,9.11c25.3.95,50.63,1.78,75.95,1.94,43.83.28,87.66.1,131.5,0,26-.08,52.08-.72,78.06-2.74a234.52,234.52,0,0,0,45.76-8c24.54-6.92,46.82-18.12,66.22-34.79,24.65-21.17,41.5-47.44,51.3-78.36,6.7-21.14,9.83-42.88,10.73-64.94.9-21.84,1.73-43.69,1.82-65.55q.33-78.21-.15-156.44C837.42,387.82,836.72,364.47,834.35,341.22Zm-55.3,232.84c-.12,20.41-1,40.84-2,61.24-1,19.2-4.13,38.08-11.74,55.92q-18.43,43.24-62.47,60c-14.36,5.48-29.3,8.3-44.55,9.53-27.07,2.18-54.21,2.63-81.36,2.73-21.31.07-42.62,0-63.93,0v-.16c-28.47,0-56.94.22-85.4-.09-17.5-.18-35-1-52.49-1.89-19.94-1-39.51-4.31-57.95-12.38q-41.6-18.2-58-60.68a162.37,162.37,0,0,1-9.95-45.62c-2-24.66-2.62-49.38-2.66-74.1-.09-50.88-.16-101.77.12-152.65.11-19,1-38.09,2-57.11a180,180,0,0,1,8.78-48.23c8.32-24.84,23.63-44.14,45.66-58.12,11.78-7.48,24.85-11.91,38.36-15,15.57-3.61,31.43-4.65,47.34-5.32,54.32-2.28,108.68-1.46,163-1.5,18.67,0,37.34.12,56,.56,15.84.38,31.7,1,47.51,2,18.33,1.18,36.27,4.59,53.19,12q41.67,18.25,58.1,60.83c5.67,14.7,8.64,30,9.91,45.63,2,25,2.63,50,2.67,75.09C779.25,475.82,779.35,524.94,779.05,574.06Z" fill="#999"/><path d="M513,330.12c-92-.34-167,74.55-167.08,166.87s74.71,167,167,167A166.86,166.86,0,0,0,679.77,497.12C679.87,405,605.46,330.45,513,330.12Zm-.29,275.31A108.38,108.38,0,1,1,621.21,497.15,108.38,108.38,0,0,1,512.7,605.43Z" fill="#999"/><path d="M686.47,284.5a39,39,0,1,0,38.92,39.14A39,39,0,0,0,686.47,284.5Z" fill="#999"/>
2296    </svg>
2297
2298  
2299
2300        <span class="fallback-text">Instagram</span>
2301      </a>
2302    </li>
2303  
2304  
2305  
2306  
2307  
2308  
2309    <li>
2310      <a class="icon-fallback-text" href="https://wa.me/601111296071" title="Hong Kong Hotpot on Whatsapp" target="_blank">
2311        
2312
2313
2314
2315    <svg xmlns="http://www.w3.org/2000/svg" class="whatsapp-icon-svg social-icon-svg" viewBox="0 0 1024 1024">
2316        <title>icon-whatsapp</title>
2317        <path d="M816.7,348.82A345.81,345.81,0,0,0,694.1,218.71c-44.79-28-93.6-44.39-146.07-49.88a345.45,345.45,0,0,0-92,2.72,339.05,339.05,0,0,0-94.38,29.87A343.85,343.85,0,0,0,238,302.05Q177.25,381,167.56,480.22a345,345,0,0,0,43.29,203.46,6.68,6.68,0,0,1,.57,4.56q-16.36,60.35-32.93,120.63c-5.08,18.56-10.2,37.12-15.43,56.13,1.15-.24,1.8-.34,2.43-.51Q254.72,841.08,344,817.7a7.88,7.88,0,0,1,4.84.57c11.92,5.41,23.56,11.5,35.68,16.39a344.42,344.42,0,0,0,274.43-8.3,343.9,343.9,0,0,0,122.89-97q64.35-80.48,74.57-183.1a344.59,344.59,0,0,0-2.88-89.12A336.49,336.49,0,0,0,816.7,348.82ZM799.12,528.11c-3.35,60.82-23.74,115.33-61.56,163C695.72,743.88,641.71,778,576.15,793.47A277.11,277.11,0,0,1,491.09,800a284.89,284.89,0,0,1-129.36-41.68,16.37,16.37,0,0,0-14.17-2c-33.08,8.93-66.26,17.47-99.4,26.13-.46.12-.93.19-2,.42,1.61-5.94,3.07-11.39,4.56-16.83q11.91-43.44,23.73-86.9a6.64,6.64,0,0,0-.91-4.73c-11.53-18-21.73-36.58-29.45-56.51a287.49,287.49,0,0,1-17.41-68.71c-5.7-46-.87-90.81,15-134.35a287.26,287.26,0,0,1,479.82-98.72c32.53,34.66,55.29,74.85,67.86,120.72A284,284,0,0,1,799.12,528.11Z" fill="#999"/><path d="M679.23,590c-12.9-6.08-25.57-12.63-38.44-18.75-10.69-5.09-21.41-10.15-32.36-14.63-8.48-3.47-12.2-1.6-17.82,5.65-8.75,11.27-17.79,22.32-26.93,33.28-4.38,5.25-8.82,6.33-15,3.54-11.48-5.18-23.13-10.16-34.09-16.32C477.68,562,449.73,532.17,428.22,496c-4.54-7.64-4-11.33,2-17.83,8.45-9.23,17.15-18.29,22.45-29.93a16.29,16.29,0,0,0,.44-13.68c-8.9-21.42-17.75-42.87-26.8-64.23a70.6,70.6,0,0,0-6.52-11.83c-2.39-3.56-6.15-5.12-10.51-5-3.28,0-6.56,0-9.84,0,0-.17,0-.34,0-.52-5.1.27-10.26.1-15.27.89-8.07,1.27-14,6.29-19.53,12.06-23.72,24.67-32.22,53.95-26.71,87.44a135.88,135.88,0,0,0,19.34,50.09c9.28,14.85,19.38,29.25,29.94,43.23a405.65,405.65,0,0,0,65.73,68.21c29.34,24.26,62.45,41.51,98.38,53.66,15,5.07,29.89,10.33,46,10.64,10.73.21,21.46.08,31.83-3a103.21,103.21,0,0,0,39.24-22c5.11-4.48,9.77-9.49,12.29-15.89a103.2,103.2,0,0,0,7.06-34.67C687.88,597,685.22,592.79,679.23,590Z" fill="#999"/>
2318    </svg>
2319
2320  
2321
2322        <span class="fallback-text">Whatsapp</span>
2323      </a>
2324    </li>
2325    
2326  
2327  
2328  
2329</ul>
2330
2331            </div>
2332          
2333        </div>
2334  
2335        <hr class="hr--small hr--clear">
2336  
2337        
2338          <div class="grid">
2339            
2340             <div class="grid__item text-center">
2341               <ul class="inline-list payment-icons">
2342                  
2343                    <li>
2344                      <span class="icon-fallback-text">
2345                        <span class="icon icon-visa" aria-hidden="true"></span>
2346                        <span class="fallback-text">Visa</span>
2347                      </span>
2348                    </li>
2349                  
2350                  
2351                    <li>
2352                      <span class="icon-fallback-text">
2353                        <span class="icon icon-master" aria-hidden="true"></span>
2354                        <span class="fallback-text">Master</span>
2355                      </span>
2356                    </li>
2357                  
2358                  
2359                    <li>
2360                      <span class="icon-fallback-text">
2361                        <span class="icon icon-american_express" aria-hidden="true"></span>
2362                        <span class="fallback-text">American Express</span>
2363                      </span>
2364                    </li>
2365                  
2366                  
2367                  
2368                  
2369               </ul>
2370             </div>
2371             
2372             
2373             <div class="grid__item text-center">
2374               <ul class="inline-list payment-icons">
2375                 
2376                    <li>
2377                    <img src="https://s3.dualstack.ap-southeast-1.amazonaws.com/eesb.public/images/payment/payments_bank-transfer.svg" alt="payment_bank-transfer">
2378                    </li>
2379                 
2380               </ul>
2381             </div>
2382            
2383           
2384             <div class="grid__item text-center">
2385               <ul class="inline-list payment-icons">
2386                    <li>
2387                    <img src="https://s3-ap-southeast-1.amazonaws.com/eesb.public/images/payment/ssl_certified.png">
2388                    </li>
2389               </ul>
2390             </div>
2391           
2392           </div>
2393         
2394  
2395         <div class="grid">
2396           <div class="grid__item text-center">
2397             
2398             
2399             <p class="site-footer__links">
2400              
2401              
2402                
2403                  <a href="/legal/terms-of-service">Terms of Service</a>
2404                
2405                
2406              
2407                
2408                  | <a href="/legal/privacy-policy">Privacy Policy</a>
2409                
2410                
2411              
2412                
2413                  | <a href="/legal/refund-policy">Refund Policy</a>
2414                
2415                
2416              
2417                
2418                  | <a href="/pages/contact-us">Contact Us</a>
2419                
2420                
2421              
2422             </p>
2423             
2424           </div>
2425         </div>
2426  
2427      </div>
2428    </footer>
2429    
2430
2431    
2432    
2433      <div id="scrollTopButton" class="on-right" style="display: none">
2434        <svg class="svg-icon" id="Layer_1" data-name="Layer 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
2434<path d="M22,18.25a1.21,1.21,0,0,1-.88-.37L12,8.77,2.88,17.88a1.24,1.24,0,0,1-1.76-1.76l10-10a1.24,1.24,0,0,1,1.76,0l10,10a1.24,1.24,0,0,1,0,1.76A1.21,1.21,0,0,1,22,18.25Z"/></svg>
2435      </div>
2436      
2436<script>
2437        $( document ).ready(function() {
2438          var winScroll = $(this).scrollTop(),
2439          this_el = $("#scrollTopButton");
2440
2441          // Header bar
2442          if(winScroll > 400){
2443            this_el.fadeIn();
2444          }else{
2445            this_el.fadeOut();
2446          }
2447
2448          $("#scrollTopButton").click(function() {
2449            $('html,body').animate({ scrollTop: 0 });
2450          });
2451
2452          $(window).scroll(function(){
2453            var winScroll = $(this).scrollTop();
2454
2455            // Header bar
2456            if(winScroll > 400){
2457              this_el.fadeIn();
2458            }else{
2459              this_el.fadeOut();
2460            }
2461
2462          });
2463        });
2464      </script>
2464
2465    
2466
2467  
2468    
2469  
2470    
2470<script src="https://store-themes.easystore.co/332265/themes/2877/assets/fastclick.min.js?t=1787076014" type="text/javascript" ></script>
2470
2471    
2471<script src="https://store-themes.easystore.co/332265/themes/2877/assets/timber.js?v1.1?t=1787076014" type="text/javascript" ></script>
2471
2472    
2472<script src="https://store-themes.easystore.co/332265/themes/2877/assets/theme.js?t=1787076014" type="text/javascript" ></script>
2472
2473  
2474    
2475      
2476        
2476<script src="https://store-themes.easystore.co/332265/themes/2877/assets/magnific-popup.min.js?t=1787076014" type="text/javascript" ></script>
2476
2477      
2478    
2479  
2480    
2481      
2482        
2482<script src="https://store-themes.easystore.co/332265/themes/2877/assets/social-buttons.js?t=1787076014" type="text/javascript" ></script>
2482
2483      
2484    
2485  
2486    
2487
2488<script src="/assets/currencies.js" type="text/javascript" ></script>
vendor: 1 bytes, line 2488
2488
2489<script src="/assets/jquery.currencies.min.js" type="text/javascript" ></script>
vendor: 1 bytes, line 2489
2489
2490<script src="/assets/currencies_format.js" type="text/javascript" ></script>
2490
2491
2492<script>
2493Currency.format = "money_with_currency_format";
2494var shopCurrency = 'MYR';
2495var selectedCurrency = '';
2496
2497
2498  Currency.convert = function(amount, from, to) {
2499    return amount;
2500  };
2501
2502  
2503if( $.cookie("currency") == null ){
2504  
2505  if( selectedCurrency != false ) {
2506
2507  Currency.convertAll(shopCurrency, selectedCurrency);
2508  jQuery('.selected-currency').text(Currency.currentCurrency);  
2509
2510  }
2511
2512}
2513
2514/* Sometimes merchants change their shop currency, let's tell our JavaScript file */
2515// Currency.moneyFormats[shopCurrency].money_with_currency_format = "";
2516// Currency.moneyFormats[shopCurrency].money_format = "RM {{amount}} ";
2517  
2518/* Default currency */
2519var defaultCurrency = 'MYR';
2520  
2521/* Cookie currency */
2522var cookieCurrency = Currency.cookie.read();
2523
2524  cookieCurrency = shopCurrency;
2525
2526$("input[name=current_currency]").val(cookieCurrency);
2527if(cookieCurrency == null){
2528  cookieCurrency = shopCurrency;
2529  Currency.cookie.write(shopCurrency);
2530}
2531/* Fix for customer account pages */
2532jQuery('span.money span.money').each(function() {
2533  jQuery(this).parents('span.money').removeClass('money');
2534});
2535/* Saving the current price */
2536jQuery('span.money').each(function() {
2537  jQuery(this).attr('data-currency-MYR', jQuery(this).html());
2538});
2539// If there's no cookie.
2540if (cookieCurrency == null) {
2541  if (shopCurrency !== defaultCurrency) {
2542    Currency.convertAll(shopCurrency, defaultCurrency);
2543  }
2544  else {
2545    Currency.currentCurrency = defaultCurrency;
2546  }
2547}
2548// If the cookie value does not correspond to any value in the currency dropdown.
2549else if (jQuery('[name=currencies]').size() && jQuery('[name=currencies] option[value=' + cookieCurrency + ']').size() === 0) {
2550  Currency.currentCurrency = shopCurrency;
2551  Currency.cookie.write(shopCurrency);
2552}
2553else if (cookieCurrency === shopCurrency) {
2554  Currency.currentCurrency = shopCurrency;
2555  Currency.convertAll(shopCurrency, cookieCurrency);
2556}
2557else {
2558  Currency.convertAll(shopCurrency, cookieCurrency);
2559}
2560jQuery('[name=currencies]').val(Currency.currentCurrency).change(function() {
2561  var newCurrency = jQuery(this).val();
2562  
2563  
2564    Currency.cookie.write(newCurrency)
2565    if ('product' == 'cart') {
2566      const params = new URLSearchParams(window.location.search);
2567      params.set('delete_cache', 1);
2568      window.location.search = params;
2569    } else {
2570      window.location.reload();
2571    }
2572  
2573});
2574var original_selectCallback = window.selectCallback;
2575var selectCallback = function(variant, selector) {
2576  var currencies = null;
2577  original_selectCallback(variant, selector);
2578  if(typeof jQuery('[name=currencies]').val() == "undefined"){
2579    currencies = shopCurrency;
2580  }
2581  else{
2582    currencies = jQuery('[name=currencies]').val();
2583  }
2584  Currency.convertAll(shopCurrency, currencies);
2585  jQuery('.selected-currency').text(Currency.currentCurrency);
2586};
2587$('body').on('ajaxCart.afterCartLoad', function(cart) {
2588  Currency.convertAll(shopCurrency, jQuery('[name=currencies]').val());
2589  jQuery('.selected-currency').text(Currency.currentCurrency);  
2590});
2591jQuery('.selected-currency').text(Currency.currentCurrency);
2592</script>
2592
2593
2594
2595  
2595<script>
2596
2597  /*
2598
2599    ------
2600    Events
2601    ------
2602
2603    pages/viewed
2604
2605    customers/signup
2606
2607    customers/login
2608
2609    products/searched
2610
2611    collections/viewed
2612
2613    products/viewed
2614
2615    products/shared
2616
2617    wishlists/item_added
2618
2619    carts/items_added
2620
2621    carts/viewed
2622
2623    carts/item_removed
2624
2625    checkouts/initiated
2626
2627    checkouts/shipping_info_added
2628
2629    checkouts/payment_info_added
2630
2631    checkouts/completed
2632
2633    orders/placed
2634
2635    orders/purchased
2636
2637    payments/captured
2638
2639    payments/failed
2640
2641  */
2642
2643  window.__latest_cart = window.__latest_cart || null;
2644
2645  const _selector = document.querySelector.bind(document),
2646        _selectorAll = document.querySelectorAll.bind(document)
2647
2648  document.addEventListener('DOMContentLoaded', (event) => {
2649
2650    const default_currency = getCookie("currency")
2651    const customer_id = window.__st.cid
2652    const template    = window.__st.p
2653
2654    onPageView()
2655
2656    //-----------------------//
2657    //        Configs        //
2658    //-----------------------//
2659
2660    window.dataLayer = window.dataLayer || []
2661
2662    Array.prototype.last = Array.prototype.last || function() {
2663      return this[this.length - 1] || null
2664    }
2665
2666    Array.prototype.first = Array.prototype.first || function() {
2667      return this[0] || null
2668    }
2669
2670    //----------------------//
2671    //       Triggers       //
2672    //----------------------//
2673
2674    const XHR = window.XMLHttpRequest
2675
2676    function xhr() {
2677
2678      const xhr = new XHR()
2679
2680      xhr.addEventListener("readystatechange", function() {
2681
2682        if(xhr.readyState != 4) return
2683
2684        try {
2685
2686          const response_url = xhr.responseURL
2687
2688          if (response_url.includes("cart/add")) {
2689
2690            window.__latest_cart = JSON.parse(xhr.response)
2691
2692            onCartItemsAdded() // ok
2693
2694          }
2695
2696          if (response_url.includes("cart/remove_item_quantity")) {
2697
2698            window.__latest_cart = JSON.parse(xhr.response)
2699
2700            onCartItemRemoved() // ok
2701
2702          }
2703
2704          if (response_url.includes("new_cart?retrieve=true")) {
2705
2706            result = JSON.parse(xhr.response)
2707
2708            if (result.cart) {
2709              window.__latest_cart = result.cart
2710            }
2711
2712          }
2713
2714        } catch(e) {
2715
2716          console.error(e)
2717
2718        }
2719
2720      }, false);
2721
2722      return xhr
2723
2724    }
2725
2726    window.XMLHttpRequest = xhr
2727
2728    switch(template) {
2729
2730      case 'cart': onCartView() // ok
2731      break
2732      case 'product': onProductView() // ok
2733      break
2734      case 'collection': onCollectionView() // ok
2735      break
2736      case 'blog': onBlogView()
2737      break
2738      case 'article': onArticleView()
2739      break
2740      case 'payment_completed': onOrderPlace()
2741      break
2742      case 'payment_fail': onPaymentFail()
2743      break
2744
2745    }
2746
2747    // _selector('form[action="/checkout/payments"]').addEventListener("submit", onPaymentInfoAdded(_selector('form[action="/checkout/payments"]')))
2748    if (_selector('form[action="/checkout/detail"]'))                            _selector('form[action="/checkout/detail"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/detail"]'))})  // ok
2749    if (_selector('form[action="/checkout/shipping"]'))                          _selector('form[action="/checkout/shipping"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/shipping"]'))})  // ok
2750    if (_selector('form[action="/account/register"]'))                           _selector('form[action="/account/register"]').addEventListener("submit", onSignUp)  // ok
2751    if (_selector('form[action="/account/login"]'))                              _selector('form[action="/account/login"]').addEventListener("submit", onLogin)  // ok
2752    if (_selector('form[action="/search"]'))                                     _selector('form[action="/search"]').addEventListener("submit", onProductSearch()) // ok
2753    if (_selector('#line-login-btn'))                                            _selector('#line-login-btn').addEventListener('click', onLineLogin) // ok
2754    if (_selector('#PlaceOrder'))                                                _selector('#PlaceOrder').addEventListener("click", ()=>{onCheckoutComplete(_selector('form[action="/checkout/payments"]'))});  // ok
2755    if (_selector('#add_wishlist'))                                              _selector('#add_wishlist').addEventListener("click", onWishlistItemAdded) // ok
2756    if (_selectorAll('a[href="/account/logout"]'))                               _selectorAll('a[href="/account/logout"]').forEach(logoutButton => logoutButton.addEventListener("click", onLogout)) // ok
2757    if (_selector('.CartDrawerTrigger.cart-page-link'))                          _selector('.CartDrawerTrigger.cart-page-link').addEventListener("click", onCartView) // ok
2758    if (_selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link'))    _selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link').addEventListener("click", onCartView) // ok
2759    if (_selectorAll('a[class^="share-"]'))                                      _selectorAll('a[class^="share-"]').forEach(shareButton => shareButton.addEventListener("click", ()=>{onProductShare(shareButton)}) ) // ok
2760    if (_selectorAll('[name$="checkout"]'))                                      _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
2761
2762    // For append elements
2763    const bodyMutationObserver = new MutationObserver(() => {
2764      if (_selector('#form__spc #PlaceOrder'))             _selector('#form__spc #PlaceOrder').addEventListener("click", onSinglePageCheckout) // ok
2765      if (_selectorAll('[name$="checkout"]'))              _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
2766    });
2767    bodyMutationObserver.observe(_selector("body"), {subtree: true, childList: true});
2768
2769    //------------------------------//
2770    //        Event handlers        //
2771    //------------------------------//
2772
2773    function onPageView() {
2774
2775      EasyStore.Event.dispatch('pages/viewed', {
2776        page: {
2777          type: template,
2778          title: document.title,
2779          description: _selector('meta[name=description]') ? _selector('meta[name=description]').getAttribute('content') : null,
2780          url: location.href,
2781        }
2782      })
2783
2784    }
2785
2786    function onSignUp() {
2787
2788      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
2789      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
2790
2791      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
2792
2793      let data = {}
2794
2795      if (email_regex.test(email_or_phone)) {
2796        data.method = 'email'
2797        data.email = email_or_phone
2798      }
2799
2800      if (phone_regex.test(email_or_phone)) {
2801        data.method = "phone"
2802        data.phone = email_or_phone
2803      }
2804
2805      if (!data.method) return
2806
2807      EasyStore.Event.dispatch('customers/signup', data)
2808
2809    }
2810
2811    function onLogin() {
2812
2813      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
2814      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
2815
2816      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
2817
2818      let data = {}
2819
2820      if (email_regex.test(email_or_phone)) {
2821        data.method = 'email'
2822        data.email = email_or_phone
2823      }
2824
2825      if (phone_regex.test(email_or_phone)) {
2826        data.method = "phone"
2827        data.phone = email_or_phone
2828      }
2829
2830      if (!data.method) return
2831
2832      EasyStore.Event.dispatch('customers/login', data)
2833
2834    }
2835
2836    function onLineLogin() {
2837
2838      EasyStore.Event.dispatch('customers/login', { method: 'line' })
2839
2840    }
2841
2842    function onLogout() {
2843
2844      EasyStore.Event.dispatch('customers/logout', { customer_id })
2845
2846    }
2847
2848    function onBlogView() {
2849
2850      const blog = ""
2851
2852      EasyStore.Event.dispatch('blogs/viewed', { blog })
2853
2854    }
2855
2856    function onArticleView() {
2857
2858      const article = ""
2859
2860      EasyStore.Event.dispatch('articles/viewed', { article })
2861
2862    }
2863
2864    function onProductSearch() {
2865
2866      const query = _selector('input[name=q]').value
2867
2868      if (!query) return
2869
2870      EasyStore.Event.dispatch('products/searched', { query })
2871
2872    }
2873
2874    function onCollectionView() {
2875
2876      const collection = {"id":564938,"store_id":332265,"parent_id":0,"reference_id":null,"name":"Feature on homepage","title":"Feature on homepage","handle":"feature-on-homepage","image_url":null,"origin_image_url":null,"description":null,"body_html":null,"origin_body_html":null,"position":2,"is_locked":true,"is_published":true,"published_at":"2020-03-24T15:10:21.000+08:00","updated_at":"2023-10-06T23:06:42.000+08:00","created_at":"2020-03-24T15:10:21.000+08:00","url":"\/collections\/feature-on-homepage"}
2877
2878      EasyStore.Event.dispatch('collections/viewed', { collection })
2879
2880    }
2881
2882    function onProductView() {
2883
2884      const product = {"id":5613595,"handle":"homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","name":"Homemade Special Shrimp Chili Sauce \/ \u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","title":"Homemade Special Shrimp Chili Sauce \/ \u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","url":"\/products\/homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","share_url":"https:\/\/www.hkhotpot.com\/products\/homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","price":38,"price_min":"38.0","price_max":"38.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":25195665,"variants":[{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null}],"selected_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"first_available_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"selected_or_first_available_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"secondary_image":{"alt":"","img_url":"","src":"","type":""},"images":[{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"}],"media":[{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"}],"featured_media":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"metafields":[],"expires":null,"published_at":"2022-02-21T15:28:00.000+08:00","created_at":"2021-06-24T11:16:32.000+08:00","is_wishlisted":null,"content":"<link href=\u0027\/assets\/css\/froala_style.min.css\u0027 rel=\u0027stylesheet\u0027 type=\u0027text\/css\u0027\/><div class=\u0027fr-view\u0027><p>Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping &amp; Chicken Rice Sauce.<\/p><p>Size: 330g<\/p><\/div>","description":"<link href=\u0027\/assets\/css\/froala_style.min.css\u0027 rel=\u0027stylesheet\u0027 type=\u0027text\/css\u0027\/><div class=\u0027fr-view\u0027><p>Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping &amp; Chicken Rice Sauce.<\/p><p>Size: 330g<\/p><\/div>","meta_description":"Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping & Chicken Rice Sauce. Size: 330g","brands":[],"tags":[],"vendor":null,"collections":[{"handle":"feature-on-homepage","title":"Feature on homepage"},{"handle":"homemade-sauces","title":"Homemade Sauces"}],"highlight":{"data":null,"state":null,"is_auto_generation_required":false},"common_questions":{"data":null,"state":null,"is_auto_generation_required":false},"view_history":{"product_id":5613595,"viewed_at":"2026-10-07T19:27:46.995+08:00"},"cache_source":"live_api","promotions":[]}
2885
2886      EasyStore.Event.dispatch("products/viewed", { product })
2887
2888    }
2889
2890    function onProductShare(el) {
2891
2892      const product = {"id":5613595,"handle":"homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","name":"Homemade Special Shrimp Chili Sauce \/ \u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","title":"Homemade Special Shrimp Chili Sauce \/ \u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","url":"\/products\/homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","share_url":"https:\/\/www.hkhotpot.com\/products\/homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","price":38,"price_min":"38.0","price_max":"38.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":25195665,"variants":[{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null}],"selected_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"sp
2892icychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"first_available_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"selected_or_first_available_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"secondary_image":{"alt":"","img_url":"","src":"","type":""},"images":[{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"}],"media":[{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"}],"featured_media":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"metafields":[],"expires":null,"published_at":"2022-02-21T15:28:00.000+08:00","created_at":"2021-06-24T11:16:32.000+08:00","is_wishlisted":null,"content":"<link href=\u0027\/assets\/css\/froala_style.min.css\u0027 rel=\u0027stylesheet\u0027 type=\u0027text\/css\u0027\/><div class=\u0027fr-view\u0027><p>Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping &amp; Chicken Rice Sauce.<\/p><p>Size: 330g<\/p><\/div>","description":"<link href=\u0027\/assets\/css\/froala_style.min.css\u0027 rel=\u0027stylesheet\u0027 type=\u0027text\/css\u0027\/><div class=\u0027fr-view\u0027><p>Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping &amp; Chicken Rice Sauce.<\/p><p>Size: 330g<\/p><\/div>","meta_description":"Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping & Chicken Rice Sauce. Size: 330g","brands":[],"tags":[],"vendor":null,"collections":[{"handle":"feature-on-homepage","title":"Feature on homepage"},{"handle":"homemade-sauces","title":"Homemade Sauces"}],"highlight":{"data":null,"state":null,"is_auto_generation_required":false},"common_questions":{"data":null,"state":null,"is_auto_generation_required":false},"view_history":{"product_id":5613595,"viewed_at":"2026-10-07T19:27:46.995+08:00"},"cache_source":"live_api","promotions":[]}
2893
2894      const channel = el.getAttribute("class").split("-").last()
2895
2896      EasyStore.Event.dispatch('products/shared', { product, channel })
2897
2898    }
2899
2900    function onWishlistItemAdded() {
2901
2902      let product  = {"id":5613595,"handle":"homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","name":"Homemade Special Shrimp Chili Sauce \/ \u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","title":"Homemade Special Shrimp Chili Sauce \/ \u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","url":"\/products\/homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","share_url":"https:\/\/www.hkhotpot.com\/products\/homemade-special-shrimp-chili-sauce-\u81ea\u88fd\u751f\u8766\u8fa3\u6912\u91ac","price":38,"price_min":"38.0","price_max":"38.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":25195665,"variants":[{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null}],"selected_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"first_available_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"selected_or_first_available_variant":{"id":25195665,"title":"Default Title","sku":"","taxable":true,"barcode":"","available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"price":3800,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null,"points":null},"img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","featured_image":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"secondary_image":{"alt":"","img_url":"","src":"","type":""},"images":[{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"}],"media":[{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"}],"featured_media":{"id":31805882,"alt":"spicychilisauce.jpg","img_url":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","src":"https:\/\/cdn.store-assets.com\/s\/332265\/i\/31805882.jpg","height":659,"width":456,"position":1,"type":"Images"},"metafields":[],"expires":null,"published_at":"2022-02-21T15:28:00.000+08:00","created_at":"2021-06-24T11:16:32.000+08:00","is_wishlisted":null,"content":"<link href=\u0027\/assets\/css\/froala_style.min.css\u0027 rel=\u0027stylesheet\u0027 type=\u0027text\/css\u0027\/><div class=\u0027fr-view\u0027><p>Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping &amp; Chicken Rice Sauce.<\/p><p>Size: 330g<\/p><\/div>","description":"<link href=\u0027\/assets\/css\/froala_style.min.css\u0027 rel=\u0027stylesheet\u0027 type=\u0027text\/css\u0027\/><div class=\u0027fr-view\u0027><p>Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping &amp; Chicken Rice Sauce.<\/p><p>Size: 330g<\/p><\/div>","meta_description":"Our Authentic Special Chili Sauce that Spice Up your Palate Simply can use for Hotpot Dipping & Chicken Rice Sauce. Size: 330g","brands":[],"tags":[],"vendor":null,"collections":[{"handle":"feature-on-homepage","title":"Feature on homepage"},{"handle":"homemade-sauces","title":"Homemade Sauces"}],"highlight":{"data":null,"state":null,"is_auto_generation_required":false},"common_questions":{"data":null,"state":null,"is_auto_generation_required":false},"view_history":{"product_id":5613595,"viewed_at":"2026-10-07T19:27:46.995+08:00"},"cache_source":"live_api","promotions":[]}
2903      const quantity = _selector("#Quantity").value
2904
2905      EasyStore.Event.dispatch('wishlists/item_added', { product })
2906
2907    }
2908
2909    async function onCartItemsAdded() {
2910
2911      const cart = await getCart()
2912
2913      if(cart && cart.items != undefined && cart.items.length > 0) {
2914
2915        EasyStore.Event.dispatch('carts/item_added', { cart })
2916
2917      }
2918
2919    }
2920
2921    async function onCartView() {
2922
2923      const cart = await getCart()
2924
2925      EasyStore.Event.dispatch('carts/viewed', { cart })
2926
2927    }
2928
2929    async function onCartItemRemoved() {
2930
2931      const cart = await getCart()
2932
2933      cart.items = []
2934
2935      if(cart) {
2936
2937        EasyStore.Event.dispatch('carts/item_removed', { cart })
2938
2939      }
2940
2941    }
2942
2943    async function onCheckoutInitiate() {
2944
2945      const cart = await getCart()
2946
2947      EasyStore.Event.dispatch('checkouts/initiated', { cart })
2948
2949    }
2950
2951    async function onShippingInfoAdded(form) {
2952      let checkout = getCheckout()
2953
2954      let form_data = {}
2955      new FormData(form).forEach((value, key) => form_data[key] = value)
2956
2957      let shipping_tier = null
2958
2959      if (form_data.type && form_data.type.startsWith("r_pickup")) {
2960        shipping_tier = `Pickup - ${form_data.pick_location}`
2961      }
2962
2963      if (form_data.s_id) {
2964        shipping_tier = _selector(`input[id='`+form_data.s_id+`']`).getAttribute("data-shipping-name")
2965      }
2966
2967      if (!shipping_tier) return
2968
2969      EasyStore.Event.dispatch('checkouts/shipping_info_added', { checkout, shipping_tier })
2970
2971    }
2972
2973    async function onPaymentInfoAdded(form) {
2974
2975      let checkout = getCheckout()
2976
2977      let payment_type = new FormData(form).get('payment_method')
2978
2979      EasyStore.Event.dispatch("checkouts/payment_info_added", { checkout, payment_type })
2980
2981    }
2982
2983    async function onOrderPlace() {
2984
2985      let cart_token  = getCookie("cart_js")
2986      let previous_cart_token = getCookie("previous_cart_ga4_js")
2987
2988      if (previous_cart_token && previous_cart_token == cart_token) {
2989        // Prevent duplicate purchase tracking
2990        return
2991      }
2992
2993      let order = getOrder()
2994
2995      EasyStore.Event.dispatch('orders/placed', { order })
2996
2997      if(order.is_manual_payment) {
2998
2999        EasyStore.Event.dispatch('orders/purchased', { order })
3000
3001      }
3002
3003      const last_transaction = order.transactions.last()
3004
3005      if (last_transaction.status) {
3006
3007        EasyStore.Event.dispatch('orders/purchased', { order })
3008        EasyStore.Event.dispatch('payments/captured', { order })
3009
3010      }
3011
3012    }
3013
3014    async function onPaymentFail() {
3015
3016      const order = getOrder()
3017
3018      EasyStore.Event.dispatch('payments/failed', { order })
3019
3020    }
3021
3022    async function onCheckoutComplete(form) {
3023
3024      onPaymentInfoAdded(form)
3025
3026      const checkout = getCheckout()
3027
3028      EasyStore.Event.dispatch('checkouts/completed', { checkout })
3029
3030    }
3031
3032    async function onSinglePageCheckout() {
3033
3034      // let checkout = $("[data-app-checkout]").data("app-checkout")
3035
3036      let checkout = getCheckout()
3037
3038      // const payment_type = _selector("#app_spc_payment_method").find(`[class*="label-content"]`).first().find("b").first().text()
3039      const payment_type = _selector("#app_spc_payment_method").getElementsByClassName('label-content')[0].getElementsByTagName('b')[0].innerHTML
3040
3041      const shipping_method = _selector("#delivery_method").value
3042
3043      let shipping_tier = null
3044      let app_spc_customer_info_label = _selector("#app_spc_customer_info").getElementsByClassName('label-content')
3045      if (shipping_method == "shipping") {
3046        shipping_tier = app_spc_customer_info_label[app_spc_customer_info_label.length - 1].getElementsByTagName('b')[0].innerHTML
3047      }
3048
3049      if (shipping_method == "pickup") {
3050        shipping_tier = app_spc_customer_info_label[0].innerHTML
3051      }
3052
3053      if (shipping_tier) {
3054
3055        EasyStore.Event.dispatch('checkouts/shipping_info_added', {
3056          checkout,
3057          shipping_tier,
3058        })
3059
3060      }
3061
3062      if (payment_type) {
3063
3064        EasyStore.Event.dispatch('checkouts/payment_info_added', {
3065          checkout,
3066          payment_type,
3067        })
3068
3069      }
3070
3071      EasyStore.Event.dispatch('checkouts/completed', { checkout })
3072
3073    }
3074
3075  })
3076
3077
3078  //-----------------------//
3079  //       Functions       //
3080  //-----------------------//
3081
3082  function getCookie(name) {
3083
3084    name += "="
3085
3086    decodedCookie = decodeURIComponent(document.cookie)
3087
3088    ca = decodedCookie.split(";")
3089
3090    for(i = 0; i < ca.length; i++) {
3091      c = ca[i]
3092      while (c.charAt(0) == " ") {
3093        c = c.substring(1)
3094      }
3095      if (c.indexOf(name) == 0) {
3096        return c.substring(name.length, c.length)
3097      }
3098    }
3099
3100    return ""
3101
3102  }
3103
3104  const parsePrice = price => {
3105    if(typeof price === 'string') {
3106      return parseFloat(price.split(',').join(''))
3107    }
3108
3109    return price
3110  }
3111
3112  const requestCart = async (method, data) => {
3113
3114  let response = await fetch('/cart.json', {method: 'GET',headers: {'Content-Type': 'application/json'}})
3115    result = await response.json()
3116
3117    return result.cart
3118
3119  }
3120  const getCart = async (latest = false) => {
3121
3122    let cart = window.__latest_cart
3123
3124    const cart_invalid = !cart || !cart.items || (cart.total_price > 0 && !cart.items.length)
3125
3126    if(latest || cart_invalid) {
3127      cart = await requestCart()
3128    }
3129
3130    cart.items = cart.items || []
3131
3132    return mapCart(cart)
3133
3134  }
3135
3136  const getCheckout = async () => {
3137    mapCheckout(window.__latest_cart || await requestCart())
3138  }
3139
3140  const getOrder = async () => {
3141    mapOrder(window.__latest_cart || await requestCart())
3142  }
3143
3144  //-----------------------//
3145  //        Mappers        //
3146  //-----------------------//
3147
3148  const fallbackAttribute = (object, attribute) => {
3149
3150    if(!Array.isArray(attribute)) {
3151      attribute = [attribute]
3152    }
3153
3154    let final_value = null
3155
3156    do {
3157
3158      final_value = object[attribute.shift()]
3159
3160    } while(!final_value && attribute.length)
3161
3162    return final_value
3163
3164  }
3165
3166  const map = (object, mapper) => {
3167
3168    const newObject = {}
3169
3170    for(const key in mapper) {
3171
3172      // Handle different keys between new and old format
3173      newObject[key] = fallbackAttribute(object, mapper[key])
3174
3175      // Cast price to float
3176      if(newObject[key] && ['price', 'amount', 'discount', 'discounts'].some(x => key.endsWith(x))) {
3177        newObject[key] = parsePrice(newObject[key])
3178      }
3179
3180      if(newObject[key] === undefined) {
3181        delete newObject[key]
3182      }
3183
3184    }
3185
3186    return newObject
3187
3188  }
3189
3190  const mapCart = cart => {
3191
3192    const oldCart = cart
3193
3194    const mapper = {
3195      id: 'id',
3196      currency: 'currency',
3197      item_count: 'item_count',
3198      items: 'items',
3199      total_price: 'total_price',
3200      latest_items: 'latest_items'
3201    }
3202
3203    cart = map(cart, mapper)
3204
3205    const discounts = (oldCart.storewide_discounts || []).concat((oldCart.voucher_discounts || []))
3206
3207    cart.discount_applications = discounts.map(discount => ({
3208      title: discount.voucher_code || null,
3209      value: parsePrice(discount.amount),
3210    }))
3211
3212    cart.original_total_price = cart.items.length
3213    ? cart.items
3214      .map(item => item.original_price)
3215      .reduce((sum, price) => sum + price)
3216    : 0
3217
3218    cart.total_discount = cart.discount_applications.length
3219    ? cart.discount_applications
3220      .map(discount => parsePrice(discount.value))
3221      .reduce((sum, value) => sum + value)
3222    : 0
3223
3224    cart.items = cart.items.map(item => mapLineItem(item))
3225
3226    return cart
3227
3228  }
3229
3230  const mapCheckout = checkout => {
3231
3232    const mapper = {
3233      note: 'note',
3234      attributes: 'note_attributes',
3235      billing_address: 'billing_address',
3236      currency: 'currency',
3237      customer_id: 'customer_id',
3238      discounts_amount: 'total_discount',
3239      id: 'id',
3240      line_items: 'order_item',
3241      order_number: 'order_number',
3242      shipping_address: 'shipping_address',
3243      shipping_price: 'shipping_tax',
3244      shipping_method: 'shipping_method_name',
3245      tax_price: 'total_tax',
3246    }
3247
3248    checkout = map(checkout, mapper)
3249
3250    checkout.requires_shipping = checkout.line_items.some(item => item.shipping_required)
3251
3252    checkout.line_items = checkout.line_items.map(item => mapLineItem(item))
3253
3254    return checkout
3255
3256  }
3257
3258  const mapOrder = order => {
3259
3260    const mapper = {
3261      attributes: 'note_attributes',
3262      billing_address: 'billing_address',
3263      cancelled: 'is_cancelled',
3264      cancelled_at: 'cancelled_at',
3265      created_at: 'created_at',
3266      customer_id: 'customer_id',
3267      // discount_applications: 'discount_applications',
3268      email: 'email',
3269      financial_status: 'financial_status',
3270      fulfillment_status: 'fulfillment_status',
3271      line_items: 'order_item',
3272      note: 'note',
3273      order_number: 'order_number',
3274      phone: 'phone',
3275      shipping_address: 'shipping_address',
3276      shipping_methods: 'shipping_methods',
3277      shipping_price: 'total_shipping',
3278      subtotal_price: 'subtotal_price',
3279      // tax_lines: 'tax_lines',
3280      tax_price: 'total_tax',
3281      total_discounts: 'total_discount',
3282      total_net_amount: 'total_amount_include_transaction',
3283      total_price: 'total_price',
3284      transactions: 'transaction_records',
3285      is_manual_payment: 'is_manual_payment',
3286    }
3287
3288    order.email = order.billing_address.email
3289    order.phone = order.billing_address.phone
3290    order.shipping_method = order.shipping_method_name
3291
3292    order = map(order, mapper)
3293
3294    order.line_items = order.line_items.map(item => mapLineItem(item))
3295    order.transactions = order.transactions.map(transaction => mapTransaction(transaction))
3296
3297    return order
3298
3299  }
3300
3301  const mapLineItem = line_item => {
3302
3303    const old_line_item = line_item
3304
3305    const mapper = {
3306      final_price: 'price',
3307      image: 'img_url',
3308      message: 'message',
3309      original_line_price: 'original_line_price',
3310      original_price: 'original_price',
3311      properties: 'properties',
3312      quantity: 'quantity',
3313      requires_shipping: 'shipping_required',
3314      sku: 'sku',
3315      taxable: 'taxable',
3316      title: 'product_name',
3317      product_name: 'product_name',
3318      url: 'url',
3319      product_id: 'product_id',
3320      variant_id: 'variant_id',
3321      id: ['id', 'i_id'],
3322    }
3323
3324    line_item = map(line_item, mapper)
3325
3326    line_item.product_id = line_item.product_id || (old_line_item.product && old_line_item.product.id) || null
3327    line_item.variant_id = line_item.variant_id || (old_line_item.variant && old_line_item.variant.id) || null
3328    line_item.image      = line_item.image || (old_line_item.image && old_line_item.image.url) || null
3329
3330    return line_item
3331
3332  }
3333
3334  const mapTransaction = transaction => {
3335
3336    const mapper = {
3337      amount: 'amount',
3338      created_at: 'created_at',
3339      gateway: 'gateway_type',
3340      id: 'id',
3341      status: 'status',
3342    }
3343
3344    transaction = map(transaction, mapper)
3345
3346    return transaction
3347
3348  }
3349
3350
3351</script>
3351
3352
3353</div>
3354
3355  
3356    
3357<style>
3358  #CartTemplate{
3359    min-height: 80vh;
3360  }
3361  .cart-drawer .cart__row .small--one-whole,
3362  .cart-drawer .cart-sticky-button-wrapper{
3363    width: 100%;
3364  }
3365  .cart-drawer .promotion__code-input .input-group{
3366    margin-top: 20px;
3367    max-width: 100%;
3368  }
3369  .cart-drawer-wrapper{
3370    display: flex;
3371    flex-wrap: wrap;
3372    flex-direction: row;
3373  }
3374  .cart-drawer-wrapper > div{
3375    width: 100%;
3376  }
3377  vouchers-modal .vouchers-modal.active ,
3378  vouchers-modal #vouchers-modal-backdrop.active{
3379    z-index: 2147483647;
3380  }
3381</style>
3382
3383<div id="CartDrawer" class="cart-drawer" data-fetch="0">
3384  
3385
3386  <div class="cart-drawer-wrapper">
3387    <div id="cart-promotion-top"></div>
3388
3389
3390    <div id="CartTemplate">
3391      
3392
3393
3394  
3395
3396  <div id="noCartItem" class="cart-drawer-content">
3397    <div class="cart-drawer-content-wrapper text-center">
3398      <div class="section-header">
3399        <span></span>
3400        <span class="CartDrawerTrigger icon icon-x"></span>
3401      </div>
3402      <div class="section-header__title h2">Your cart is currently empty.</div>
3403      <a class="btn btn--secondary" href="/collections/all">Continue shopping</a>
3404    </div>
3405  </div>
3406
3407
3408
3409    </div>
3410
3411    <link href="/assets/css/promotion.css?v2.94" rel="stylesheet" type="text/css" media="screen" />
3412<div id="cart-promotion-section"></div>
3413
3414<script>var shop_money_format = "<span class=money data-ori-price='{{amount}}'>RM {{amount}} </span>";</script>
vendor: 1 bytes, line 3414
3414
3415<script src="/assets/js/promotion/promotion.js?v1.11" type="text/javascript"></script>
3415
3416
3417<script>
3418
3419    window.EasyStore = window.EasyStore || {};
3420    window.EasyStore.Promotion = window.EasyStore.Promotion || {};
3421
3422    var get_cart_promo_initial = false,
3423        current_template = 'product';
3424
3425    window.EasyStore.Promotion.updateCartPromotion = function (){
3426        get_cart_promo_initial = true
3427        $.ajax({
3428        type: "GET",
3429        dataType: 'json',
3430        url: "/new_cart/promotion",
3431        success: function(response){
3432            $("#cart-promotion-section").html(response["cart/content_bottom"].trim());
3433            $("#cart-promotion-top").html(response["cart/content_top"].trim());
3434
3435            promoVariantDetailInitial()
3436        },
3437        error: function(xhr){
3438        }
3439        });
3440    }
3441
3442
3443    if(current_template == 'cart') {
3444        document.addEventListener("DOMContentLoaded", function() {
3445            window.EasyStore.Promotion.updateCartPromotion()
3446        });
3447    }
3448
3449</script>
vendor: 1 bytes, line 3449
3449
3450<script>
3451  document.addEventListener('DOMContentLoaded', function () {
3452    window._getVoucherErrorTranslation = Object.assign(window._getVoucherErrorTranslation || {}, {
3453      "condition_not_matched":    "Voucher condition not matched",
3454      "promotion_unavailable":    "This promotion is currently unavailable",
3455      "available_on":             "Available on channels",
3456      "available_on_only":        "Available on channels only",
3457      "available_with_locations": "Available on channels (locations only)",
3458      "pos_at_locations":         "Retail Store at locations only",
3459      "channel_website":          "Website",
3460      "channel_mobile":           "Mobile Apps",
3461      "channel_pos":              "Retail Store"
3462    });
3463  });
3464</script>
3464
3465
3466  </div>
3467  
3468
3469  
3470</div>
3471
3472<div id="toast"><div id="toastContent"></div></div>
3473<style>
3474  .cart-drawer .cart-drawer-content .cart-sticky-button-wrapper a.btn.CartDrawerTrigger{margin-bottom: 10px !important;}
3475  #toastContent a{color: #fff;text-decoration: underline;margin-top: 10px;display: block;}
3476  #toastContent .svg-icon{margin-right: 8px;margin-top: -1px;}
3477</style>
3478
3479<script type="text/javascript">
3480  $('body').on("submit", "#CartForm", function() {
3481    $(this).find('[type=submit]').addClass('btn--loading');
3482  });
3483  
3484  $("input[name=current_currency]").val($( "select.currency-picker" ).val());
3485  $( "select.currency-picker" ).change(function(){
3486    $("select.currency-picker").val($(this).val());
3487    url=window.location.href;
3488    newParam="currency=" + $( "select.currency-picker" ).val();
3489    if(url.indexOf("currency=")===-1){
3490      separator = (url.indexOf("?")===-1)?"?":"&";
3491      newUrl= url + separator + newParam;
3492    }else{
3493      oldParam= new URL(url);
3494      oldParam = oldParam.searchParams.get("currency");
3495      newParam= $(this).val();
3496      newUrl=url.replace(oldParam,newParam);
3497    }
3498    $("input[name=current_currency]").val($( "select.currency-picker" ).val());
3499    // window.location.href =newUrl;
3500    $('#CartDrawer').attr('data-fetch', 0);
3501  });
3502
3503  $("body").on("click", ".cart__remove", function() {
3504    $('#CartTemplate').addClass('is-loading');
3505    $.ajax({
3506      type: 'POST',
3507      url: '/cart/remove_item_quantity',
3508      data: {
3509        variant_id: $(this).data( "variant-id"),
3510        item_id: $(this).data( "item-id"),
3511        quantity: $(this).data( "quantity"),
3512        i_id: $(this).data("i_id"),
3513      },
3514      dataType: 'json',
3515      success: function(response){
3516
3517        theme.cartDrawer(response);
3518        $('#CartTemplate').removeClass('is-loading');
3519
3520        if (window.checkProductProperties !== undefined){
3521          window.checkProductProperties();
3522        }      
3523      },
3524      error: function(xhr){
3525        console.log('error',xhr);
3526        $('#CartTemplate').removeClass('is-loading');
3527      }
3528    });
3529
3530  });
3531
3532
3533  $('body').on("click", "#applycode",function() {
3534    
3535    if($("input[name='voucher_code']").val() != '') {
3536
3537      $('#CartTemplate').addClass('is-loading');
3538
3539      $.ajax({
3540        type: 'POST',
3541        url: '/new_cart/voucher',
3542        data: {
3543          voucher_code: $("input[name='voucher_code']").val(),
3544          category: 'create'
3545        },
3546        dataType: 'json',
3547        success: function(response){
3548
3549          // console.log(response);
3550
3551          if(response.error != undefined){
3552            
3553            if(response.error.message != undefined) popToast(response.error.message); 
3554          
3555            $("input[name='voucher_code']").val('')
3556          
3557          } 
3558          
3559          if(response.cart_content != undefined) theme.cartDrawer(response); 
3560
3561          
3562          $('#CartTemplate').removeClass('is-loading');
3563          
3564        },
3565        error: function(xhr){
3566          console.log('error',xhr);
3567          $('#CartTemplate').removeClass('is-loading');
3568        }
3569      });
3570
3571    }
3572
3573  });
3574
3575
3576  $("body").on("click", ".remove_voucher_btn", function() {
3577        $('#CartTemplate').addClass('is-loading');
3578        $.ajax({
3579          type: 'DELETE',
3580          url: '/new_cart/voucher',
3581          data: {
3582            category: 'remove',
3583            order_discount_id: $(this).data( "discount-id")
3584          },
3585          dataType: 'json',
3586          success: function(data){
3587            // console.log(data);
3588            theme.cartDrawer(data);
3589            $('#CartTemplate').removeClass('is-loading');
3590          },
3591          error: function(xhr){
3592            console.log('error',xhr);
3593            $('#CartTemplate').removeClass('is-loading');
3594          }
3595        });
3596
3597    });
3598  
3599
3600  theme.cartDrawer = function(data){
3601    
3602      $('#CartDrawer').attr('data-fetch', 1);
3603      $('#CartTemplate').addClass('is-loading');
3604
3605      
3606      if(typeof data.cart_content  == 'string'){
3607        $('#CartTemplate').html(data.cart_content);
3608      }
3609
3610      let cart_item_count = data.item_count || data.cart.item_count;
3611
3612      if(cart_item_count > 0){
3613        $('.cart-count').removeClass('hidden-count');
3614      }else{
3615        $('.cart-count').addClass('hidden-count');
3616      }
3617
3618      $('.cart-count').text(cart_item_count);
3619      $('#CartTemplate').removeClass('is-loading');
3620      $(".cart-drawer-content").animate({ scrollTop: 0 });
3621
3622      if(window.EasyStore != undefined && window.EasyStore.Promotion != undefined && window.EasyStore.Promotion.updateCartPromotion != undefined) window.EasyStore.Promotion.updateCartPromotion()
3623
3624  }
3625
3626  theme.fetchCartDrawer = function(data){
3627      $('#CartTemplate').addClass('is-loading');
3628      $.ajax({
3629        url: '/new_cart?retrieve=true',
3630        type: 'GET',
3631        success: function(data, status) {
3632          // console.log(data);
3633          theme.cartDrawer(data);
3634
3635          $('#CartTemplate').removeClass('is-loading');
3636
3637          if (window.checkProductProperties !== undefined){
3638            window.checkProductProperties();
3639          }
3640        },
3641        error: function(XMLHttpRequest, textStatus) {
3642          console.log('error',XMLHttpRequest,textStatus);
3643          $('#CartTemplate').removeClass('is-loading');
3644        }
3645      });
3646  }
3647
3648  theme.updateCartDrawer = function(data){
3649    $('#CartTemplate').addClass('is-loading');
3650
3651    $.ajax({
3652      url: '/new_cart/update',
3653      type: 'PUT',
3654      dataType: 'json',
3655      data: $('#CartDrawer form').serialize(),
3656      success: function(data, status) {
3657        theme.cartDrawer(data);
3658
3659        if (window.checkProductProperties !== undefined){
3660          window.checkProductProperties();
3661        }
3662      },
3663      error: function(XMLHttpRequest, textStatus) {
3664        console.log('error',XMLHttpRequest,textStatus);
3665      }
3666    });
3667  }
3668
3669  function debounce(func, wait, immediate) {
3670    var timeout;
3671    return function() {
3672        var context = this, args = arguments;
3673        var later = function() {
3674            timeout = null;
3675            if (!immediate) func.apply(context, args);
3676        };
3677        var callNow = immediate && !timeout;
3678        clearTimeout(timeout);
3679        timeout = setTimeout(later, wait);
3680        if (callNow) func.apply(context, args);
3681    };
3682  };
3683
3684  $('body').on("change", 'input.cart__quantity-selector', function (){
3685    theme.updateCartDrawer();
3686  });
3687
3688
3689  $('#updateCartDrawer').click(function() {
3690    theme.updateCartDrawer();
3691  });
3692
3693  $('body').on("click", ".btn-qty-adjust", function() {
3694
3695    var $button = $(this);
3696    var oldValue = $button.parent().find("input.cart__quantity-selector").val();
3697
3698    if ($button.attr('data-adjust') == 1) {
3699      var newVal = parseFloat(oldValue) + 1;
3700    } else {
3701    // Don't allow decrementing below zero
3702      if (oldValue > 0) {
3703        var newVal = parseFloat(oldValue) - 1;
3704      } else {
3705        newVal = 0;
3706      }
3707    }
3708
3709    $button.parent().find("input").val(newVal);
3710  });
3711    
3712  $('body').on("click", ".btn-qty-adjust", debounce(function() {
3713    theme.updateCartDrawer();
3714  },350));
3715
3716  $('button.checkout').click(function() {
3717    $(this).addClass('btn--loading');
3718  });
3719
3720  var add_cart_success_html = '<svg class="svg-icon" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve"> <g> <g> <path d="M383.841,171.838c-7.881-8.31-21.02-8.676-29.343-0.775L221.987,296.732l-63.204-64.893 c-8.005-8.213-21.13-8.393-29.35-0.387c-8.213,7.998-8.386,21.137-0.388,29.35l77.492,79.561 c4.061,4.172,9.458,6.275,14.869,6.275c5.134,0,10.268-1.896,14.288-5.694l147.373-139.762 C391.383,193.294,391.735,180.155,383.841,171.838z"/> </g> </g> <g> <g> <path d="M256,0C114.84,0,0,114.84,0,256s114.84,256,256,256s256-114.84,256-256S397.16,0,256,0z M256,470.487 c-118.265,0-214.487-96.214-214.487-214.487c0-118.265,96.221-214.487,214.487-214.487c118.272,0,214.487,96.221,214.487,214.487 C470.487,374.272,374.272,470.487,256,470.487z"/> </g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> <g> </g> </svg>';
3721      add_cart_success_html += 'Added to cart <br><a class="CartDrawerTrigger">View cart</a>';
3722
3723  function popToast(content) {
3724    var x = document.getElementById("toast"),
3725        y = document.getElementById("toastContent");
3726
3727    y.innerHTML = content;
3728    x.className += " show";
3729    
3730    var hideToast = setTimeout(function(){ x.className = x.className.replace(" show", ""); }, 3000);
3731  }
3732
3733</script>
3733
3734
3735<link href="/assets/css/vouchers.css?v1.2" rel="stylesheet" type="text/css" media="screen" />
3736<link href="/assets/account/vouchers/vouchers.css" rel="stylesheet" type="text/css" media="screen" />
3737<link href="/assets/account/vouchers/voucher-widget.css" rel="stylesheet" type="text/css" media="screen" />
3738<script src="/assets/js/promotion/vouchers.js?v1.3" type="text/javascript" ></script>
vendor: 1 bytes, line 3738
3738
3739<script src="/assets/account/vouchers/voucher-widget.js" type="text/javascript" ></script>
3739
3740
3741<vouchers-modal>
3742  <div id="vouchers-modal-backdrop" class="vouchers-modal__close"></div>
3743  <div class="vouchers-modal-wrapper page-width">
3744    <div id="vouchers-modal" class="vouchers-modal focus-inset" aria-modal="true" role="dialog" tabindex="-1">
3745      <div class="vouchers-modal__header">
3746        <div class="vouchers-modal__heading">Vouchers</div>
3747        <button type="button" class="vouchers-modal__close modal__close-button link link--text focus-inset" aria-label="accessibility.close">
3748          <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-close " fill="none" viewBox="0 0 18 17">
3749            <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">
3750            </path>
3751          </svg>
3752        </button>
3753      </div>
3754
3755      <discount-input>
3756        <div class="field">
3757          <input type="text" id="input-discount_code" class="search__input field__input" name="voucher_code" placeholder="Discount code">
3758          <button type="button" name="apply" class="btn btn--secondary button button--secondary">Apply</button>
3759        </div>
3760        <div class="form__message hidden" tabindex="-1" autofocus>
3761          <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-error " viewBox="0 0 13 13">
3762            <circle cx="6.5" cy="6.50049" r="5.5" stroke="white" stroke-width="2"></circle>
3763            <circle cx="6.5" cy="6.5" r="5.5" fill="#EB001B" stroke="#EB001B" stroke-width="0.7"></circle>
3764            <path d="M5.87413 3.52832L5.97439 7.57216H7.02713L7.12739 3.52832H5.87413ZM6.50076 9.66091C6.88091 9.66091 7.18169 9.37267 7.18169 9.00504C7.18169 8.63742 6.88091 8.34917 6.50076 8.34917C6.12061 8.34917 5.81982 8.63742 5.81982 9.00504C5.81982 9.37267 6.12061 9.66091 6.50076 9.66091Z" fill="white"></path>
3765            <path d="M5.87413 3.17832H5.51535L5.52424 3.537L5.6245 7.58083L5.63296 7.92216H5.97439H7.02713H7.36856L7.37702 7.58083L7.47728 3.537L7.48617 3.17832H7.12739H5.87413ZM6.50076 10.0109C7.06121 10.0109 7.5317 9.57872 7.5317 9.00504C7.5317 8.43137 7.06121 7.99918 6.50076 7.99918C5.94031 7.99918 5.46982 8.43137 5.46982 9.00504C5.46982 9.57872 5.94031 10.0109 6.50076 10.0109Z" fill="white" stroke="#EB001B" stroke-width="0.7"></path>
3766          </svg>
3767          <div class="js-error-content"></div>
3768        </div>
3769      </discount-input>
3770      <br>
3771
3772      
3773      
3774        <div class="empty-vouchers_placeholder">No available vouchers</div>
3775      
3776
3777       <!-- For voucher widget -->
3778      
3778<script type="text/javascript">
3779        let settings = {"logo_use_image":"1","logo_img":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/4561475.png?width=350&format=webp","footer_logo_img":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/4561475.png?width=350&format=webp","nav_below_logo":"","logo_alignment":"center","heading_font_family":["'HelveticaNeue','Helvetica Neue',Helvetica,Arial,sans-serif"],"left_aligned_logo":"0","favicon_enable":"1","favicon_img":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/4561475.png","header_message":"","header_search_enable":true,"topbar_sticky":"1","footer_quicklinks_enable":true,"footer_quicklinks_linklist":"footer","footer_social_enable":"1","footer_show_credit_card_logo":"1","footer_show_methods_of_payment":"1","footer_visa":"1","footer_master":"1","footer_american_express":"1","footer_jcb":"0","footer_diners_club":"0","footer_discover":"0","footer_ssl":"1","show_footer_lines":"1","home_section_1":"highlight-section","home_section_2":"featured-product","home_section_3":"","home_section_4":"","home_section_5":"","home_section_6":"","featured_title":"Menu","featured_1_img":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/4561622.jpeg?width=650&format=webp","featured_1_text":"\u706b\u934b\u6e6f\u5e95 \/ Soup Base","featured_1_link":"\/collections\/soup","featured_2_img":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/4562031.jpeg?width=650&format=webp","featured_2_text":"\u9910\u524d\u5c0f\u98df \/  Snacks","featured_2_link":"\/collections\/snacks","featured_3_img":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/4562140.jpeg?width=650&format=webp","featured_3_text":"\u7279\u7d1a\u65b0\u9bae\u8089 \/ Fresh Premium Meat","featured_3_link":"\/collections\/fresh-meat","featured_4_img":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/4562173.jpeg?width=650&format=webp","featured_4_text":"\u65b0\u9bae\u6d77\u9bae \/ Seafood","featured_4_link":"\/collections\/seafood","featured_5_img":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/4562203.jpeg?width=650&format=webp","featured_5_text":"\u624b\u6253\u4e38,\u9903\u5b50 \/ Hand Made Meat Ball & Dumpling","featured_5_link":"\/collections\/hand-made-meat-ball-dumpling","featured_6_img":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/4562230.jpeg?width=650&format=webp","featured_6_text":"\u852c\u83dc,\u83c7\u985e \/ Vegetable, Mushroom","featured_6_link":"\/collections\/vegetable","featured_7_img":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/4565972.jpeg?width=650&format=webp","featured_7_text":"Noodles & Others","featured_7_link":"\/collections\/noodle-others","featured_8_img":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/6849041.jpeg?width=650&format=webp","featured_8_text":"HK Hotpot Market","featured_8_link":"\/collections\/hk-hotpot-special","parallax_img":"https:\/\/cdn.store-assets.com\/s\/278885\/f\/3915149.jpeg?width=1500&format=webp","parallax_mobile_img":"","parallax_title":"Sign Up for 50% OFF","parallax_subtitle":"For new member only","parallax_button_text":"Sign Up Now","parallax_button_link":"\/account\/register","parallax_full_width":"1","slider_home_auto":"1","slider_home_show_dots":"1","slider_home_rate":"5000","slider_home_transition":"slide","slider_full_screen":"0","slide_1":"1","slide_1_jpg":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/5445023.jpeg?width=1500&format=webp","slide_1_mobile_jpg":"","slide_1_link":"\/collections\/all","slide_1_alt":"","slide_1_title":"Welcome HK Hotpot","slide_1_subtitle":"","slide_1_button_text":"","slide_2":"1","slide_2_jpg":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/6246863.jpeg?width=1500&format=webp","slide_2_mobile_jpg":"","slide_2_link":"\/collections\/all","slide_2_alt":"","slide_2_title":"","slide_2_subtitle":"","slide_2_button_text":"","slide_3":"","slide_3_jpg":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/5444930.jpeg?width=1500&format=webp","slide_3_mobile_jpg":"","slide_3_link":"","slide_3_alt":"","slide_3_title":"","slide_3_subtitle":"","slide_3_button_text":"","slide_4":"","slide_4_jpg":"https:\/\/cdn.store-assets.com\/s\/332265\/f\/5444969.jpeg?width=1500&format=webp","slide_4_mobile_jpg":"","slide_4_link":"","slide_4_alt":"","slide_4_title":"","slide_4_subtitle":"","slide_4_button_text":"","slide_5":"","slide_5_jpg":"","slide_5_mobile_jpg":"","slide_5_link":"","slide_5_alt":"","slide_5_title":"","slide_5_subtitle":"","slide_5_button_text":"","slide_6":"","slide_6_jpg":"","slide_6_mobile_jpg":"","slide_6_link":"","slide_6_alt":"","slide_6_title":"","slide_6_subtitle":"","slide_6_button_text":"","testimonial_slide_img_crop":"0","testimonial_slide_
37791_img":"https:\/\/cdn.store-assets.com\/s\/278885\/f\/3915980.jpeg?width=1500&format=webp","testimonial_slide_1_title":"Aleksejs Bergmanis","testimonial_slide_1_content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur non mattis dui, sit amet hendrerit nibh. Duis congue volutpat urna ut accumsan.","testimonial_slide_1_text_link":"Read more","testimonial_slide_1_link":"#","testimonial_slide_2_img":"https:\/\/cdn.store-assets.com\/s\/278885\/f\/3915981.jpeg?width=1500&format=webp","testimonial_slide_2_title":"Thiago Japyassu","testimonial_slide_2_content":"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur non mattis dui, sit amet hendrerit nibh. Duis congue volutpat urna ut accumsan. Vivam mauris augue, ultrices at faucibus vitae, mattis eu lacus.","testimonial_slide_2_text_link":"Read more","testimonial_slide_2_link":"#","testimonial_slide_3_img":"","testimonial_slide_3_title":"","testimonial_slide_3_content":"","testimonial_slide_3_text_link":"","testimonial_slide_3_link":"","testimonial_slide_4_img":"","testimonial_slide_4_title":"","testimonial_slide_4_content":"","testimonial_slide_4_text_link":"","testimonial_slide_4_link":"","testimonial_slide_5_img":"","testimonial_slide_5_title":"","testimonial_slide_5_content":"","testimonial_slide_5_text_link":"","testimonial_slide_5_link":"","testimonial_slide_6_img":"","testimonial_slide_6_title":"","testimonial_slide_6_content":"","testimonial_slide_6_text_link":"","testimonial_slide_6_link":"","logo_list_on_footer":"0","logo_list_title":"","logo_list_1_img":"https:\/\/cdn.store-assets.com\/s\/278885\/f\/3916892.png?width=350&format=webp","logo_list_1_link":"\/collections\/all","logo_list_2_img":"https:\/\/cdn.store-assets.com\/s\/278885\/f\/3916893.png?width=350&format=webp","logo_list_2_link":"\/collections\/all","logo_list_3_img":"https:\/\/cdn.store-assets.com\/s\/278885\/f\/3916894.png?width=350&format=webp","logo_list_3_link":"\/collections\/all","logo_list_4_img":"https:\/\/cdn.store-assets.com\/s\/278885\/f\/3916895.png?width=350&format=webp","logo_list_4_link":"\/collections\/all","logo_list_5_img":"","logo_list_5_link":"\/collections\/all","logo_list_6_img":"","logo_list_6_link":"\/collections\/all","logo_list_7_img":"","logo_list_7_link":"\/collections\/all","logo_list_8_img":"","logo_list_8_link":"\/collections\/all","home_featured_products":"feature-on-homepage","home_featured_products_num":"20","home_featured_products_row_num":"7","home_featured_products_show_heading":"","home_page_content":"home","home_page_show_heading":"0","home_page_add_to_cart":"1","scroll_to_top_button":"on-right","product_quantity_enable":"1","product_image_zoom_type":"lightbox","product_thumbnails_position":"below","product_related_enable":true,"products_per_row":4,"products_list_per_row":"4","product_page_float_btn":"1","product_page_variants_tag":"1","featured_product_title":"Featured products","product_img_res":"grande","product_img_crop":"product_img-crop ratio_1-1","collections_show_sale_circle":"1","collections_show_sold_out_circle":"1","collections_sort_enable":true,"collections_tags_enable":"0","collections_products_per_row":"3","collections_rows":"6","footer_bar":"1","footer_bar_icon_product_page":"1","footer_bar_icon_1":"https:\/\/cdn.easystore.blue\/s\/201\/f\/5590.png?width=150&format=webp","footer_bar_icon_1_text":"Home","footer_bar_icon_1_link":"\/","footer_bar_icon_2":"https:\/\/cdn.easystore.blue\/s\/201\/f\/5591.png?width=150&format=webp","footer_bar_icon_2_text":"All products","footer_bar_icon_2_link":"\/collections\/all","footer_bar_icon_3":"https:\/\/cdn.easystore.blue\/s\/201\/f\/5592.png?width=150&format=webp","footer_bar_icon_3_text":"Promotions","footer_bar_icon_3_link":"\/collections\/all","footer_bar_icon_4":"https:\/\/cdn.easystore.blue\/s\/201\/f\/5593.png?width=150&format=webp","footer_bar_icon_4_text":"Account","footer_bar_icon_4_link":"\/account\/login","cart_enable_ajax":"1","social_sharing_products":"1","social_sharing_blog":"1","social_sharing_count":"1","share_facebook":"1","share_twitter":"1","share_line":"1","share_pinterest":"1","facebook_url":"https:\/\/www.facebook.com\/","twitter_url":"","pinterest_url":"","instagram_url":"https:\/\/instagram.com\/","tumblr_url":"","youtube_url":"","vimeo_url":"","wechat_url":"","whatsapp_url":"https:\/\/wa.me\/601111296071","line_url":"","featured_blog":"","featured_blog_title":"Blog","articles_handle_1":"","articles_handle_2":"","articles_handle_3":"","promotion_uis":{"primary_color":"#4089e4","header_bg_color":"#4089e4","header_text_color":"#fff","recommendation":{"is_show_product_page":true,"is_show_cart_page_top":true,"is_show_cart_page_bottom":true},"voucher_widget":{"primary_color":"#4089e4"}},"show_multiple_currencies":true,"supported_currencies":"MYR ","theme_id":2877,"theme_is_edited":1,"theme_updated_at":"2026-08-18T18:00:14.000Z","phone_account_enabled":false,"line_login_enabled":false,"apple_login_enabled":false,"timezone":"Asia\/Kuala_Lumpur","is_server_side_currency_conversion":true,"is_self_registration_enabled":true,"is_highlight_enabled":false,"is_auto_gen_highlight_enabled":false,"is_common_question_enabled":false,"is_auto_gen_common_question_enabled":false,"highlight_section_title":"Highlights","common_question_section_title":"Frequently asked questions","is_new_promotion_enabled":true}
3780        if (settings.promotion_uis.voucher_widget != null) {
3781          setVoucherTheme(settings.promotion_uis.voucher_widget)
3782        }
3783        var shop = {
3784          money_prefix: "",
3785          format_decimals: ""
3786        };
3787        var _getEntitlementTranslation = {
3788          "free_shipping": "FREE SHIPPING",
3789          "free_of_charge": "FREE GIFT",
3790        }
3791        var _getTargetTypeTranslation = {
3792          "amount_credit": " CREDIT",
3793          "amount_off": " OFF",
3794        }
3795        var _getPrerequisiteTranslation = {
3796          "min_quantity": "Min formatValue item(s) purchase",
3797          "every_quantity": "Every formatValue item(s) purchase",
3798          "min_amount": "Min formatCurrency spend",
3799          "every_amount": "Every formatCurrency spend"
3800        }
3801        var _getPrerequisiteConditionTranslation = {
3802          "selected_items": "Selected Items",
3803          "selected_collections": "Selected Collections",
3804          "storewide": "Storewide",
3805          "order_subtotal": "Order Subtotal"
3806        }
3807        var _getVoucherButtonTextTranslation = {
3808          "apply": "Apply",
3809        }
3810        var _getVoucherErrorTranslation = {
3811          "condition_not_matched": "Voucher condition not matched"
3812        }
3813      </script>
3813
3814
3815    </div>
3816  </div>
3817</vouchers-modal>
3818  
3819  
3820</body>
3821</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.