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.