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 / èªè£½çè¦è¾£æ¤é¬ – 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 & 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; 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()">×</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 × 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">›</span> 1303 1304 1305 <a href="/collections/feature-on-homepage">Feature on homepage</a> 1306 1307 1308 <span aria-hidden="true" class="breadcrumb__sep">›</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 / èªè£½çè¦è¾£æ¤é¬&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-èªè£½çè¦è¾£æ¤é¬&media=&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('&', '&').replace('>','>').replace('<','<').replace('/','/').replace('â', '"').replace("'","'") }</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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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 & 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.