PageSourceSearch

https://h2h.dayswithdyslexia.com/assets/projects/user_pages/cart-NKDRZHOX.js

js dayswithdyslexia.com collected 2026-10-04 20:37:07 UTC 13,199 bytes, 281 lines download raw bytes

1import {
2  init_modal_sidebar_v1
3} from "./chunk-MO2D3CXO.js";
4import {
5  Cart,
6  closeCart,
7  hasPendingOperations,
8  init_Cart,
9  syncingCart
10} from "./chunk-BY72GGKB.js";
11import "./chunk-KIZY5IRN.js";
12import {
13  CF2Component,
14  init_runtime,
15  registerComponent
16} from "./chunk-NQUHJ6NR.js";
17import {
18  init_define_process
19} from "./chunk-RFSPGZ3L.js";
20
21// projects/lib/packages/yggdrasil-blueprints/__generated__/packs/cart.ts
22init_define_process();
23
24// projects/lib/packages/yggdrasil-blueprints/__generated__/blueprints/cart-review.ts
25init_define_process();
26init_Cart();
27init_runtime();
28var CartReview = class extends CF2Component {
29  constructor(el, runtimeSel) {
30    super(el, runtimeSel);
31  }
32  disableCheckoutButton(disable = true) {
33    this.disableCheckout = disable;
34    const checkoutButtonEl = this.element.querySelector(".elCartReviewCheckoutButton > a");
35    checkoutButtonEl?.setAttribute("data-disabled", disable);
36  }
37  hideSubtotalAmount(hide = true) {
38    const subtotalTextEl = this.element.querySelector(".elCartReviewSubtotalText");
39    if (subtotalTextEl && hide) {
40      subtotalTextEl.innerText = "--";
41    }
42  }
43  mount() {
44    Cart.stores.cartData.listen((cartData) => {
45      this.render(cartData);
46      if (cartData.items.length == 0) {
47        closeCart();
48      }
49      this.disableCheckoutButton(this.disableCheckout);
50    });
51    syncingCart.listen(() => {
52      this.disableCheckoutButton(hasPendingOperations());
53      this.hideSubtotalAmount(hasPendingOperations());
54    });
55    this.element.addEventListener("click", (evt) => {
56      const closestItemEl = evt.target.closest(".elCartReviewItemWrapper");
57      if (!closestItemEl) return true;
58      const lineItem = Cart.findItemByUniqueId(closestItemEl.dataset.lineItemUniqueId);
59      if (!lineItem) return;
60      const minusButtontEl = closestItemEl.querySelector(".elCartReviewItemQuantityMinus");
61      const plusButtonEl = closestItemEl.querySelector(".elCartReviewItemQuantityPlus");
62      const removeButtonEl = closestItemEl.querySelector(".elCartReviewItemRemove");
63      if (minusButtontEl.contains(evt.target) || minusButtontEl === evt.target) {
64        const op = Cart.decrementOperation(lineItem);
65        if (op) this.disableCheckoutButton();
66      } else if (plusButtonEl.contains(evt.target) || plusButtonEl === evt.target) {
67        const op = Cart.incrementOperation(lineItem);
68        if (op) this.disableCheckoutButton();
69      } else if (removeButtonEl.contains(evt.target) || removeButtonEl === evt.target) {
70        const op = Cart.removeOperation(lineItem);
71        if (op) this.disableCheckoutButton();
72      }
73    });
74    this.element.addEventListener("focusout", (evt) => {
75      if (!evt.target.classList.contains("elCartReviewItemQuantityInput")) return true;
76      const closestItemEl = evt.target.closest(".elCartReviewItemWrapper");
77      if (!closestItemEl) return true;
78      const lineItem = Cart.findItemByUniqueId(closestItemEl.dataset.lineItemUniqueId);
79      if (!lineItem) return;
80      const newQuantity = Number(evt.target.value);
81      if (newQuantity !== lineItem.quantity) {
82        const op = Cart.upsertOperation(lineItem, newQuantity);
83        if (op) {
84          this.disableCheckoutButton();
85        } else {
86          evt.target.value = lineItem.quantity;
87        }
88      }
89    });
90    this.element.addEventListener("keydown", (evt) => {
91      if (!(evt.keyCode > 95 && evt.keyCode < 106 || evt.keyCode > 47 && evt.keyCode < 58 || evt.keyCode > 36 && evt.keyCode < 41 || evt.keyCode == 8)) {
92        evt.preventDefault();
93      }
94    });
95  }
96  remove() {
97    this.element.innerHTML = "";
98  }
99  render(initializeChildrenInstances = false) {
100    const is_server = true;
101    const items = this.items ?? [];
102    const button_layout_size = this.button_layout_size ?? null;
103    const display_price_subtotals = this.display_price_subtotals ?? null;
104    const header_text = this.element.getAttribute("data-param-header_text");
105    const continue_shopping_text = this.element.getAttribute("data-param-continue_shopping_text");
106    const checkout_text = this.element.getAttribute("data-param-checkout_text");
107    const remove_text = this.element.getAttribute("data-param-remove_text");
108    const empty_cart_title = this.element.getAttribute("data-param-empty_cart_title");
109    const empty_cart_desc = this.element.getAttribute("data-param-empty_cart_desc");
110    const editorPreviewBlankCart = this.element.getAttribute("data-param-editorPreviewBlankCart");
111    const continue_shopping_action = this.element.getAttribute("data-param-continue_shopping_action");
112    let html = "";
113    {
114      html += `<div class="elCartReviewItems">`;
115      const items2 = globalResourceData?.cart?.items;
116      const cart_summary = globalResourceData?.cart?.summary;
117      if (items2?.length == 0) {
118        html += `<div class="elCartReviewEmpty"><i class="fas fa-cart-plus"></i><div class="elCartReviewEmptyTextWrapper"><span class="elCartReviewEmptyTitle">${empty_cart_title}</span><span class="elCartReviewEmptyDesc">${empty_cart_desc}</span></div></div>`;
119      } else {
120        const c0 = items2;
121        const fl1 = new CF2ForloopDrop(c0.length);
122        for (const item of c0) {
123          const forloop = fl1;
124          const line_item_unique_id = item?.product_id.toString().concat("-").toString().concat(item.variant_id).toString().concat("-").toString().concat(item.price_id);
125          html += `<div class="elCartReviewItemWrapper" data-line-item-unique-id="${line_item_unique_id}">`;
126          const product = globalResourceData?.productsById?.[item?.product_id];
127          const variant = globalResourceData?.variantsById?.[item?.variant_id];
128          const price = globalResourceData?.pricesById?.[item?.price_id];
129          const image_url = variant?.image ?? product.image;
130          let variantNames = "";
131          const c2 = variant.property_value_ids;
132          const fl3 = new CF2ForloopDrop(c2.length);
133          for (const prop_id of c2) {
134            const forloop2 = fl3;
135            variantNames = variantNames.toString().concat(product.all_properties_values[prop_id]);
136            if (forloop2?.last == false) {
137              variantNames = variantNames.toString().concat(", ");
138            }
139            forloop2.next();
140          }
141          if (image_url && image_url != "") {
142            html += `<a class="elCartReviewImageLink" href="${product?.url}"><div data-page-element="Image/V2" class="elImageWrapper de-image-block id-Image/V2`;
143            if (CF2Blank(image_url) && CF2Blank(null) && true) {
144              html += ` forceHide`;
145            }
146            html += `" data-liquid-replace="item">`;
147            if (image_url || !CF2Blank(null)) {
148              html += `<img class="elImage" src="${image_url ?? null}" data-lazy-loading="true" data-lazy-loading="true"/>`;
149            } else if (false) {
150              html += `<div class="image-placeholder" title=""><span class="image-placeholder-header"></span></div>`;
151            }
152            html += `</div></a>`;
153          }
154          html += `<div class="elCartReviewItem"><div class="elCartReviewItemDetails"><div><span class="elCartReviewItemName"><a href="${product?.url}">${product?.name}</a></span>`;
155          if (variantNames && variantNames != "") {
156            html += `<span class="elCartReviewItemVariant">${variantNames}</span>`;
157          }
158          html += `</div><span class="elCartReviewItemPrice">${price?.name}</span></div><div class="elCartReviewItemActions"><div class="elCartReviewItemQuantity"><div class="elCartReviewItemQuantityMinus"><span>_</span></div><input class="elCartReviewItemQuantityInput" value="${item?.quantity}"/><div class="elCartReviewItemQuantityPlus"><span>+</span></div></div><span class="elCartReviewItemRemove">${remove_text}</span></div></div></div>`;
159          forloop.next();
160        }
161      }
162      if (display_price_subtotals && items2?.length > 0) {
163        html += `<div class="elCartReviewSubtotal"> Subtotal (${cart_summary?.total_quantity} items) <span class="elCartReviewSubtotalText">${cart_summary?.display_sub_total}</span></div>`;
164      }
165      html += `</div>`;
166      if (items2?.length > 0 && editorPreviewBlankCart != true) {
167        html += `<div data-page-element="Divider/V1" class="elDividerWrapper id-Divider/V1"><div class="elDivider"></div></div>`;
168      }
169      html += `<div class="elCartReviewButtonsWrapper">`;
170      if (continue_shopping_action != "hide") {
171        html += `<div data-page-element="Button/V1" class="elBTN elCartReviewContinueShoppingButton id-Button/V1`;
172        if (button_layout_size == "xs") {
173          html += ` elCartReviewButtonExtraSmall`;
174        }
175        if (button_layout_size == "s") {
176          html += ` elCartReviewButtonSmall`;
177        }
178        if (button_layout_size == "m") {
179          html += ` elCartReviewButtonMedium`;
180        }
181        if (button_layout_size == "l") {
182          html += ` elCartReviewButtonLarge`;
183        }
184        if (button_layout_size == "xl") {
185          html += ` elCartReviewButtonExtraLarge`;
186        }
187        html += `" data-liquid-replace="item">`;
188        const label_key = (continue_shopping_action ?? "empty").replace(/[^a-zA-Z0-9]/g, "").toLowerCase();
189        const label_key_slice = label_key.slice(0, 6);
190        let data_content_key = "";
191        if (label_key_slice == "scroll") {
192          data_content_key = "scroll";
193        } else {
194          data_content_key = label_key;
195        }
196        html += `<a target="_self" href="${continue_shopping_action}" class="elButton" aria-label="" data-disabled="false" data-show-button-ids="" data-hide-button-ids="" data-on-submit-go-to="" data-param-submittingText="Submitting..." data-content="" data-style-guide-button="" rel="noopener"><span class="elButtonMain"><i class="fas fa-spinner fa-spin elButtonSpinner elButtonText"></i><span class="elButtonMainText elButtonText">${continue_shopping_text}</span></span><span class="elButtonSub"></span></a></div>`;
197      }
198      if (items2?.length > 0 && editorPreviewBlankCart != true) {
199        html += `<div data-page-element="Button/V1" class="elBTN elCartReviewCheckoutButton id-Button/V1`;
200        if (button_layout_size == "xs") {
201          html += ` elCartReviewButtonExtraSmall`;
202        }
203        if (button_layout_size == "s") {
204          html += ` elCartReviewButtonSmall`;
205        }
206        if (button_layout_size == "m") {
207          html += ` elCartReviewButtonMedium`;
208        }
209        if (button_layout_size == "l") {
210          html += ` elCartReviewButtonLarge`;
211        }
212        if (button_layout_size == "xl") {
213          html += ` elCartReviewButtonExtraLarge`;
214        }
215        html += `" data-liquid-replace="item">`;
216        const label_key = "storescheckout";
217        const label_key_slice = "stores";
218        let data_content_key = "";
219        data_content_key = "storescheckout";
220        html += `<a target="_self" href="/stores/checkout" class="elButton" aria-label="" data-disabled="false" data-show-button-ids="" data-hide-button-ids="" data-on-submit-go-to="" data-param-submittingText="Submitting..." data-content="" data-style-guide-button="" rel="noopener"><span class="elButtonMain"><i class="fas fa-spinner fa-spin elButtonSpinner elButtonText"></i><span class="elButtonMainText elButtonText">${checkout_text}</span></span><span class="elButtonSub"></span></a></div>`;
221      }
222      html += `</div>`;
223    }
224    this.replaceContent(html);
225    if (initializeChildrenInstances) {
226      const scopeToYggRender = this.element.querySelectorAll("[ygg-render]").length > 0;
227      const options = { scopeToYggRender };
228      CF2Component.hydrateTree(this.element, options);
229    }
230  }
231};
232registerComponent("CartReview", CartReview);
233window["CartReview"] = CartReview;
234
235// projects/lib/packages/yggdrasil-blueprints/__generated__/blueprints/cart-icon.ts
236init_define_process();
237init_Cart();
238init_runtime();
239var CartIcon = class extends CF2Component {
240  constructor(el, runtimeSel) {
241    super(el, runtimeSel);
242  }
243  mount() {
244    if (!(globalResourceData.resourceName === "checkout")) {
245      Cart.stores.cartData.listen((cartData) => {
246        this.updateCount(cartData);
247      });
248      this.updateCount(Cart.stores.cartData.get());
249    }
250  }
251  updateCount(cartData) {
252    this.element.querySelector(".elCartIcon").dataset.count = cartData.items.reduce((acc, item) => acc + item.quantity, 0);
253  }
254};
255registerComponent("CartIcon", CartIcon);
256window["CartIcon"] = CartIcon;
257
258// projects/lib/packages/yggdrasil-blueprints/__generated__/blueprints/cart-review-modal.ts
259init_define_process();
260init_modal_sidebar_v1();
261init_runtime();
262var CartReviewModal = class extends CF2Component {
263  constructor(el, runtimeSel) {
264    super(el, runtimeSel);
265  }
266  mount() {
267    const modal = this.getComponent("ModalSidebar/V1");
268    $(document).on("click", 'a[href="#open-cart"]', () => {
269      modal.show();
270    });
271    $(document).on("click", 'a[href="#close-cart"]', () => {
272      modal.hide();
273    });
274    if (window.location.hash == "#open-cart") {
275      modal.show();
276    }
277  }
278};
279registerComponent("CartReviewModal", CartReviewModal);
280window["CartReviewModal"] = CartReviewModal;
281//# sourceMappingURL=cart-NKDRZHOX.js.map

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.