PageSourceSearch

https://1batam.com/

html 1batam.com collected 2026-09-26 00:49:07 UTC 92,918 bytes, 2,638 lines download raw bytes

1<!doctype html>
2<!--[if lt IE 7]><html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
3<!--[if IE 7]><html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]-->
4<!--[if IE 8]><html class="no-js lt-ie9" lang="en"> <![endif]-->
5<!--[if IE 9 ]><html class="ie9 no-js"> <![endif]-->
6<!--[if (gt IE 9)|!(IE)]><!--> <html class="no-js"> <!--<![endif]-->
7<head>
8
9  <!-- Basic page needs ================================================== -->
10  <meta charset="utf-8">
11  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
12
13  
14  <link rel="icon" href="https://cdn.store-assets.com/s/1214368/f/10126571.png" />
15  
16
17  <!-- Title and description ================================================== -->
18  <title>
19  Plazapura
20  </title>
21
22  
23
24  <!-- Social meta ================================================== -->
25  
26
27  <meta property="og:type" content="website">
28  <meta property="og:title" content="Plazapura">
29  <meta property="og:url" content="https://1batam.com">
30  
31  
32    <meta property="og:image" content="">
33    <meta property="og:image:secure_url" content="">
34  
35
36
37<meta property="og:description" content="Plazapura">
38<meta property="og:site_name" content="Plazapura">
39
40
41
42  <meta name="twitter:card" content="summary">
43
44
45
46  <meta name="twitter:site" content="@">
47
48
49  <meta name="twitter:title" content="Plazapura">
50  
51    <meta name="twitter:description" content="">
52  
53  
54    <meta property="twitter:image" content="">
55    <meta property="twitter:image:secure_url" content="">
56  
57
58
59
60
61  <!-- Helpers ================================================== -->
62  <link rel="canonical" href="https://1batam.com">
63  <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1">
64  <meta name="theme-color" content="#121212">
65  
66  
66<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript" ></script>
66
67  
68  <!-- Header hook for plugins ================================================== -->
69  
70<!-- ScriptTags -->
71<script>window.__st={p: "index",cid: null,cem: null,cph: null,cfn: null,cln: null,cge: null,cdb: null,ccc: null};</script>
71<script src='/assets/events.js'></script>
71<script>(function(){function asyncLoad(){var urls=['/assets/traffic.js?v=1'];for(var i=0;i<urls.length;i++){var s=document.createElement('script');s.type='text/javascript';s.async=true;s.src=urls[i];var x=document.getElementsByTagName('script')[0];x.parentNode.insertBefore(s, x);}}window.attachEvent ? window.attachEvent('onload', asyncLoad) : window.addEventListener('load', asyncLoad, false);})();</script>
71
72<!-- /ScriptTags -->
73
74  
75  
76  
76<script src="https://store-themes.easystore.co/868639/themes/262319/assets/global.js?t=1787076016" defer="defer"></script>
76
77
78  
79  
80  
80<script>
81  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
82  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
83  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
84  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
85
86  ga('create', '', 'auto','myTracker');
87  ga('myTracker.send', 'pageview');
88
89  </script>
89
90  
91  
91<script src="/assets/storefront.js?id=1d419de2011a5572c98b" type="text/javascript" ></script>
91
92  
93
94  <!-- CSS ================================================== -->
95  <style>
96      @font-face {
97        font-family: 'Prata';
98        font-style: normal;
99        font-weight: regular;
100        src: local('Prata regular'), local('Prata-regular'), url(https://fonts.gstatic.com/s/prata/v13/6xKhdSpbNNCT-vWIAG_5LWwJ.ttf) format('truetype');
101      }
102
103      @font-face {
104        font-family: 'Prata';
105        font-style: normal;
106        font-weight: regular;
107        src: local('Prata regular'), local('Prata-regular'), url(https://fonts.gstatic.com/s/prata/v13/6xKhdSpbNNCT-vWIAG_5LWwJ.ttf) format('truetype');
108      }
109
110      :root {
111        --font-body-family: 'Prata', serif;
112        --font-body-style: normal;
113        --font-body-weight: 400;
114
115        --font-heading-family: 'Prata', serif;
116        --font-heading-style: normal;
117        --font-heading-weight: 400;
118
119        --color-heading-text: 0,0,0;
120        --color-base-text: 0,0,0;
121        --color-base-background-1: 254,248,255;
122        --color-base-background-2: 254,248,255;
123        
124        --color-base-solid-button-labels: 255,255,255;
125        --color-base-outline-button-labels: 18,18,18;
126        
127        --color-base-accent-1: 18,18,18;
128        --color-base-accent-2: 18,18,18;
129        --payment-terms-background-color: 254,248,255;
130
131        --gradient-base-background-1: 254,248,255;
132        --gradient-base-background-2: 254,248,255;
133        --gradient-base-accent-1: 18,18,18;
134        --gradient-base-accent-2: 18,18,18;
135
136        --page-width: 145rem;
137      }
138
139      *,
140      *::before,
141      *::after {
142        box-sizing: inherit;
143      }
144
145      html {
146        box-sizing: border-box;
147        font-size: 62.5%;
148        height: 100%;
149      }
150
151      body {
152        display: grid;
153        grid-template-rows: auto auto 1fr auto;
154        grid-template-columns: 100%;
155        min-height: 100%;
156        margin: 0;
157        font-size: 1.5rem;
158        letter-spacing: 0.06rem;
159        line-height: 1.8;
160        font-family: var(--font-body-family);
161        font-style: var(--font-body-style);
162        font-weight: var(--font-body-weight);
163        
164      }
165
166      @media screen and (min-width: 750px) {
167        body {
168          font-size: 1.6rem;
169        }
170      }
171   </style>
172  
173  <link href="https://store-themes.easystore.co/868639/themes/262319/assets/base.css?t=1787076016" rel="stylesheet" type="text/css" media="screen" />
174
175  
176  
177
178  
178<script>document.documentElement.className = document.documentElement.className.replace('no-js', 'js');</script>
178
179</head>
180
181<body id="plazapura" class="template-index" >
182	
183  
184<!-- Snippet:global/body_start: Console Extension -->
185<div id='es_console' style='display: none;'>868639</div>
186<!-- /Snippet -->
187
188	
189 	<style>
190  header {
191    --logo-width: 120px;
192  }
193  .header-wrapper,
194  .header-wrapper .list-menu--disclosure,
195  .header-wrapper .search-modal{
196    background-color: #FFFFFF;
197  }
198  .header-wrapper .search-modal .field__input{
199    background-color: rgb(var(--color-background));
200  }
201  .header-wrapper summary .icon-caret,
202  .header-wrapper .header__menu-item a,
203  .header-wrapper .list-menu__item,
204  .header-wrapper .link--text{
205    color: #000000;
206  }
207  
208  .search-modal__form{
209    position: relative;
210  }
211  
212  .dropdown {
213    display: none;
214    position: absolute;
215    top: 100%;
216    left: 0;
217    width: 100%;
218    padding: 5px 0;
219    background-color: #fff;
220    color:#000;
221    z-index: 1000;
222    border-bottom-left-radius: 15px;
223    border-bottom-right-radius: 15px;
224    border: 1px solid rgba(var(--color-foreground), 1);
225    border-top: none;
226    overflow-x: hidden;
227    overflow-y: auto;
228    max-height: 350px;
229  }
230  
231  .dropdown-item {
232    padding: 0.4rem 2rem;
233    cursor: pointer;
234    line-height: 1.4;
235    overflow: hidden;
236    text-overflow: ellipsis;
237    white-space: nowrap;
238  }
239  
240  .dropdown-item:hover{
241    background-color: #f3f3f3;
242  }
243  
244  .search__input.is-focus{
245    border-radius: 15px;
246    border-bottom-left-radius: 0;
247    border-bottom-right-radius: 0;
248    border: 1px solid rgba(var(--color-foreground), 1);
249    border-bottom: none;
250    box-shadow: none;
251  }
252  
253  .clear-all {
254    text-align: right;
255    padding: 0 2rem 0.2rem;
256    line-height: 1;
257    font-size: 70%;
258    margin-bottom: -2px;
259  }
260  
261  .clear-all:hover{
262    background-color: #fff;
263  }
264  
265  .search-input-focus .easystore-section-header-hidden{
266    transform: none;
267  }
268  .referral-notification {
269    position: absolute;
270    top: 100%;
271    right: 0;
272    background: white;
273    border: 1px solid #e0e0e0;
274    border-radius: 8px;
275    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
276    width: 280px;
277    z-index: 1000;
278    padding: 16px;
279    margin-top: 8px;
280    font-size: 14px;
281    line-height: 1.4;
282  }
283  
284  .referral-notification::before {
285    content: '';
286    position: absolute;
287    top: -8px;
288    right: 20px;
289    width: 0;
290    height: 0;
291    border-left: 8px solid transparent;
292    border-right: 8px solid transparent;
293    border-bottom: 8px solid white;
294  }
295  
296  .referral-notification::after {
297    content: '';
298    position: absolute;
299    top: -9px;
300    right: 20px;
301    width: 0;
302    height: 0;
303    border-left: 8px solid transparent;
304    border-right: 8px solid transparent;
305    border-bottom: 8px solid #e0e0e0;
306  }
307  
308  .referral-notification h4 {
309    margin: 0 0 8px 0;
310    color: #2196F3;
311    font-size: 16px;
312    font-weight: 600;
313  }
314  
315  .referral-notification p {
316    margin: 0 0 12px 0;
317    color: #666;
318  }
319  
320  .referral-notification .referral-code {
321    background: #f5f5f5;
322    padding: 8px;
323    border-radius: 4px;
324    font-family: monospace;
325    font-size: 13px;
326    text-align: center;
327    margin: 8px 0;
328    border: 1px solid #ddd;
329  }
330  
331  .referral-notification .close-btn {
332    position: absolute;
333    top: 8px;
334    right: 8px;
335    background: none;
336    border: none;
337    font-size: 18px;
338    color: #999;
339    cursor: pointer;
340    padding: 0;
341    width: 20px;
342    height: 20px;
343    line-height: 1;
344  }
345  
346  .referral-notification .close-btn:hover {
347    color: #333;
348  }
349  
350  .referral-notification .action-btn {
351    background: #2196F3;
352    color: white;
353    border: none;
354    padding: 8px 16px;
355    border-radius: 4px;
356    cursor: pointer;
357    font-size: 12px;
358    margin-right: 8px;
359    margin-top: 8px;
360  }
361  
362  .referral-notification .action-btn:hover {
363    background: #1976D2;
364  }
365  
366  .referral-notification .dismiss-btn {
367    background: transparent;
368    color: #666;
369    border: 1px solid #ddd;
370    padding: 8px 16px;
371    border-radius: 4px;
372    cursor: pointer;
373    font-size: 12px;
374    margin-top: 8px;
375  }
376  
377  .referral-notification .dismiss-btn:hover {
378    background: #f5f5f5;
379  }
380  .referral-modal__dialog {
381    transform: translate(-50%, 0);
382    transition: transform var(--duration-default) ease, visibility 0s;
383    z-index: 10000;
384    position: fixed;
385    top: 20vh;
386    left: 50%;
387    width: 100%;
388    max-width: 350px;
389    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
390    border-radius: 12px;
391    background-color: #fff;
392    color: #000;
393    padding: 20px;
394    text-align: center;
395  }
396
397  .modal-overlay.referral-modal-overlay {
398    position: fixed;
399    top: 0;
400    left: 0;
401    width: 100%;
402    height: 100%;
403    background-color: rgba(0, 0, 0, 0.7);
404    z-index: 2001;
405    display: block;
406    opacity: 1;
407    transition: opacity var(--duration-default) ease, visibility 0s;
408  }
409</style>
410
411<link rel="preload" href="https://store-themes.easystore.co/868639/themes/262319/assets/section-header.css?t=1787076016" as="style" onload="this.onload=null;this.rel='stylesheet'">
412<link rel="preload" href="https://store-themes.easystore.co/868639/themes/262319/assets/component-list-menu.css?t=1787076016" as="style" onload="this.onload=null;this.rel='stylesheet'">
413<link rel="preload" href="https://store-themes.easystore.co/868639/themes/262319/assets/component-menu-drawer.css?t=1787076016" as="style" onload="this.onload=null;this.rel='stylesheet'">
414<link rel="preload" href="https://store-themes.easystore.co/868639/themes/262319/assets/component-cart-notification.css?v1.1?t=1787076016" as="style" onload="this.onload=null;this.rel='stylesheet'">
415
416<script src="https://store-themes.easystore.co/868639/themes/262319/assets/cart-notification.js?t=1787076016" defer="defer"></script>
vendor: 1 bytes, line 416
416
417<script src="https://store-themes.easystore.co/868639/themes/262319/assets/details-modal.js?t=1787076016" defer="defer"></script>
417
418
419<svg xmlns="http://www.w3.org/2000/svg" class="hidden">
420  <symbol id="icon-search" viewbox="0 0 18 19" fill="none">
421    <path fill-rule="evenodd" clip-rule="evenodd" d="M11.03 11.68A5.784 5.784 0 112.85 3.5a5.784 5.784 0 018.18 8.18zm.26 1.12a6.78 6.78 0 11.72-.7l5.4 5.4a.5.5 0 11-.71.7l-5.41-5.4z" fill="currentColor"/>
422  </symbol>
423
424  <symbol id="icon-close" class="icon icon-close" fill="none" viewBox="0 0 18 17">
425    <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">
426  </symbol>
427</svg>
428
429
430<div id="easystore-section-header">
431  <sticky-header class="header-wrapper header-wrapper--border-bottom">
432    <header class="header header--middle-left page-width header--has-menu" itemscope itemtype="http://schema.org/Organization">
433      <header-drawer data-breakpoint="tablet">
434        <details class="menu-drawer-container menu-opening">
435          <summary class="header__icon header__icon--menu header__icon--summary link link--text focus-inset" aria-label="Menu" role="button" aria-expanded="true" aria-controls="menu-drawer">
436            <span>
437              
438
439
440    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-hamburger " fill="none" viewBox="0 0 18 16">
441      <path d="M1 .5a.5.5 0 100 1h15.71a.5.5 0 000-1H1zM.5 8a.5.5 0 01.5-.5h15.71a.5.5 0 010 1H1A.5.5 0 01.5 8zm0 7a.5.5 0 01.5-.5h15.71a.5.5 0 010 1H1a.5.5 0 01-.5-.5z" fill="currentColor">
442      </path>
443    </svg>
444
445  
446
447              
448
449
450    <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">
451      <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">
452      </path>
453    </svg>
454
455  
456
457            </span>
458          </summary>
459          <div id="menu-drawer" class="menu-drawer motion-reduce" tabindex="-1">
460            <div class="menu-drawer__inner-container">
461              <div class="menu-drawer__navigation-container">
462                <nav class="menu-drawer__navigation">
463                  <ul class="menu-drawer__menu list-menu" role="list">
464                    
465                    
466                      
467                        <li>
468                          <a href="/"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
469                            Home
470                          </a>
471                        </li>
472                      
473                    
474                    
475                      
476                        <li>
477                          <a href="/collections/all"  class="menu-drawer__menu-item list-menu__item link link--text focus-inset">
478                            Domain Inventory
479                          </a>
480                        </li>
481                      
482                    
483                  </ul>
484                </nav>
485
486                <div class="menu-drawer__utility-links">
487
488                  
489
490
491
492
493
494                  
495                </div>
496              </div>
497            </div>
498          </div>
499        </details>
500      </header-drawer>
501  
502      
503        <h1 class="header__heading">
504          Plazapura
505        </h1>
506      
507      <nav class="header__inline-menu">
508        <ul class="list-menu list-menu--inline" role="list">
509          
510            
511              
512                <li>
513                  <a href="/"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
514                    Home
515                  </a>
516                </li>
517              
518            
519            
520              
521                <li>
522                  <a href="/collections/all"  class="header__menu-item header__menu-item list-menu__item link link--text focus-inset">
523                    Domain Inventory
524                  </a>
525                </li>
526              
527            
528            
529            
530        </ul>
531      </nav>
532      <div class="header__icons">
533        <details-modal class="header__search">
534          <details>
535            <summary class="header__icon header__icon--search header__icon--summary link link--text focus-inset modal__toggle" aria-haspopup="dialog" aria-label="Search">
536              <span>
537                <svg class="modal__toggle-open icon icon-search" aria-hidden="true" focusable="false" role="presentation">
538                  <use href="#icon-search">
539                </svg>
540                <svg class="modal__toggle-close icon icon-close" aria-hidden="true" focusable="false" role="presentation">
541                  <use href="#icon-close">
542                </svg>
543              </span>
544            </summary>
545            <div class="search-modal modal__content" role="dialog" aria-modal="true" aria-label="Search">
546              <div class="modal-overlay"></div>
547              <div class="search-modal__content" tabindex="-1">
548                  <form action="/search" method="get" role="search" class="search search-modal__form">
549                    <div class="field">
550                      <input class="search__input field__input" 
551                        id="Search-In-Modal"
552                        type="search"
553                        name="q"
554                        value=""
555                        placeholder="Search"
556                        autocomplete="off"
557                      >
558                      <label class="field__label" for="Search-In-Modal">Search</label>
559                      <div class="dropdown" id="searchDropdown"></div>
560                      <input type="hidden" name="search_history" class="hidden_search_history">
561                      <input type="hidden" name="options[prefix]" value="last">
562                      <button class="search__button field__button" aria-label="Search">
563                        <svg class="icon icon-search" aria-hidden="true" focusable="false" role="presentation">
564                          <use href="#icon-search">
565                        </svg>
566                      </button> 
567                    </div>
568                  </form>
569                <button type="button" class="search-modal__close-button modal__close-button link link--text focus-inset" aria-label="accessibility.close">
570                  <svg class="icon icon-close" aria-hidden="true" focusable="false" role="presentation">
571                    <use href="#icon-close">
572                  </svg>
573                </button>
574              </div>
575            </div>
576          </details>
577        </details-modal>
578
579        
580        
581        <a href="/cart" class="header__icon header__icon--cart link link--text focus-inset" id="cart-icon-bubble">
582          
583
584
585    <svg class="icon icon-cart-empty " aria-hidden="true" focusable="false" role="presentation" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 40 40" fill="none">
586      <path d="m15.75 11.8h-3.16l-.77 11.6a5 5 0 0 0 4.99 5.34h7.38a5 5 0 0 0 4.99-5.33l-.78-11.61zm0 1h-2.22l-.71 10.67a4 4 0 0 0 3.99 4.27h7.38a4 4 0 0 0 4-4.27l-.72-10.67h-2.22v.63a4.75 4.75 0 1 1 -9.5 0zm8.5 0h-7.5v.63a3.75 3.75 0 1 0 7.5 0z" fill="currentColor" fill-rule="evenodd"></path>
587    </svg>
588
589  
590
591          <div class="cart-count-bubble hidden">
592            <span aria-hidden="true" class="js-content-cart-count">0</span>
593          </div>
594        </a>
595
596        
597      </div>
598    </header>
599  </sticky-header>
600  
601<cart-notification>
602  <div class="cart-notification-wrapper page-width color-background-1">
603    <div id="cart-notification" class="cart-notification focus-inset" aria-modal="true" aria-label="Added to cart" role="dialog" tabindex="-1">
604      <div class="cart-notification__header">
605        <h2 class="cart-notification__heading caption-large">
606
607
608    <svg class="icon icon-checkmark color-foreground-text " aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 12 9" fill="none">
609      <path fill-rule="evenodd" clip-rule="evenodd" d="M11.35.643a.5.5 0 01.006.707l-6.77 6.886a.5.5 0 01-.719-.006L.638 4.845a.5.5 0 11.724-.69l2.872 3.011 6.41-6.517a.5.5 0 01.707-.006h-.001z" fill="currentColor"></path>
610    </svg>
611
612  
613 Added to cart</h2>
614        <button type="button" class="cart-notification__close modal__close-button link link--text focus-inset" aria-label="accessibility.close">
615          
616
617
618    <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">
619      <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">
620      </path>
621    </svg>
622
623  
624
625        </button>
626      </div>
627      <div id="cart-notification-product" class="cart-notification-product"></div>
628      <div class="cart-notification__links">
629        <a href="/cart" id="cart-notification-button" class="button button--secondary button--full-width">View cart (<span class="js-content-cart-count">0</span>)</a>
630        <form action="/cart" method="post" id="cart-notification-form">
631          <input type="hidden" name="_token" value="Ho84Jzvrdbitx5CJgO4k7oWq3eNwi0AjBjetFJns">
632          <input type="hidden" name="current_currency" value="">
633          <button class="button button--primary button--full-width" name="checkout" value="true">Checkout</button>
634        </form>
635        <button type="button" class="link button-label">Continue shopping</button>
636      </div>
637    </div>
638  </div>
639</cart-notification>
640<style>
641  .cart-notification {
642     display: none;
643  }
644</style>
645<script>
646document.getElementById('cart-notification-form').addEventListener('submit',(event)=>{
647  if(event.submitter) event.submitter.classList.add('loading');
648})
649
650</script>
650
651
652</div>
653
654
655<script>
656
657  class StickyHeader extends HTMLElement {
658    constructor() {
659      super();
660    }
661
662    connectedCallback() {
663      this.header = document.getElementById('easystore-section-header');
664      this.headerBounds = {};
665      this.currentScrollTop = 0;
666      this.preventReveal = false;
667
668      this.onScrollHandler = this.onScroll.bind(this);
669      this.hideHeaderOnScrollUp = () => this.preventReveal = true;
670
671      this.addEventListener('preventHeaderReveal', this.hideHeaderOnScrollUp);
672      window.addEventListener('scroll', this.onScrollHandler, false);
673
674      this.createObserver();
675    }
676
677    disconnectedCallback() {
678      this.removeEventListener('preventHeaderReveal', this.hideHeaderOnScrollUp);
679      window.removeEventListener('scroll', this.onScrollHandler);
680    }
681
682    createObserver() {
683      let observer = new IntersectionObserver((entries, observer) => {
684        this.headerBounds = entries[0].intersectionRect;
685        observer.disconnect();
686      });
687
688      observer.observe(this.header);
689    }
690
691    onScroll() {
692      const scrollTop = window.pageYOffset || document.documentElement.scrollTop;
693
694      if (scrollTop > this.currentScrollTop && scrollTop > this.headerBounds.bottom) {
695        requestAnimationFrame(this.hide.bind(this));
696      } else if (scrollTop < this.currentScrollTop && scrollTop > this.headerBounds.bottom) {
697        if (!this.preventReveal) {
698          requestAnimationFrame(this.reveal.bind(this));
699        } else {
700          window.clearTimeout(this.isScrolling);
701
702          this.isScrolling = setTimeout(() => {
703            this.preventReveal = false;
704          }, 66);
705
706          requestAnimationFrame(this.hide.bind(this));
707        }
708      } else if (scrollTop <= this.headerBounds.top) {
709        requestAnimationFrame(this.reset.bind(this));
710      }
711
712
713      this.currentScrollTop = scrollTop;
714    }
715
716    hide() {
717      this.header.classList.add('easystore-section-header-hidden', 'easystore-section-header-sticky');
718      this.closeMenuDisclosure();
719      // this.closeSearchModal();
720    }
721
722    reveal() {
723      this.header.classList.add('easystore-section-header-sticky', 'animate');
724      this.header.classList.remove('easystore-section-header-hidden');
725    }
726
727    reset() {
728      this.header.classList.remove('easystore-section-header-hidden', 'easystore-section-header-sticky', 'animate');
729    }
730
731    closeMenuDisclosure() {
732      this.disclosures = this.disclosures || this.header.querySelectorAll('details-disclosure');
733      this.disclosures.forEach(disclosure => disclosure.close());
734    }
735
736    // closeSearchModal() {
737    //   this.searchModal = this.searchModal || this.header.querySelector('details-modal');
738    //   this.searchModal.close(false);
739    // }
740  }
741
742  customElements.define('sticky-header', StickyHeader);
743
744  
745  class DetailsDisclosure extends HTMLElement{
746    constructor() {
747      super();
748      this.mainDetailsToggle = this.querySelector('details');
749      // this.mainDetailsToggle.addEventListener('focusout', this.onFocusOut.bind(this));
750      this.mainDetailsToggle.addEventListener('mouseover', this.open.bind(this));
751      this.mainDetailsToggle.addEventListener('mouseleave', this.close.bind(this));
752    }
753
754    onFocusOut() {
755      setTimeout(() => {
756        if (!this.contains(document.activeElement)) this.close();
757      })
758    }
759
760    open() {
761      this.mainDetailsToggle.setAttribute('open',1)
762    }
763
764    close() {
765      this.mainDetailsToggle.removeAttribute('open')
766    }
767  }
768
769  customElements.define('details-disclosure', DetailsDisclosure);
770
771  function clearAll() {
772    localStorage.removeItem('searchHistory'); 
773    
774    var customer = "";
775    if(customer) {
776      // Your logic to clear all data or call an endpoint
777      fetch('/account/search_histories', {
778          method: 'DELETE',
779          headers: {
780            "Content-Type": "application/json",
781            "X-Requested-With": "XMLHttpRequest"
782          },
783          body: JSON.stringify({
784            _token: "Ho84Jzvrdbitx5CJgO4k7oWq3eNwi0AjBjetFJns"
785          }),
786      })
787      .then(response => response.json())
788    }
789  }
790  // End - delete search history from local storage
791  
792  // search history dropdown  
793  var searchInputs = document.querySelectorAll('.search__input');
794  
795  if(searchInputs.length > 0) {
796    
797    searchInputs.forEach((searchInput)=> {
798    
799      searchInput.addEventListener('focus', function() {
800        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
801        searchDropdown.innerHTML = ''; // Clear existing items
802  
803        // retrieve data from local storage
804        var searchHistoryData = JSON.parse(localStorage.getItem('searchHistory')) || [];
805  
806        // Convert JSON to string
807        var search_history_json = JSON.stringify(searchHistoryData);
808  
809        // Set the value of the hidden input
810        searchInput.closest('form').querySelector(".hidden_search_history").value = search_history_json;
811  
812        // create dropdown items
813        var clearAllItem = document.createElement('div');
814        clearAllItem.className = 'dropdown-item clear-all';
815        clearAllItem.textContent = 'Clear';
816        clearAllItem.addEventListener('click', function() {
817          clearAll();
818          searchDropdown.style.display = 'none';
819          searchInput.classList.remove('is-focus');
820        });
821        searchDropdown.appendChild(clearAllItem);
822  
823        // create dropdown items
824        searchHistoryData.forEach(function(item) {
825          var dropdownItem = document.createElement('div');
826          dropdownItem.className = 'dropdown-item';
827          dropdownItem.textContent = item.term;
828          dropdownItem.addEventListener('click', function() {
829            searchInput.value = item.term;
830            searchInput.closest('form').submit();
831            searchDropdown.style.display = 'none';
832          });
833          searchDropdown.appendChild(dropdownItem);
834        });
835  
836        if(searchHistoryData.length > 0){
837          // display the dropdown
838          searchInput.classList.add('is-focus');
839          document.body.classList.add('search-input-focus');
840          searchDropdown.style.display = 'block';
841        }
842      });
843  
844      searchInput.addEventListener("focusout", (event) => {
845        var searchDropdown = searchInput.closest('form').querySelector('#searchDropdown');
846        searchInput.classList.remove('is-focus');
847        searchDropdown.classList.add('transparent');
848        setTimeout(()=>{
849          searchDropdown.style.display = 'none';
850          searchDropdown.classList.remove('transparent');
851          document.body.classList.remove('search-input-focus');
852        }, 400);
853      });
854    })
855  }
856  // End - search history dropdown
857
858  // referral notification popup
859  const referralMessageTemplate = 'Your friend gifted you __CURRENCY_CODE__ __CREDIT_AMOUNT__ credit! Sign up now to redeem.';
860  const shopCurrency = 'Rp';
861
862  function getCookie(name) {
863    const value = `; ${document.cookie}`;
864    const parts = value.split(`; ${name}=`);
865    if (parts.length === 2) return parts.pop().split(';').shift();
866    return null;
867  }
868
869  function removeCookie(name) {
870    document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;
871  }
872
873  function showReferralNotification() {
874    const referralCode = getCookie('customer_referral_code');
875    
876    
877    const customerReferralCode = null;
878    
879    
880    const activeReferralCode = referralCode || customerReferralCode;
881    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
882    
883    if (referralData.timestamp && referralData.expirationDays) {
884      const expirationTime = referralData.timestamp + (referralData.expirationDays * 24 * 60 * 60 * 1000);
885      if (Date.now() > expirationTime) {
886        localStorage.removeItem('referral_notification_data');
887        return;
888      }
889    }
890    
891    if (referralData.dismissed) return;
892    
893    if (activeReferralCode) {
894      if (referralData.creditAmount) {
895        displayReferralNotification(referralData.creditAmount);
896      } else {
897        fetchReferralCampaignData(activeReferralCode);
898      }
899    }
900  }
901    
902  function fetchReferralCampaignData(referralCode) {
903    fetch(`/customer/referral_program/campaigns/${referralCode}`)
904      .then(response => {
905        if (!response.ok) {
906          throw new Error('Network response was not ok');
907        }
908        return response.json();
909      })
910      .then(data => {
911        let refereeCreditAmount = null;
912        if (data.data.campaign && data.data.campaign.referral_rules) {
913          const refereeRule = data.data.campaign.referral_rules.find(rule => 
914            rule.target_type === 'referee' && 
915            rule.event_name === 'customer/create' && 
916            rule.entitlement && 
917            rule.entitlement.type === 'credit'
918          );
919          
920          if (refereeRule) {
921            refereeCreditAmount = refereeRule.entitlement.amount;
922          }
923        }
924        
925        const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
926        referralData.creditAmount = refereeCreditAmount;
927        referralData.dismissed = referralData.dismissed || false;
928        referralData.timestamp = Date.now();
929        referralData.expirationDays = 3;
930        localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
931        
932        displayReferralNotification(refereeCreditAmount);
933      })
934      .catch(error => {
935        removeCookie('customer_referral_code');
936      });
937  }
938    
939  function displayReferralNotification(creditAmount = null) {
940    const isMobile = innerWidth <= 749;
941    
942    if (isMobile) {
943      const mobileModal = document.querySelector('#referralMobileModal details');
944      const mobileMessageElement = document.getElementById('referralSignupMessageMobile');
945      
946      if (mobileModal && mobileMessageElement) {
947        if (creditAmount) {
948          const finalMessage = referralMessageTemplate
949            .replace('__CREDIT_AMOUNT__', creditAmount)
950            .replace('__CURRENCY_CODE__', shopCurrency);
951          
952          mobileMessageElement.textContent = finalMessage;
953        }
954        
955        mobileModal.setAttribute('open', '');
956      }
957    } else {
958      const notification = document.getElementById('referralNotification');
959      
960      if (notification) {
961        if (creditAmount) {
962          const messageElement = document.getElementById('referralSignupMessage');
963          if (messageElement) {
964            const finalMessage = referralMessageTemplate
965              .replace('__CREDIT_AMOUNT__', creditAmount)
966              .replace('__CURRENCY_CODE__', shopCurrency);
967            
968            messageElement.textContent = finalMessage;
969          }
970        }
971        
972        notification.style.display = 'block';
973      }
974    }
975  }
976
977  showReferralNotification();
978
979  addEventListener('beforeunload', function() {
980    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
981    
982    if (referralData.creditAmount !== undefined) {
983      referralData.creditAmount = null;
984      localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
985    }
986  });
987
988  function closeReferralNotification() {
989    const notification = document.getElementById('referralNotification');
990    if (notification) {
991      notification.style.display = 'none';
992    }
993  }
994
995  function dismissReferralNotification() {
996    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
997    
998    referralData.dismissed = true;
999    referralData.timestamp = referralData.timestamp || Date.now();
1000    referralData.expirationDays = referralData.expirationDays || 3;
1001    
1002    localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
1003    
1004    closeReferralNotification();
1005  }
1006
1007  function goToSignupPage() {
1008    location.href = '/account/register';
1009    dismissReferralNotification();
1010  }
1011
1012  function closeMobileReferralModal() {
1013    const mobileModal = document.querySelector('#referralMobileModal details');
1014    if (mobileModal) {
1015      mobileModal.removeAttribute('open');
1016    }
1017    
1018    const referralData = JSON.parse(localStorage.getItem('referral_notification_data')) || {};
1019    referralData.dismissed = true;
1020    referralData.timestamp = referralData.timestamp || Date.now();
1021    referralData.expirationDays = referralData.expirationDays || 3;
1022    localStorage.setItem('referral_notification_data', JSON.stringify(referralData));
1023  }
1024
1025  function goToSignupPageFromMobile() {
1026    location.href = '/account/register';
1027    closeMobileReferralModal();
1028  }
1029  // End - referral notification popup
1030</script>
1030
1031
1032
1033
1034  <main id="MainContent" class="content-for-layout focus-none" role="main" tabindex="-1">
1035    
1036    
1037
1038
1039
1040<div id='content_for_index'><div id='easystore-section-1649058770723'> <link rel="preload" href="https://store-themes.easystore.co/868639/themes/262319/assets/component-rte.css?t=1787076016" as="style" onload="this.onload=null;this.rel='stylesheet'">
1041<link rel="preload" href="https://store-themes.easystore.co/868639/themes/262319/assets/section-rich-text.css?t=1787076016" as="style" onload="this.onload=null;this.rel='stylesheet'">
1042
1043<div class="rich-text ">
1044  <div class="rich-text__blocks">
1045    
1046      
1047      
1048          <h2 class="h2">Selling Aged Domain DR, DA, PA</h2>
1049        
1050    
1051      
1052      
1053          <div class="rich-text__text rte">Check our list here <a href="https://s.id/hqageddomain" rel="nofollow" target="_blank">https://s.id/hqageddomain</a></div>
1054        
1055    
1056  </div>
1057</div>
1058
1059
1060 </div><div id='easystore-section-1649403903098'> <link
1061  rel="preload"
1062  href="https://store-themes.easystore.co/868639/themes/262319/assets/component-card.css?t=1787076016"
1063  as="style"
1064  onload="this.onload=null;this.rel='stylesheet'">
1065<link
1066  rel="preload"
1067  href="https://store-themes.easystore.co/868639/themes/262319/assets/component-price.css?t=1787076016"
1068  as="style"
1069  onload="this.onload=null;this.rel='stylesheet'">
1070<link
1071  rel="preload"
1072  href="https://store-themes.easystore.co/868639/themes/262319/assets/component-product-grid.css?t=1787076016"
1073  as="style"
1074  onload="this.onload=null;this.rel='stylesheet'">
1075<link
1076  rel="preload"
1077  href="https://store-themes.easystore.co/868639/themes/262319/assets/section-collection-list.css?t=1787076016"
1078  as="style"
1079  onload="this.onload=null;this.rel='stylesheet'">
1080<link
1081  rel="preload"
1082  href="https://store-themes.easystore.co/868639/themes/262319/assets/component-loading-overlay.css?t=1787076016"
1083  as="style"
1084  onload="this.onload=null;this.rel='stylesheet'">
1085
1086<link
1087  rel="preload"
1088  href="https://store-themes.easystore.co/868639/themes/262319/assets/component-slider.css?t=1787076016"
1089  as="style"
1090  onload="this.onload=null;this.rel='stylesheet'">
1091
1092<style>
1093  .collection_skeleton-card{
1094    background-color: rgba(200, 200, 200, 0.1);
1095    border-radius: 12px;
1096    padding: 20px;
1097  }
1098  .collection_skeleton-loading,
1099  .collection_skeleton-loading:empty{
1100    display: block;
1101    height: 23px;
1102    border-radius: 8px;
1103    margin-bottom: 15px;
1104    background-image: linear-gradient(90deg, #F0F0F0 0px, rgba(215, 215, 215, 0.8) 40px, #F0F0F0 80px);
1105    background-size: 600px;
1106    animation: shine-lines 0.8s infinite ease-in;
1107    color: transparent !important;
1108    border-color: transparent;
1109  }
1110  .collection_skeleton-loading:last-child,
1111  .collection_skeleton-loading:empty:last-child{
1112    margin-bottom: 0px;
1113  }
1114  .collection_skeleton-card .collection_skeleton-card-img{
1115    padding-bottom: 100%;
1116  }
1117  .collection_skeleton-card-wrapper{
1118    margin-top: 50px;
1119  }
1120  @media screen and (max-width: 989px) {
1121    .collection_list-container {
1122      margin-top: -20px;
1123    }
1124    .collection_skeleton-loading,
1125    .collection_skeleton-loading:empty{
1126      height: 15px;
1127      margin-bottom: 10px;
1128    }
1129  }
1130  @keyframes shine-lines {
1131    0%{
1132      background-position: -30px;
1133    }
1134    80% {
1135      background-position: 380px;
1136    }
1137    100% {
1138      background-position: 550px;
1139    }
1140  }
1141
1142</style>
1143
1144<div id="collection-list_1649403903098" class="section-collection-list spaced-section page-width page-width-desktop">
1145  <div class="title-wrapper-with-link">
1146    <h2 class="title title-wrapper--self-padded-tablet-down ">Collection list</h2>
1147    <div class="scroller-wrapper featured-collections__tablist-wrapper">
1148      <ul class="featured-collections__tablist" role="tablist">
1149        
1150          
1151          
1152          
1153
1154          
1155            <li
1156              onclick="toggleCollectionListTab('1649403903098','2439125', '1649403903098-kyvrlyf1ezo-k6nu8bh')"
1157              id="collection_title-2439125"
1158              class="featured-collections-tab__item  featured-collections-tab__item--active"
1159              role="tab"
1160              aria-selected="true">
1161              <span class="featured-collections__item-title">Feature on homepage</span>
1162            </li>
1163          
1164        
1165      </ul>
1166    </div>
1167  </div>
1168
1169  <div id="collection-list-wrapper_1649403903098" class="collection_list-container">
1170    <div class="collection_skeleton-card-wrapper title-wrapper--self-padded-tablet-down hide">
1171      <div class="grid grid--2-col grid--3-col-tablet grid--4-col-desktop grid--quarter-max">
1172        
1173          <div class="grid__item ">
1174            <div class="collection_skeleton-card">
1175              <div class="collection_skeleton-loading collection_skeleton-card-img"></div>
1176              <div class="collection_skeleton-loading" style="width: 40%;"></div>
1177              <div class="collection_skeleton-loading"></div>
1178            </div>
1179          </div>
1180        
1181          <div class="grid__item ">
1182            <div class="collection_skeleton-card">
1183              <div class="collection_skeleton-loading collection_skeleton-card-img"></div>
1184              <div class="collection_skeleton-loading" style="width: 40%;"></div>
1185              <div class="collection_skeleton-loading"></div>
1186            </div>
1187          </div>
1188        
1189          <div class="grid__item small-hide medium-hide">
1190            <div class="collection_skeleton-card">
1191              <div class="collection_skeleton-loading collection_skeleton-card-img"></div>
1192              <div class="collection_skeleton-loading" style="width: 40%;"></div>
1193              <div class="collection_skeleton-loading"></div>
1194            </div>
1195          </div>
1196        
1197          <div class="grid__item small-hide medium-hide">
1198            <div class="collection_skeleton-card">
1199              <div class="collection_skeleton-loading collection_skeleton-card-img"></div>
1200              <div class="collection_skeleton-loading" style="width: 40%;"></div>
1201              <div class="collection_skeleton-loading"></div>
1202            </div>
1203          </div>
1204        
1205      </div>
1206    </div>
1207    
1208    
1209    
1210    
1211      
1212      <div id="collection-2439125" class="collection-list-wrapper ">
1213        <slider-component class="slider-mobile-gutter">
1214          <ul class="collection-list product-grid grid grid--2-col grid--3-col-tablet grid--4-col-desktop grid--quarter-max slider slider--tablet grid--peek" role="list">
1215            
1216              <li class="grid__item slider__slide">
1217                
1218
1219
1220
1221
1222
1223
1224
1225  
1226
1227
1228
1229
1230  
1231
1232
1233<div class="card-wrapper">
1234  <a href="/collections/feature-on-homepage/products/aged-domain-1" class="full-unstyled-link">
1235    <div class="card card--product card--outline grid-link__image--product" tabindex="-1">
1236      <div class="card__inner">
1237        <div class="media media--transparent media--square media--hover-effect">
1238          <img src="https://cdn.store-assets.com/s/868639/i/72409724.png?width=480&format=webp" alt="AGED DOMAIN (3)" loading="lazy">
1239          
1240        </div>
1241        
1242        
1243
1244        
1245          <add-to-cart-button>
1246            <div class="card__badge card__badge-bottom-right">
1247              <span class="badge badge-circle badge--bottom-right addToClassList" data-variant-id="53980369" data-product-handle="aged-domain-1" data-product-price="1200000" data-product-price-max="1200000.0" data-product-available="1" data-product-id="11681465" data-token="Ho84Jzvrdbitx5CJgO4k7oWq3eNwi0AjBjetFJns" data-quantity="1" data-url="/collections/feature-on-homepage/products/aged-domain-1">	
1248                
1249
1250
1251    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-plus " fill="none" viewBox="0 0 10 10">
1252      <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"></path>
1253    </svg>
1254
1255  
1256
1257              </span>
1258              <div class="loading-overlay hidden">
1259                <div class="loading-overlay__spinner">
1260                  <svg aria-hidden="true" focusable="false" role="presentation" class="spinner" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
1261                      <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle>
1262                  </svg>
1263                </div>
1264              </div>
1265            </div>
1266          </add-to-cart-button>
1267        
1268      </div>
1269    </div>
1270    
1271    <div class="card-information">
1272      <div class="card-information__wrapper">
1273        
1274        <span class="card-information__text">
1275          Aged Domain 01
1276        </span>
1277        
1278        <span class="caption-large light"></span>
1279        
1280
1281<div class="price
1282  
1283  
1284  "
1285  >
1286
1287  <dl>
1288    <div class="price__regular">
1289      <dt>
1290        <span class="visually-hidden visually-hidden--inline">Regular price</span>
1291      </dt>
1292      <dd >
1293        <span class="price-item price-item--regular">
1294          
1295  
1296    <span class=money data-ori-price='1,200,000.00'>Rp 1,200,000.00 IDR</span>
1297  
1298
1299        </span>
1300      </dd>
1301    </div>
1302    <div class="price__sale">
1303      <dt class="price__compare">
1304        <span class="visually-hidden visually-hidden--inline">Regular price</span>
1305      </dt>
1306      <dd class="price__compare">
1307        <s class="price-item price-item--regular">
1308          
1309            <span class=money data-ori-price='0.00'>Rp 0.00 IDR</span>
1310          
1311          
1312        </s>
1313      </dd>
1314      <dt>
1315        <span class="visually-hidden visually-hidden--inline">Sale price</span>
1316      </dt>
1317      <dd >
1318        <span  class="price-item price-item--sale">
1319          
1320  
1321    <span class=money data-ori-price='1,200,000.00'>Rp 1,200,000.00 IDR</span>
1322  
1323
1324        </span>
1325      </dd>
1326    </div>
1327  </dl>
1328  
1329</div>
1330
1331      </div>
1332      
1333    </div>
1334  </a>
1335</div>
1336
1337
1338              </li>
1339            
1340              <li class="grid__item slider__slide">
1341                
1342
1343
1344
1345
1346
1347
1348
1349  
1350
1351
1352
1353
1354  
1355
1356
1357<div class="card-wrapper">
1358  <a href="/collections/feature-on-homepage/products/aged-domain" class="full-unstyled-link">
1359    <div class="card card--product card--outline grid-link__image--product" tabindex="-1">
1360      <div class="card__inner">
1361        <div class="media media--transparent media--square media--hover-effect">
1362          <img src="https://cdn.store-assets.com/s/868639/i/72409745.png?width=480&format=webp" alt="AGED DOMAIN (32)" loading="lazy">
1363          
1364        </div>
1365        
1366        
1367
1368        
1369          <add-to-cart-button>
1370            <div class="card__badge card__badge-bottom-right">
1371              <span class="badge badge-circle badge--bottom-right addToClassList" data-variant-id="52713846" data-product-handle="aged-domain" data-product-price="1300000" data-product-price-max="1300000.0" data-product-available="1" data-product-id="11421661" data-token="Ho84Jzvrdbitx5CJgO4k7oWq3eNwi0AjBjetFJns" data-quantity="1" data-url="/collections/feature-on-homepage/products/aged-domain">	
1372                
1373
1374
1375    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-plus " fill="none" viewBox="0 0 10 10">
1376      <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"></path>
1377    </svg>
1378
1379  
1380
1381              </span>
1382              <div class="loading-overlay hidden">
1383                <div class="loading-overlay__spinner">
1384                  <svg aria-hidden="true" focusable="false" role="presentation" class="spinner" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
1385                      <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle>
1386                  </svg>
1387                </div>
1388              </div>
1389            </div>
1390          </add-to-cart-button>
1391        
1392      </div>
1393    </div>
1394    
1395    <div class="card-information">
1396      <div class="card-information__wrapper">
1397        
1398        <span class="card-information__text">
1399          Aged Domain 02
1400        </span>
1401        
1402        <span class="caption-large light"></span>
1403        
1404
1405<div class="price
1406  
1407  
1408  "
1409  >
1410
1411  <dl>
1412    <div class="price__regular">
1413      <dt>
1414        <span class="visually-hidden visually-hidden--inline">Regular price</span>
1415      </dt>
1416      <dd >
1417        <span class="price-item price-item--regular">
1418          
1419  
1420    <span class=money data-ori-price='1,300,000.00'>Rp 1,300,000.00 IDR</span>
1421  
1422
1423        </span>
1424      </dd>
1425    </div>
1426    <div class="price__sale">
1427      <dt class="price__compare">
1428        <span class="visually-hidden visually-hidden--inline">Regular price</span>
1429      </dt>
1430      <dd class="price__compare">
1431        <s class="price-item price-item--regular">
1432          
1433            <span class=money data-ori-price='0.00'>Rp 0.00 IDR</span>
1434          
1435          
1436        </s>
1437      </dd>
1438      <dt>
1439        <span class="visually-hidden visually-hidden--inline">Sale price</span>
1440      </dt>
1441      <dd >
1442        <span  class="price-item price-item--sale">
1443          
1444  
1445    <span class=money data-ori-price='1,300,000.00'>Rp 1,300,000.00 IDR</span>
1446  
1447
1448        </span>
1449      </dd>
1450    </div>
1451  </dl>
1452  
1453</div>
1454
1455      </div>
1456      
1457    </div>
1458  </a>
1459</div>
1460
1461
1462              </li>
1463            
1464              <li class="grid__item slider__slide">
1465                
1466
1467
1468
1469
1470
1471
1472
1473  
1474
1475
1476
1477
1478  
1479
1480
1481<div class="card-wrapper">
1482  <a href="/collections/feature-on-homepage/products/aged-domain-2" class="full-unstyled-link">
1483    <div class="card card--product card--outline grid-link__image--product" tabindex="-1">
1484      <div class="card__inner">
1485        <div class="media media--transparent media--square media--hover-effect">
1486          <img src="https://cdn.store-assets.com/s/868639/i/72409750.png?width=480&format=webp" alt="AGED DOMAIN (4)" loading="lazy">
1487          
1488        </div>
1489        
1490        
1491
1492        
1493          <add-to-cart-button>
1494            <div class="card__badge card__badge-bottom-right">
1495              <span class="badge badge-circle badge--bottom-right addToClassList" data-variant-id="54955424" data-product-handle="aged-domain-2" data-product-price="1350000" data-product-price-max="1350000.0" data-product-available="1" data-product-id="11880747" data-token="Ho84Jzvrdbitx5CJgO4k7oWq3eNwi0AjBjetFJns" data-quantity="1" data-url="/collections/feature-on-homepage/products/aged-domain-2">	
1496                
1497
1498
1499    <svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" role="presentation" class="icon icon-plus " fill="none" viewBox="0 0 10 10">
1500      <path fill-rule="evenodd" clip-rule="evenodd" d="M1 4.51a.5.5 0 000 1h3.5l.01 3.5a.5.5 0 001-.01V5.5l3.5-.01a.5.5 0 00-.01-1H5.5L5.49.99a.5.5 0 00-1 .01v3.5l-3.5.01H1z" fill="currentColor"></path>
1501    </svg>
1502
1503  
1504
1505              </span>
1506              <div class="loading-overlay hidden">
1507                <div class="loading-overlay__spinner">
1508                  <svg aria-hidden="true" focusable="false" role="presentation" class="spinner" viewBox="0 0 66 66" xmlns="http://www.w3.org/2000/svg">
1509                      <circle class="path" fill="none" stroke-width="6" cx="33" cy="33" r="30"></circle>
1510                  </svg>
1511                </div>
1512              </div>
1513            </div>
1514          </add-to-cart-button>
1515        
1516      </div>
1517    </div>
1518    
1519    <div class="card-information">
1520      <div class="card-information__wrapper">
1521        
1522        <span class="card-information__text">
1523          Aged Domain 03
1524        </span>
1525        
1526        <span class="caption-large light"></span>
1527        
1528
1529<div class="price
1530  
1531  
1532  "
1533  >
1534
1535  <dl>
1536    <div class="price__regular">
1537      <dt>
1538        <span class="visually-hidden visually-hidden--inline">Regular price</span>
1539      </dt>
1540      <dd >
1541        <span class="price-item price-item--regular">
1542          
1543  
1544    <span class=money data-ori-price='1,350,000.00'>Rp 1,350,000.00 IDR</span>
1545  
1546
1547        </span>
1548      </dd>
1549    </div>
1550    <div class="price__sale">
1551      <dt class="price__compare">
1552        <span class="visually-hidden visually-hidden--inline">Regular price</span>
1553      </dt>
1554      <dd class="price__compare">
1555        <s class="price-item price-item--regular">
1556          
1557            <span class=money data-ori-price='0.00'>Rp 0.00 IDR</span>
1558          
1559          
1560        </s>
1561      </dd>
1562      <dt>
1563        <span class="visually-hidden visually-hidden--inline">Sale price</span>
1564      </dt>
1565      <dd >
1566        <span  class="price-item price-item--sale">
1567          
1568  
1569    <span class=money data-ori-price='1,350,000.00'>Rp 1,350,000.00 IDR</span>
1570  
1571
1572        </span>
1573      </dd>
1574    </div>
1575  </dl>
1576  
1577</div>
1578
1579      </div>
1580      
1581    </div>
1582  </a>
1583</div>
1584
1585
1586              </li>
1587            
1588            
1589          </ul>
1590          
1591            <div class="slider-buttons no-js-hidden medium-hide">
1592              <button
1593                type="button"
1594                class="slider-button slider-button--prev"
1595                name="previous">
1596
1597
1598    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
1599      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
1600    </svg>
1601
1602  
1603</button>
1604              <div class="slider-counter caption">
1605                <span class="slider-counter--current">1</span>
1606                <span aria-hidden="true">
1607                  /
1608                </span>
1609                <span class="slider-counter--total"></span>
1610              </div>
1611              <button
1612                type="button"
1613                class="slider-button slider-button--next"
1614                name="next">
1615
1616
1617    <svg aria-hidden="true" focusable="false" role="presentation" class="icon icon-caret " viewBox="0 0 10 6">
1618      <path fill-rule="evenodd" clip-rule="evenodd" d="M9.354.646a.5.5 0 00-.708 0L5 4.293 1.354.646a.5.5 0 00-.708.708l4 4a.5.5 0 00.708 0l4-4a.5.5 0 000-.708z" fill="currentColor"></path>
1619    </svg>
1620
1621  
1622</button>
1623            </div>
1624          
1625        </slider-component>
1626        
1627      </div>
1628    
1629  </div>
1630
1631</div>
1632
1633<script>
1634  // Check initialize
1635  if (!window._collectionList_renderedBlocks) window._collectionList_renderedBlocks = new Map();
1636  if (!window._collectionList_selectedBlock) window._collectionList_selectedBlock = new Map();
1637  
1638  window._collectionList_renderedBlocks.set("1649403903098", new Set(["1649403903098-kyvrlyf1ezo-k6nu8bh"]));
1639  window._collectionList_selectedBlock.set("1649403903098", "1649403903098-kyvrlyf1ezo-k6nu8bh");
1640
1641  function toggleCollectionListTab(sectionId, CollectionId, blockId) {
1642    const renderedBlock = window._collectionList_renderedBlocks.get(sectionId);
1643    const sectionSelector = `#collection-list_${sectionId}`;
1644    const allTitles = document.querySelectorAll(`${sectionSelector} .featured-collections-tab__item`);
1645    const allCollections = document.querySelectorAll(`${sectionSelector} .collection-list-wrapper`);
1646    const loading = document.querySelector(`#collection-list-wrapper_${sectionId} .collection_skeleton-card-wrapper`);
1647
1648    // Remove active class from all titles
1649    allTitles.forEach(el => el.classList.remove("featured-collections-tab__item--active"));
1650
1651    // Add active class to the selected title
1652    const activeTitle = document.querySelector(`${sectionSelector} #collection_title-${CollectionId}`);
1653    if (activeTitle) activeTitle.classList.add("featured-collections-tab__item--active");
1654    window._collectionList_selectedBlock.set(sectionId, blockId);
1655
1656    // Hide all collections
1657    allCollections.forEach(el => el.classList.add("hide"));
1658
1659    // Check if the block is already rendered
1660    if (renderedBlock.has(blockId)) {
1661      const targetCollection = document.querySelector(`${sectionSelector} #collection-${CollectionId}`);
1662      if (targetCollection) {
1663        loading.classList.add('hide')
1664        targetCollection.classList.remove("hide");
1665      }
1666    } else {
1667      loading.classList.remove('hide')
1668      renderedBlock.add(blockId);
1669
1670      // Get the current URL search parameters
1671      let urlParams = new URLSearchParams(window.location.search);
1672
1673      // Check if the 'preview_theme_id' parameter exists
1674      let previewThemeId = urlParams.get('preview_theme_id');
1675
1676      // Base collection list parameters
1677      let collectionListParams = new URLSearchParams({ section_key: sectionId });
1678
1679      // If 'preview_theme_id' exists, add it to the parameters
1680      if (previewThemeId) {
1681          collectionListParams.append('preview_theme_id', previewThemeId);
1682      }
1683
1684      // Fetch and render the collection block
1685      fetch(`collections/${CollectionId}/collection_list_section_html?${collectionListParams}`, { method: "GET" })
1686        .then(response => response.json())
1687        .then(res => {
1688          if (res.collection_list_items_html) {
1689            let wrapper = document.querySelector(`#collection-list-wrapper_${sectionId}`),
1690                seletedBlock =  window._collectionList_selectedBlock.get(sectionId);
1691            if (wrapper) {
1692              if(seletedBlock == blockId) loading.classList.add('hide')
1693              wrapper.insertAdjacentHTML("beforeend", res.collection_list_items_html);
1694              if(EasyStore !== undefined && EasyStore.Currencies !== undefined) EasyStore.Currencies.convertAll();
1695              if(seletedBlock != blockId) document.querySelector(`${sectionSelector} #collection-${CollectionId}`).classList.add("hide");
1696            }
1697          }
1698        })
1699        .catch(error => {
1700          renderedBlock.delete(blockId);
1701          console.error("Error fetching collection list:", error);
1702        });
1703    }
1704  }
1705</script>
1705
1706
1707
1708
1709 </div></div>
1710
1711
1712
1713
1714
1715
1716    
1717  </main>
1718 	<style>
1719  .footer{
1720    background-color: #FFFFFF;
1721    color: #484848;
1722  }
1723  .footer .link--text,
1724  .footer .list-menu__item--link,
1725  .footer .footer-block__details-content .list-menu__item--link{
1726    color: #484848;
1727  }
1728  .footer-block__heading{
1729    color: #000000;
1730  }
1731</style>
1732
1733<link rel="preload" href="https://store-themes.easystore.co/868639/themes/262319/assets/section-footer.css?t=1787076016" as="style" onload="this.onload=null;this.rel='stylesheet'">
1734
1735<footer class="footer color-background-1">
1736  <div class="footer__content-top page-width">
1737    <div class="grid grid--1-col grid--4-col-tablet ">
1738      
1739    </div>
1740  </div>
1741  <div class="footer__content-bottom">
1742    <div class="footer__content-bottom-wrapper page-width">
1743      <div class="footer__column footer__column--info">
1744
1745        
1746
1747
1748
1749
1750
1751        <div class="footer__payment">
1752          <ul class="list list-payment" role="list">
1753            
1754            
1755            
1756            
1757              <li class="list-payment__item">
1758                
1759
1760
1761    <svg class="icon icon--full-color " viewBox="0 0 38 24" xmlns="http://www.w3.org/2000/svg" width="38"
1762      height="24" role="img" aria-labelledby="pi-paypal">
1763      <path opacity=".07"
1764        d="M35 0H3C1.3 0 0 1.3 0 3v18c0 1.7 1.4 3 3 3h32c1.7 0 3-1.3 3-3V3c0-1.7-1.4-3-3-3z"></path>
1765      <path fill="#fff" d="M35 1c1.1 0 2 .9 2 2v18c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V3c0-1.1.9-2 2-2h32">
1766      </path>
1767      <path fill="#003087"
1768        d="M23.9 8.3c.2-1 0-1.7-.6-2.3-.6-.7-1.7-1-3.1-1h-4.1c-.3 0-.5.2-.6.5L14 15.6c0 .2.1.4.3.4H17l.4-3.4 1.8-2.2 4.7-2.1z">
1769      </path>
1770      <path fill="#3086C8"
1771        d="M23.9 8.3l-.2.2c-.5 2.8-2.2 3.8-4.6 3.8H18c-.3 0-.5.2-.6.5l-.6 3.9-.2 1c0 .2.1.4.3.4H19c.3 0 .5-.2.5-.4v-.1l.4-2.4v-.1c0-.2.3-.4.5-.4h.3c2.1 0 3.7-.8 4.1-3.2.2-1 .1-1.8-.4-2.4-.1-.5-.3-.7-.5-.8z">
1772      </path>
1773      <path fill="#012169"
1774        d="M23.3 8.1c-.1-.1-.2-.1-.3-.1-.1 0-.2 0-.3-.1-.3-.1-.7-.1-1.1-.1h-3c-.1 0-.2 
17740-.2.1-.2.1-.3.2-.3.4l-.7 4.4v.1c0-.3.3-.5.6-.5h1.3c2.5 0 4.1-1 4.6-3.8v-.2c-.1-.1-.3-.2-.5-.2h-.1z">
1775      </path>
1776    </svg>
1777
1778  
1779
1780              </li>
1781            
1782            
1783            
1784          </ul>
1785        </div>
1786        
1787        <div class="footer__copyright caption">
1788          <div class="copyright__content">© 2024 Plazapura.com</div>
1789        </div>
1790
1791        <div class="footer__copyright caption">
1792          
1793            <div>
1794            
1795            
1796              
1797                <a href="/legal/terms-of-service">Terms of Service</a>
1798              
1799              
1800            
1801              
1802                | <a href="/legal/privacy-policy">Privacy Policy</a>
1803              
1804              
1805            
1806              
1807                | <a href="/legal/refund-policy">Refund Policy</a>
1808              
1809              
1810            
1811            </div>
1812         
1813        </div>
1814        
1815      </div>
1816    </div>
1817  </div>
1818</footer>
1819
1820
1821
1822
1823  
1824
1825  
1825<script>
1826  EasyStore.Currencies.init([{"name":"Indonesian Rupiah","code":"IDR","rate":"1.0","format_prefix":"Rp","format_suffix":"IDR","format_decimals":0,"thousand_separator":",","is_primary":true}], 1)
1827</script>
1827
1828
1829
1830
1831  
1831<script>
1832    let page_template = 'index';
1833
1834    if(document.querySelector('.currency-picker')) {
1835      EasyStore.Currencies.change(document.querySelector('.currency-picker').value)
1836      EasyStore.Currencies.convertAll() 
1837    }
1838
1839    document.querySelectorAll('.currency-picker').forEach((el)=>{
1840      el.addEventListener('change',(event)=>{
1841        EasyStore.Currencies.change(event.target.value)
1842
1843        
1844          if (page_template == 'cart') {
1845            const params = new URLSearchParams(window.location.search);
1846            params.set('delete_cache', 1);
1847            window.location.search = params;
1848          } else {
1849            window.location.reload();
1850          }
1851
1852          return
1853        
1854
1855        document.querySelectorAll('[name=currencies],[name=current_currency]').forEach((el)=>{
1856          el.value = event.target.value
1857        })
1858
1859        if(page_template == 'cart') location.reload();
1860      })
1861    })
1862  </script>
1862
1863
1864
1865
1866
1867  
1867<script>
1868
1869    window.variantStrings = {
1870      addToCart: `Add to Cart`,
1871      soldOut: `Sold Out`,
1872      unavailable: `Unavailable`,
1873    }
1874
1875    window.accessibilityStrings = {
1876      shareSuccess: `Link copied to clipboard`,
1877    }
1878  </script>
1878
1879  
1879<script>
1880
1881  /*
1882
1883    ------
1884    Events
1885    ------
1886
1887    pages/viewed
1888
1889    customers/signup
1890
1891    customers/login
1892
1893    products/searched
1894
1895    collections/viewed
1896
1897    products/viewed
1898
1899    products/shared
1900
1901    wishlists/item_added
1902
1903    carts/items_added
1904
1905    carts/viewed
1906
1907    carts/item_removed
1908
1909    checkouts/initiated
1910
1911    checkouts/shipping_info_added
1912
1913    checkouts/payment_info_added
1914
1915    checkouts/completed
1916
1917    orders/placed
1918
1919    orders/purchased
1920
1921    payments/captured
1922
1923    payments/failed
1924
1925  */
1926
1927  window.__latest_cart = window.__latest_cart || null;
1928
1929  const _selector = document.querySelector.bind(document),
1930        _selectorAll = document.querySelectorAll.bind(document)
1931
1932  document.addEventListener('DOMContentLoaded', (event) => {
1933
1934    const default_currency = getCookie("currency")
1935    const customer_id = window.__st.cid
1936    const template    = window.__st.p
1937
1938    onPageView()
1939
1940    //-----------------------//
1941    //        Configs        //
1942    //-----------------------//
1943
1944    window.dataLayer = window.dataLayer || []
1945
1946    Array.prototype.last = Array.prototype.last || function() {
1947      return this[this.length - 1] || null
1948    }
1949
1950    Array.prototype.first = Array.prototype.first || function() {
1951      return this[0] || null
1952    }
1953
1954    //----------------------//
1955    //       Triggers       //
1956    //----------------------//
1957
1958    const XHR = window.XMLHttpRequest
1959
1960    function xhr() {
1961
1962      const xhr = new XHR()
1963
1964      xhr.addEventListener("readystatechange", function() {
1965
1966        if(xhr.readyState != 4) return
1967
1968        try {
1969
1970          const response_url = xhr.responseURL
1971
1972          if (response_url.includes("cart/add")) {
1973
1974            window.__latest_cart = JSON.parse(xhr.response)
1975
1976            onCartItemsAdded() // ok
1977
1978          }
1979
1980          if (response_url.includes("cart/remove_item_quantity")) {
1981
1982            window.__latest_cart = JSON.parse(xhr.response)
1983
1984            onCartItemRemoved() // ok
1985
1986          }
1987
1988          if (response_url.includes("new_cart?retrieve=true")) {
1989
1990            result = JSON.parse(xhr.response)
1991
1992            if (result.cart) {
1993              window.__latest_cart = result.cart
1994            }
1995
1996          }
1997
1998        } catch(e) {
1999
2000          console.error(e)
2001
2002        }
2003
2004      }, false);
2005
2006      return xhr
2007
2008    }
2009
2010    window.XMLHttpRequest = xhr
2011
2012    switch(template) {
2013
2014      case 'cart': onCartView() // ok
2015      break
2016      case 'product': onProductView() // ok
2017      break
2018      case 'collection': onCollectionView() // ok
2019      break
2020      case 'blog': onBlogView()
2021      break
2022      case 'article': onArticleView()
2023      break
2024      case 'payment_completed': onOrderPlace()
2025      break
2026      case 'payment_fail': onPaymentFail()
2027      break
2028
2029    }
2030
2031    // _selector('form[action="/checkout/payments"]').addEventListener("submit", onPaymentInfoAdded(_selector('form[action="/checkout/payments"]')))
2032    if (_selector('form[action="/checkout/detail"]'))                            _selector('form[action="/checkout/detail"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/detail"]'))})  // ok
2033    if (_selector('form[action="/checkout/shipping"]'))                          _selector('form[action="/checkout/shipping"]').addEventListener("submit", ()=>{onShippingInfoAdded(_selector('form[action="/checkout/shipping"]'))})  // ok
2034    if (_selector('form[action="/account/register"]'))                           _selector('form[action="/account/register"]').addEventListener("submit", onSignUp)  // ok
2035    if (_selector('form[action="/account/login"]'))                              _selector('form[action="/account/login"]').addEventListener("submit", onLogin)  // ok
2036    if (_selector('form[action="/search"]'))                                     _selector('form[action="/search"]').addEventListener("submit", onProductSearch()) // ok
2037    if (_selector('#line-login-btn'))                                            _selector('#line-login-btn').addEventListener('click', onLineLogin) // ok
2038    if (_selector('#PlaceOrder'))                                                _selector('#PlaceOrder').addEventListener("click", ()=>{onCheckoutComplete(_selector('form[action="/checkout/payments"]'))});  // ok
2039    if (_selector('#add_wishlist'))                                              _selector('#add_wishlist').addEventListener("click", onWishlistItemAdded) // ok
2040    if (_selectorAll('a[href="/account/logout"]'))                               _selectorAll('a[href="/account/logout"]').forEach(logoutButton => logoutButton.addEventListener("click", onLogout)) // ok
2041    if (_selector('.CartDrawerTrigger.cart-page-link'))                          _selector('.CartDrawerTrigger.cart-page-link').addEventListener("click", onCartView) // ok
2042    if (_selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link'))    _selector('.CartDrawerTrigger.cart-page-link.mobile-cart-page-link').addEventListener("click", onCartView) // ok
2043    if (_selectorAll('a[class^="share-"]'))                                      _selectorAll('a[class^="share-"]').forEach(shareButton => shareButton.addEventListener("click", ()=>{onProductShare(shareButton)}) ) // ok
2044    if (_selectorAll('[name$="checkout"]'))                                      _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
2045
2046    // For append elements
2047    const bodyMutationObserver = new MutationObserver(() => {
2048      if (_selector('#form__spc #PlaceOrder'))             _selector('#form__spc #PlaceOrder').addEventListener("click", onSinglePageCheckout) // ok
2049      if (_selectorAll('[name$="checkout"]'))              _selectorAll('[name$="checkout"]').forEach(checkoutButton => checkoutButton.addEventListener("click", onCheckoutInitiate))
2050    });
2051    bodyMutationObserver.observe(_selector("body"), {subtree: true, childList: true});
2052
2053    //------------------------------//
2054    //        Event handlers        //
2055    //------------------------------//
2056
2057    function onPageView() {
2058
2059      EasyStore.Event.dispatch('pages/viewed', {
2060        page: {
2061          type: template,
2062          title: document.title,
2063          description: _selector('meta[name=description]') ? _selector('meta[name=description]').getAttribute('content') : null,
2064          url: location.href,
2065        }
2066      })
2067
2068    }
2069
2070    function onSignUp() {
2071
2072      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
2073      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
2074
2075      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
2076
2077      let data = {}
2078
2079      if (email_regex.test(email_or_phone)) {
2080        data.method = 'email'
2081        data.email = email_or_phone
2082      }
2083
2084      if (phone_regex.test(email_or_phone)) {
2085        data.method = "phone"
2086        data.phone = email_or_phone
2087      }
2088
2089      if (!data.method) return
2090
2091      EasyStore.Event.dispatch('customers/signup', data)
2092
2093    }
2094
2095    function onLogin() {
2096
2097      const email_regex = new RegExp(/^[a-zA-Z0-9.!#$%&"*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/)
2098      const phone_regex = new RegExp(/^(\+?6?01)[0-46-9]-*[0-9]{7,8}$/)
2099
2100      const email_or_phone = _selector(`input[name="customer[email_or_phone]"]`).value.replace("+", "").replace(/\s+/, "")
2101
2102      let data = {}
2103
2104      if (email_regex.test(email_or_phone)) {
2105        data.method = 'email'
2106        data.email = email_or_phone
2107      }
2108
2109      if (phone_regex.test(email_or_phone)) {
2110        data.method = "phone"
2111        data.phone = email_or_phone
2112      }
2113
2114      if (!data.method) return
2115
2116      EasyStore.Event.dispatch('customers/login', data)
2117
2118    }
2119
2120    function onLineLogin() {
2121
2122      EasyStore.Event.dispatch('customers/login', { method: 'line' })
2123
2124    }
2125
2126    function onLogout() {
2127
2128      EasyStore.Event.dispatch('customers/logout', { customer_id })
2129
2130    }
2131
2132    function onBlogView() {
2133
2134      const blog = ""
2135
2136      EasyStore.Event.dispatch('blogs/viewed', { blog })
2137
2138    }
2139
2140    function onArticleView() {
2141
2142      const article = ""
2143
2144      EasyStore.Event.dispatch('articles/viewed', { article })
2145
2146    }
2147
2148    function onProductSearch() {
2149
2150      const query = _selector('input[name=q]').value
2151
2152      if (!query) return
2153
2154      EasyStore.Event.dispatch('products/searched', { query })
2155
2156    }
2157
2158    function onCollectionView() {
2159
2160      const collection = {"id":2439125,"handle":"feature-on-homepage","name":"Feature on homepage","title":"Feature on homepage","url":"\/collections\/feature-on-homepage","description":"","content":"","featured_image":{"src":null},"products":[{"id":11681465,"handle":"aged-domain-1","name":"Aged Domain 01","title":"Aged Domain 01","url":"\/products\/aged-domain-1","share_url":"https:\/\/vickyprahastra.easy.co\/products\/aged-domain-1","price":1200000,"price_min":"1200000.0","price_max":"1200000.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":53980369,"variants":[{"id":53980369,"title":"Default Title","sku":"AD01","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":72409724,"alt":"AGED DOMAIN (3)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","height":500,"width":500,"position":1,"type":"Images"},"price":120000000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null}],"selected_variant":{"id":53980369,"title":"Default Title","sku":"AD01","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":72409724,"alt":"AGED DOMAIN (3)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","height":500,"width":500,"position":1,"type":"Images"},"price":120000000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"first_available_variant":{"id":53980369,"title":"Default Title","sku":"AD01","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":72409724,"alt":"AGED DOMAIN (3)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","height":500,"width":500,"position":1,"type":"Images"},"price":120000000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"selected_or_first_available_variant":{"id":53980369,"title":"Default Title","sku":"AD01","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":72409724,"alt":"AGED DOMAIN (3)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","height":500,"width":500,"position":1,"type":"Images"},"price":120000000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","featured_image":{"id":72409724,"alt":"AGED DOMAIN (3)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","height":500,"width":500,"position":1,"type":"Images"},"secondary_image":{"alt":"","img_url":"","src":"","type":""},"images":[{"id":72409724,"alt":"AGED DOMAIN (3)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","height":500,"width":500,"position":1,"type":"Images"}],"media":[{"id":72409724,"alt":"AGED DOMAIN (3)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","height":500,"width":500,"position":1,"type":"Images"}],"featured_media":{"id":72409724,"alt":"AGED DOMAIN (3)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409724.png","height":500,"width":500,"position":1,"type":"Images"},"metafields":[],"expires":null,"published_at":"2024-04-06T11:52:00.000+08:00","created_at":"2024-04-06T11:52:53.000+08:00","is_wishlisted":null,"highlight":{"data":null,"state":null,"is_auto_generation_required":false},"common_questions":{"data":null,"state":null,"is_auto_generation_required":false}}
2160,{"id":11421661,"handle":"aged-domain","name":"Aged Domain 02","title":"Aged Domain 02","url":"\/products\/aged-domain","share_url":"https:\/\/vickyprahastra.easy.co\/products\/aged-domain","price":1300000,"price_min":"1300000.0","price_max":"1300000.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":52713846,"variants":[{"id":52713846,"title":"Default Title","sku":"AD02","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":72409745,"alt":"AGED DOMAIN (32)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","height":500,"width":500,"position":1,"type":"Images"},"price":130000000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null}],"selected_variant":{"id":52713846,"title":"Default Title","sku":"AD02","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":72409745,"alt":"AGED DOMAIN (32)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","height":500,"width":500,"position":1,"type":"Images"},"price":130000000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"first_available_variant":{"id":52713846,"title":"Default Title","sku":"AD02","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":72409745,"alt":"AGED DOMAIN (32)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","height":500,"width":500,"position":1,"type":"Images"},"price":130000000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"selected_or_first_available_variant":{"id":52713846,"title":"Default Title","sku":"AD02","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":72409745,"alt":"AGED DOMAIN (32)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","height":500,"width":500,"position":1,"type":"Images"},"price":130000000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","featured_image":{"id":72409745,"alt":"AGED DOMAIN (32)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","height":500,"width":500,"position":1,"type":"Images"},"secondary_image":{"alt":"","img_url":"","src":"","type":""},"images":[{"id":72409745,"alt":"AGED DOMAIN (32)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","height":500,"width":500,"position":1,"type":"Images"}],"media":[{"id":72409745,"alt":"AGED DOMAIN (32)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","height":500,"width":500,"position":1,"type":"Images"}],"featured_media":{"id":72409745,"alt":"AGED DOMAIN (32)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409745.png","height":500,"width":500,"position":1,"type":"Images"},"metafields":[],"expires":null,"published_at":"2024-02-21T11:28:00.000+08:00","created_at":"2024-02-21T11:28:49.000+08:00","is_wishlisted":null,"highlight":{"data":null,"state":null,"is_auto_generation_required":false},"common_questions":{"data":null,"state":null,"is_auto_generation_required":false}},{"id":11880747,"handle":"aged-domain-2","name":"Aged Domain 03","title":"Aged Domain 03","url":"\/products\/aged-domain-2","share_url":"https:\/\/vickyprahastra.easy.co\/products\/aged-domain-2","price":1350000,"price_min":"1350000.0","price_max":"1350000.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":54955424,"variants":[{"id":54955424,"title":"Default Title","sku":"AD03","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":72409750,"alt":"AGED DOMAIN (4)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","height":500,"width":500,"position":1,"type":"Images"},"price":135000000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null}],"selected_variant":{"id":54955424,"title":"Default Title","sku":"AD03","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":72409750,"alt":"AGED DOMAIN (4)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","height":500,"width":500,"position":1,"type":"Images"},"price":135000000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"first_available_variant":{"id":54955424,"title":"Default Title","sku":"AD03","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":72409750,"alt":"AGED DOMAIN (4)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","height":500,"width":500,"position":1,"type":"Images"},"price":135000000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"selected_or_first_available_variant":{"id":54955424,"title":"Default Title","sku":"AD03","taxable":false,"barcode":null,"available":true,"inventory_quantity":null,"infinite_stock":true,"featured_image":{"id":72409750,"alt":"AGED DOMAIN (4)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","height":500,"width":500,"position":1,"type":"Images"},"price":135000000,"compare_at_price":0,"is_enabled":true,"options":["Default Title"],"option1":"Default Title","option2":null,"option3":null},"img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","featured_image":{"id":72409750,"alt":"AGED DOMAIN (4)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","height":500,"width":500,"position":1,"type":"Images"},"secondary_image":{"alt":"","img_url":"","src":"","type":""},"images":[{"id":72409750,"alt":"AGED DOMAIN (4)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","height":500,"width":500,"position":1,"type":"Images"}],"media":[{"id":72409750,"alt":"AGED DOMAIN (4)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","height":500,"width":500,"position":1,"type":"Images"}],"featured_media":{"id":72409750,"alt":"AGED DOMAIN (4)","img_url":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","src":"https:\/\/cdn.store-assets.com\/s\/868639\/i\/72409750.png","height":500,"width":500,"position":1,"type":"Images"},"metafields":[],"expires":null,"published_at":"2024-05-09T08:10:00.000+08:00","created_at":"2024-05-09T08:10:16.000+08:00","is_wishlisted":null,"highlight":{"data":null,"state":null,"is_auto_generation_required":false},"common_questions":{"data":null,"state":null,"is_auto_generation_required":false}}],"sort_by":"featured","product_count":3,"cache_source":"live_api"}
2161
2162      EasyStore.Event.dispatch('collections/viewed', { collection })
2163
2164    }
2165
2166    function onProductView() {
2167
2168      const product = ""
2169
2170      EasyStore.Event.dispatch("products/viewed", { product })
2171
2172    }
2173
2174    function onProductShare(el) {
2175
2176      const product = ""
2177
2178      const channel = el.getAttribute("class").split("-").last()
2179
2180      EasyStore.Event.dispatch('products/shared', { product, channel })
2181
2182    }
2183
2184    function onWishlistItemAdded() {
2185
2186      let product  = ""
2187      const quantity = _selector("#Quantity").value
2188
2189      EasyStore.Event.dispatch('wishlists/item_added', { product })
2190
2191    }
2192
2193    async function onCartItemsAdded() {
2194
2195      const cart = await getCart()
2196
2197      if(cart && cart.items != undefined && cart.items.length > 0) {
2198
2199        EasyStore.Event.dispatch('carts/item_added', { cart })
2200
2201      }
2202
2203    }
2204
2205    async function onCartView() {
2206
2207      const cart = await getCart()
2208
2209      EasyStore.Event.dispatch('carts/viewed', { cart })
2210
2211    }
2212
2213    async function onCartItemRemoved() {
2214
2215      const cart = await getCart()
2216
2217      cart.items = []
2218
2219      if(cart) {
2220
2221        EasyStore.Event.dispatch('carts/item_removed', { cart })
2222
2223      }
2224
2225    }
2226
2227    async function onCheckoutInitiate() {
2228
2229      const cart = await getCart()
2230
2231      EasyStore.Event.dispatch('checkouts/initiated', { cart })
2232
2233    }
2234
2235    async function onShippingInfoAdded(form) {
2236      let checkout = getCheckout()
2237
2238      let form_data = {}
2239      new FormData(form).forEach((value, key) => form_data[key] = value)
2240
2241      let shipping_tier = null
2242
2243      if (form_data.type && form_data.type.startsWith("r_pickup")) {
2244        shipping_tier = `Pickup - ${form_data.pick_location}`
2245      }
2246
2247      if (form_data.s_id) {
2248        shipping_tier = _selector(`input[id='`+form_data.s_id+`']`).getAttribute("data-shipping-name")
2249      }
2250
2251      if (!shipping_tier) return
2252
2253      EasyStore.Event.dispatch('checkouts/shipping_info_added', { checkout, shipping_tier })
2254
2255    }
2256
2257    async function onPaymentInfoAdded(form) {
2258
2259      let checkout = getCheckout()
2260
2261      let payment_type = new FormData(form).get('payment_method')
2262
2263      EasyStore.Event.dispatch("checkouts/payment_info_added", { checkout, payment_type })
2264
2265    }
2266
2267    async function onOrderPlace() {
2268
2269      let cart_token  = getCookie("cart_js")
2270      let previous_cart_token = getCookie("previous_cart_ga4_js")
2271
2272      if (previous_cart_token && previous_cart_token == cart_token) {
2273        // Prevent duplicate purchase tracking
2274        return
2275      }
2276
2277      let order = getOrder()
2278
2279      EasyStore.Event.dispatch('orders/placed', { order })
2280
2281      if(order.is_manual_payment) {
2282
2283        EasyStore.Event.dispatch('orders/purchased', { order })
2284
2285      }
2286
2287      const last_transaction = order.transactions.last()
2288
2289      if (last_transaction.status) {
2290
2291        EasyStore.Event.dispatch('orders/purchased', { order })
2292        EasyStore.Event.dispatch('payments/captured', { order })
2293
2294      }
2295
2296    }
2297
2298    async function onPaymentFail() {
2299
2300      const order = getOrder()
2301
2302      EasyStore.Event.dispatch('payments/failed', { order })
2303
2304    }
2305
2306    async function onCheckoutComplete(form) {
2307
2308      onPaymentInfoAdded(form)
2309
2310      const checkout = getCheckout()
2311
2312      EasyStore.Event.dispatch('checkouts/completed', { checkout })
2313
2314    }
2315
2316    async function onSinglePageCheckout() {
2317
2318      // let checkout = $("[data-app-checkout]").data("app-checkout")
2319
2320      let checkout = getCheckout()
2321
2322      // const payment_type = _selector("#app_spc_payment_method").find(`[class*="label-content"]`).first().find("b").first().text()
2323      const payment_type = _selector("#app_spc_payment_method").getElementsByClassName('label-content')[0].getElementsByTagName('b')[0].innerHTML
2324
2325      const shipping_method = _selector("#delivery_method").value
2326
2327      let shipping_tier = null
2328      let app_spc_customer_info_label = _selector("#app_spc_customer_info").getElementsByClassName('label-content')
2329      if (shipping_method == "shipping") {
2330        shipping_tier = app_spc_customer_info_label[app_spc_customer_info_label.length - 1].getElementsByTagName('b')[0].innerHTML
2331      }
2332
2333      if (shipping_method == "pickup") {
2334        shipping_tier = app_spc_customer_info_label[0].innerHTML
2335      }
2336
2337      if (shipping_tier) {
2338
2339        EasyStore.Event.dispatch('checkouts/shipping_info_added', {
2340          checkout,
2341          shipping_tier,
2342        })
2343
2344      }
2345
2346      if (payment_type) {
2347
2348        EasyStore.Event.dispatch('checkouts/payment_info_added', {
2349          checkout,
2350          payment_type,
2351        })
2352
2353      }
2354
2355      EasyStore.Event.dispatch('checkouts/completed', { checkout })
2356
2357    }
2358
2359  })
2360
2361
2362  //-----------------------//
2363  //       Functions       //
2364  //-----------------------//
2365
2366  function getCookie(name) {
2367
2368    name += "="
2369
2370    decodedCookie = decodeURIComponent(document.cookie)
2371
2372    ca = decodedCookie.split(";")
2373
2374    for(i = 0; i < ca.length; i++) {
2375      c = ca[i]
2376      while (c.charAt(0) == " ") {
2377        c = c.substring(1)
2378      }
2379      if (c.indexOf(name) == 0) {
2380        return c.substring(name.length, c.length)
2381      }
2382    }
2383
2384    return ""
2385
2386  }
2387
2388  const parsePrice = price => {
2389    if(typeof price === 'string') {
2390      return parseFloat(price.split(',').join(''))
2391    }
2392
2393    return price
2394  }
2395
2396  const requestCart = async (method, data) => {
2397
2398  let response = await fetch('/cart.json', {method: 'GET',headers: {'Content-Type': 'application/json'}})
2399    result = await response.json()
2400
2401    return result.cart
2402
2403  }
2404  const getCart = async (latest = false) => {
2405
2406    let cart = window.__latest_cart
2407
2408    const cart_invalid = !cart || !cart.items || (cart.total_price > 0 && !cart.items.length)
2409
2410    if(latest || cart_invalid) {
2411      cart = await requestCart()
2412    }
2413
2414    cart.items = cart.items || []
2415
2416    return mapCart(cart)
2417
2418  }
2419
2420  const getCheckout = async () => {
2421    mapCheckout(window.__latest_cart || await requestCart())
2422  }
2423
2424  const getOrder = async () => {
2425    mapOrder(window.__latest_cart || await requestCart())
2426  }
2427
2428  //-----------------------//
2429  //        Mappers        //
2430  //-----------------------//
2431
2432  const fallbackAttribute = (object, attribute) => {
2433
2434    if(!Array.isArray(attribute)) {
2435      attribute = [attribute]
2436    }
2437
2438    let final_value = null
2439
2440    do {
2441
2442      final_value = object[attribute.shift()]
2443
2444    } while(!final_value && attribute.length)
2445
2446    return final_value
2447
2448  }
2449
2450  const map = (object, mapper) => {
2451
2452    const newObject = {}
2453
2454    for(const key in mapper) {
2455
2456      // Handle different keys between new and old format
2457      newObject[key] = fallbackAttribute(object, mapper[key])
2458
2459      // Cast price to float
2460      if(newObject[key] && ['price', 'amount', 'discount', 'discounts'].some(x => key.endsWith(x))) {
2461        newObject[key] = parsePrice(newObject[key])
2462      }
2463
2464      if(newObject[key] === undefined) {
2465        delete newObject[key]
2466      }
2467
2468    }
2469
2470    return newObject
2471
2472  }
2473
2474  const mapCart = cart => {
2475
2476    const oldCart = cart
2477
2478    const mapper = {
2479      id: 'id',
2480      currency: 'currency',
2481      item_count: 'item_count',
2482      items: 'items',
2483      total_price: 'total_price',
2484      latest_items: 'latest_items'
2485    }
2486
2487    cart = map(cart, mapper)
2488
2489    const discounts = (oldCart.storewide_discounts || []).concat((oldCart.voucher_discounts || []))
2490
2491    cart.discount_applications = discounts.map(discount => ({
2492      title: discount.voucher_code || null,
2493      value: parsePrice(discount.amount),
2494    }))
2495
2496    cart.original_total_price = cart.items.length
2497    ? cart.items
2498      .map(item => item.original_price)
2499      .reduce((sum, price) => sum + price)
2500    : 0
2501
2502    cart.total_discount = cart.discount_applications.length
2503    ? cart.discount_applications
2504      .map(discount => parsePrice(discount.value))
2505      .reduce((sum, value) => sum + value)
2506    : 0
2507
2508    cart.items = cart.items.map(item => mapLineItem(item))
2509
2510    return cart
2511
2512  }
2513
2514  const mapCheckout = checkout => {
2515
2516    const mapper = {
2517      note: 'note',
2518      attributes: 'note_attributes',
2519      billing_address: 'billing_address',
2520      currency: 'currency',
2521      customer_id: 'customer_id',
2522      discounts_amount: 'total_discount',
2523      id: 'id',
2524      line_items: 'order_item',
2525      order_number: 'order_number',
2526      shipping_address: 'shipping_address',
2527      shipping_price: 'shipping_tax',
2528      shipping_method: 'shipping_method_name',
2529      tax_price: 'total_tax',
2530    }
2531
2532    checkout = map(checkout, mapper)
2533
2534    checkout.requires_shipping = checkout.line_items.some(item => item.shipping_required)
2535
2536    checkout.line_items = checkout.line_items.map(item => mapLineItem(item))
2537
2538    return checkout
2539
2540  }
2541
2542  const mapOrder = order => {
2543
2544    const mapper = {
2545      attributes: 'note_attributes',
2546      billing_address: 'billing_address',
2547      cancelled: 'is_cancelled',
2548      cancelled_at: 'cancelled_at',
2549      created_at: 'created_at',
2550      customer_id: 'customer_id',
2551      // discount_applications: 'discount_applications',
2552      email: 'email',
2553      financial_status: 'financial_status',
2554      fulfillment_status: 'fulfillment_status',
2555      line_items: 'order_item',
2556      note: 'note',
2557      order_number: 'order_number',
2558      phone: 'phone',
2559      shipping_address: 'shipping_address',
2560      shipping_methods: 'shipping_methods',
2561      shipping_price: 'total_shipping',
2562      subtotal_price: 'subtotal_price',
2563      // tax_lines: 'tax_lines',
2564      tax_price: 'total_tax',
2565      total_discounts: 'total_discount',
2566      total_net_amount: 'total_amount_include_transaction',
2567      total_price: 'total_price',
2568      transactions: 'transaction_records',
2569      is_manual_payment: 'is_manual_payment',
2570    }
2571
2572    order.email = order.billing_address.email
2573    order.phone = order.billing_address.phone
2574    order.shipping_method = order.shipping_method_name
2575
2576    order = map(order, mapper)
2577
2578    order.line_items = order.line_items.map(item => mapLineItem(item))
2579    order.transactions = order.transactions.map(transaction => mapTransaction(transaction))
2580
2581    return order
2582
2583  }
2584
2585  const mapLineItem = line_item => {
2586
2587    const old_line_item = line_item
2588
2589    const mapper = {
2590      final_price: 'price',
2591      image: 'img_url',
2592      message: 'message',
2593      original_line_price: 'original_line_price',
2594      original_price: 'original_price',
2595      properties: 'properties',
2596      quantity: 'quantity',
2597      requires_shipping: 'shipping_required',
2598      sku: 'sku',
2599      taxable: 'taxable',
2600      title: 'product_name',
2601      product_name: 'product_name',
2602      url: 'url',
2603      product_id: 'product_id',
2604      variant_id: 'variant_id',
2605      id: ['id', 'i_id'],
2606    }
2607
2608    line_item = map(line_item, mapper)
2609
2610    line_item.product_id = line_item.product_id || (old_line_item.product && old_line_item.product.id) || null
2611    line_item.variant_id = line_item.variant_id || (old_line_item.variant && old_line_item.variant.id) || null
2612    line_item.image      = line_item.image || (old_line_item.image && old_line_item.image.url) || null
2613
2614    return line_item
2615
2616  }
2617
2618  const mapTransaction = transaction => {
2619
2620    const mapper = {
2621      amount: 'amount',
2622      created_at: 'created_at',
2623      gateway: 'gateway_type',
2624      id: 'id',
2625      status: 'status',
2626    }
2627
2628    transaction = map(transaction, mapper)
2629
2630    return transaction
2631
2632  }
2633
2634
2635</script>
2635
2636
2637</body>
2638</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.