PageSourceSearch

https://www.ambertiles.com.au/cdn/shop/t/132/assets/wishlist-lists…?v=128866152416791940471789519972

js ambertiles.com.au collected 2026-09-29 22:26:14 UTC 2,849 bytes, 20 lines download raw bytes

1import{G as a}from"./global-events.CQo4HGo3.min.js";import{S as l}from"./swym-wishlist.C-6RhujL.min.js";const r={LIST_CONTAINER:'[data-selector="lists"]',FORM:'[data-selector="create-form"]',INPUT:"#wishlist-list-name",SUBMIT:'[data-selector="create-button"]',WISHLIST_EMPTY:'[data-selector="wishlist-empty"]'},n=new l;class o extends HTMLElement{constructor(){super(...arguments),this.initialized=!1,this.handleInput=()=>{this.updateSubmitState()},this.handleSubmit=async t=>{t.preventDefault();const e=this.input.value.trim();if(e){if(this.isDuplicateListName(e)){this.input.focus(),alert("Wishlist name already exists.");return}try{const i=await n.createList(e),s=this.listContainer.querySelector(r.WISHLIST_EMPTY);s&&s.remove(),this.listContainer.insertAdjacentHTML("beforeend",this.renderList(i)),this.input.value="",this.updateSubmitState()}catch(i){console.error(i)}}}}async connectedCallback(){this.cacheElements(),CHROMA.wishlist.fetched?await this.initializeOnce():window.addEventListener(a.wishlist.ready,()=>{this.initializeOnce()},{once:!0})}async initializeOnce(){this.initialized||(this.initialized=!0,this.bindEvents(),await this.loadLists())}cacheElements(){const t=this.querySelector(r.LIST_CONTAINER),e=this.querySelector(r.FORM),i=this.querySelector(r.INPUT),s=this.querySelector(r.SUBMIT);if(!t||!e||!i||!s)throw new Error("WishlistListsManager: Missing required elements.");this.listContainer=t,this.form=e,this.input=i,this.submitButton=s}bindEvents(){this.form.addEventListener("submit",this.handleSubmit),this.input.addEventListener("input",this.handleInput),this.updateSubmitState()}updateSubmitState(){this.submitButton.toggleAttribute("disabled",this.input.value.trim().length===0)}isDuplicateListName(t){const e=t.trim().toLowerCase();return(CHROMA.wishlist.lists??[]).some(i=>i.lname.trim().toLowerCase()===e)}async loadLists(){try{const t=await n.fetchLists();this.renderLists(t)}catch(t){console.error(t),this.renderEmpty()}}renderLists(t){if(!t.length){this.renderEmpty();return}this.listContainer.innerHTML=t.map(e=>this.renderList(e)).join("")}renderList(t){return`
2      <div class="flex items-center gap-6 border-b border-divider-primary py-6">
3        <div class="size-10 overflow-hidden bg-background-light">
4          <img
5            src="${t.listcontents?.find(s=>s.iu&&s.iu.trim()!=="")?.iu??CHROMA.shopify.defaultImage}"
6            class="size-full object-cover"
7            loading="lazy"
8          >
9        </div>
10        <div class="flex-1">
11          <p class="body-large-strong capitalize">
12            ${t.lname}
13          </p>
14        </div>
15      </div>
16    `}renderEmpty(){this.listContainer.innerHTML=`
17      <p data-selector="wishlist-empty" class="py-10 text-center body-medium text-secondary">
18        No wishlist found.
19      </p>
20    `}}customElements.define("wishlist-lists-manager",o);

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.