1!(function (e) { 2 "use strict"; 3 (window.StyleHatch = window.StyleHatch || {}), 4 (StyleHatch.Sections = function () { 5 (this.constructors = {}), 6 (this.instances = []), 7 e(document) 8 .on("shopify:section:load", this._onSectionLoad.bind(this)) 9 .on("shopify:section:unload", this._onSectionUnload.bind(this)) 10 .on("shopify:section:select", this._onSelect.bind(this)) 11 .on("shopify:section:deselect", this._onDeselect.bind(this)) 12 .on("shopify:section:reorder", this._onReorder.bind(this)) 13 .on("shopify:block:select", this._onBlockSelect.bind(this)) 14 .on("shopify:block:deselect", this._onBlockDeselect.bind(this)); 15 }), 16 (StyleHatch.Sections.prototype = e.extend({}, StyleHatch.Sections.prototype, { 17 _createInstance: function (t, a) { 18 var o = e(t), 19 n = o.attr("data-section-id"), 20 r = o.attr("data-section-type"); 21 if (((a = a || this.constructors[r]), "undefined" != typeof a)) { 22 var i = e.extend(new a(t), { id: n, type: r, container: t }); 23 this.instances.push(i); 24 } 25 }, 26 _onSectionLoad: function (t) { 27 var a = e("[data-section-id]", t.target)[0]; 28 a && this._createInstance(a); 29 }, 30 _onSectionUnload: function (e) { 31 var t = slate.utils.findInstance(this.instances, "id", e.detail.sectionId); 32 t && ("function" == typeof t.onUnload && t.onUnload(e), (this.instances = slate.utils.removeInstance(this.instances, "id", e.detail.sectionId))); 33 }, 34 _onSelect: function (t) { 35 var a = slate.utils.findInstance(this.instances, "id", t.detail.sectionId); 36 a && "function" == typeof a.onSelect && a.onSelect(t), 37 e("body").hasClass("panel-open") && 38 (StyleHatch.closePanelMenu(), 39 e("html, body").addClass("scroll-lock"), 40 setTimeout(function () { 41 e("html, body").removeClass("scroll-lock"), e("html, body").animate({ scrollTop: a.$container.offset().top }, 600); 42 }, 400)); 43 }, 44 _onDeselect: function (t) { 45 var a = slate.utils.findInstance(this.instances, "id", t.detail.sectionId); 46 a && "function" == typeof a.onDeselect && a.onDeselect(t), e("body").hasClass("panel-open") && StyleHatch.closePanelMenu(); 47 }, 48 _onReorder: function (e) { 49 var t = slate.utils.findInstance(this.instances, "id", e.detail.sectionId); 50 t && "function" == typeof t.onReorder && t.onReorder(e); 51 }, 52 _onBlockSelect: function (e) { 53 var t = slate.utils.findInstance(this.instances, "id", e.detail.sectionId); 54 t && "function" == typeof t.onBlockSelect && t.onBlockSelect(e); 55 }, 56 _onBlockDeselect: function (e) { 57 var t = slate.utils.findInstance(this.instances, "id", e.detail.sectionId); 58 t && "function" == typeof t.onBlockDeselect && t.onBlockDeselect(e); 59 }, 60 register: function (t, a) { 61 (this.constructors[t] = a), 62 e("[data-section-type=" + t + "]").each( 63 function (e, t) { 64 this._createInstance(t, a); 65 }.bind(this) 66 ); 67 }, 68 })), 69 (StyleHatch.cacheSelectors = function () { 70 StyleHatch.cache = { 71 $body: e("body"), 72 $html: e("html"), 73 $util: e("header.util"), 74 $header: e("header.site-header"), 75 $siteNav: e("header.site-header ul.site-nav"), 76 $featuredCollection: e(".featured-collection"), 77 $instagramCollection: e(".instagram-collection"), 78 $addToCartForm: e("#AddToCartForm"),
79 $addToCartButton: e("#AddToCart"), 80 $cartButton: e("#CartButton"), 81 $recoverPasswordLink: e("#RecoverPassword"), 82 $hideRecoverPasswordLink: e("#HideRecoverPasswordLink"), 83 $recoverPasswordForm: e("#RecoverPasswordForm"), 84 $customerLoginForm: e("#CustomerLoginForm"), 85 $passwordResetSuccess: e("#ResetSuccess"), 86 }; 87 }), 88 (StyleHatch.init = function () { 89 var e = document.documentElement; 90 e.setAttribute("data-useragent", navigator.userAgent), StyleHatch.cacheSelectors(), (StyleHatch.largeMobile = 700); 91 var t = new StyleHatch.Sections(); 92 t.register("promos-section", StyleHatch.PromosSection), 93 t.register("header-section", StyleHatch.HeaderSection), 94 t.register("footer-section", StyleHatch.FooterSection), 95 t.register("slideshow-section", StyleHatch.SlideshowSection), 96 t.register("hero-video-section", StyleHatch.HeroVideoSection), 97 t.register("featured-collection-section", StyleHatch.FeaturedCollectionSection), 98 t.register("simple-collection-section", StyleHatch.SimpleCollectionSection), 99 t.register("featured-text-section", StyleHatch.PageSection), 100 t.register("custom-content-section", StyleHatch.PageSection), 101 t.register("instagram-section", StyleHatch.InstagramSection), 102 t.register("featured-blog-section", StyleHatch.GenericSection), 103 t.register("map", StyleHatch.Maps), 104 t.register("product-template", StyleHatch.Product), 105 t.register("collection-template", StyleHatch.Collection), 106 t.register("collection-list-template", StyleHatch.Collection), 107 t.register("list-collections-template", StyleHatch.ListCollections), 108 t.register("blog-template", StyleHatch.BlogArticle), 109 t.register("article-template", StyleHatch.BlogArticle), 110 t.register("password-template", StyleHatch.Password), 111 t.register("cart-template", StyleHatch.Cart), 112 StyleHatch.currencyConverter && StyleHatch.CurrencyConverter.init(), 113 StyleHatch.ajaxCartEnable && StyleHatch.AjaxCart.init(), 114 StyleHatch.loginForms(), 115 StyleHatch.videoLayout(), 116 StyleHatch.initTemplates(); 117 }), 118 (StyleHatch.PromosSection = (function () { 119 function t(t) { 120 var a = (this.$container = e(t)); 121 a.attr("data-section-id"); 122 StyleHatch.Promos.init(); 123 } 124 return t; 125 })()), 126 (StyleHatch.PromosSection.prototype = e.extend({}, StyleHatch.PromosSection.prototype, { 127 onUnload: function () { 128 StyleHatch.Promos.unload(); 129 }, 130 onBlockSelect: function (e) { 131 StyleHatch.Promos.blockSelect(e); 132 }, 133 onBlockDeselect: function (e) { 134 StyleHatch.Promos.blockDeselect(e); 135 }, 136 })), 137 (StyleHatch.Promos = (function () { 138 function t() { 139 a(), (p.scrollLock = f.$promos.find(">*:first").data("scroll-lock")), o(), s(), StyleHatch.Header.rebuildFixTo(); 140 } 141 function a() { 142 f = { $body: e(u.body), $promos: e(u.promos), $promosContainer: e(u.promos).find(">*:first"), $promoBar: e(u.promoBar), $bottomContainer: e(u.bottomContainer), $popup: e(u.popup) }; 143 } 144 function o() { 145 f.$promoBar.length && 146 (f.$promoBar.each(function () { 147 var t = e(this), 148 a = t.data("hide-delay"), 149 o = t.data("bar-placement"), 150 n = t.find("div.errors"); 151 n.length && n.prependTo(t), 152 "bottom" == o && 153 (f.$bottomContainer.length || (f.$promosContainer.append('<div class="promo-bar-container bottom"></div>'), (f.$bottomContainer = e(u.bottomContainer))), 154 t.appendTo(f.$bottomContainer), 155 f.$bottomContainer.resize(function () { 156 var t = e(this).height() + "px"; 157 f.$body.css({ "margin-bottom": t }); 158 })), 159 t.hasClass("signup-bar") && t.showPopup(), 160 "no-delay" !== a && 161 p.hideTimers.push( 162 setTimeout(function () { 163 t.data("pause-hide") || t.promoSlideUp(); 164 }, a) 165 ); 166 }), 167 n(), 168 i()); 169 } 170 function n() { 171 f.$promos.data("fixtoInstance") && f.$promos.fixTo("destroy"); 172 } 173 function r() { 174 f.$promos.data("fixtoInstance") && f.$promos.fixTo("refresh"); 175 } 176 function i() { 177 p.scrollLock && f.$promos.fixTo(u.page, { zIndex: p.fixToZIndex }); 178 } 179 function s() { 180 f.$popup.length && 181 f.$popup.each(function () { 182 var t = e(this), 183 a = !0, 184 o = t.data("show-delay"), 185 n = (t.data("homepage-limit"), t.data("visitor-limit")), 186 r = t.data("visitor"), 187 i = t.data("show-for"); 188 1 == n && 0 == r && (a = !1); 189 var s = t.find(".errors"); 190 s.length && (o = 0); 191 setTimeout(function () { 192 var a = e(window).width(); 193 switch (i) { 194 case "mobile": 195 a <= StyleHatch.largeMobile && t.showPopup(); 196 break; 197 case "desktop": 198 a > StyleHatch.largeMobile && t.showPopup(); 199 break; 200 case "both": 201 t.showPopup(); 202 } 203 }, o); 204 }); 205 } 206 function l(t) { 207 var a = e("#block-" + t.detail.blockId), 208 o = a.data("type"); 209 switch ((e.magnificPopup.close(), o)) { 210 case "announcement-bar": 211 a.promoSlideDown(), a.attr("data-pause-hide", !0); 212 break; 213 case "popup": 214 a.showMockPopup(); 215 break; 216 case "signup-bar": 217 a.showPopup(!0); 218 } 219 StyleHatch.Header.rebuildFixTo(), StyleHatch.refreshFixTo(); 220 } 221 function c(t) { 222 var a = e("#block-" + t.detail.blockId), 223 o = a.data("type"), 224 n = a.data("show-for"), 225 r = e(window).width(); 226 switch (o) { 227 case "announcement-bar": 228 var i = a; 229 i.attr("data-pause-hide", !1);
230 var s = i.data("hide-delay"); 231 i.data("bar-placement"), i.data("homepage-limit"); 232 "desktop" == n && r <= StyleHatch.largeMobile ? a.promoSlideUp() : "mobile" == n && r > StyleHatch.largeMobile && a.promoSlideUp(), 233 "no-delay" !== s && 234 p.hideTimers.push( 235 setTimeout(function () { 236 i.data("pause-hide") || i.promoSlideUp(); 237 }, s) 238 ); 239 break; 240 case "popup": 241 a.hideMockPopup(); 242 break; 243 case "signup-bar": 244 "desktop" == n && r <= StyleHatch.largeMobile && (a.hidePopup(), StyleHatch.refreshFixTo()), "mobile" == n && r > StyleHatch.largeMobile && (a.hidePopup(), StyleHatch.refreshFixTo()); 245 } 246 StyleHatch.Header.rebuildFixTo(); 247 } 248 function d() { 249 if ("undefined" != typeof p.hideTimers && p.hideTimers instanceof Array) { 250 for (var t = 0; t < p.hideTimers.length; t++) clearTimeout(p.hideTimers[t]); 251 p.hideTimers.length = 0; 252 } else p.hideTimers = []; 253 n(), StyleHatch.refreshFixTo(), f.$bottomContainer.remove(), e.magnificPopup.close(); 254 } 255 var u = { body: "body", page: "#page", promos: "#shopify-section-promos", promoBar: "header.promo-bar", bottomContainer: ".promo-bar-container.bottom", popup: ".promo-popup" }, 256 p = {}; 257 p = { scrollLock: !1, fixToZIndex: 992, hideTimers: [], slideSpeed: 400 }; 258 var f = {}; 259 return ( 260 e.fn.extend({ 261 showPopup: function (t) { 262 var a = e(this), 263 o = !0, 264 n = (a.data("show-delay"), a.data("show-again-delay")), 265 r = a.data("homepage-limit"), 266 i = a.data("visitor-limit"), 267 s = a.data("visitor"), 268 l = (a.data("show-for"), a.data("type")), 269 c = a.data("id"); 270 1 == i && 0 == s && (o = !1); 271 var d = "popup-" + c; 272 e.cookie(d) && (o = !1), r && !f.$body.hasClass("template-index") && (o = !1), window.self !== window.top && "popup" == l && (o = !1), t && (o = !0); 273 var u = a.find(".errors"), 274 p = getQueryString("contact%5Btags%5D"); 275 if ((u.length && p.includes("popup") && ((o = !0), a.find("input#email").addClass("errors")), u.length && p.includes("signup-bar") && (o = !0), Modernizr.touchevents && a.find("form").removeAttr("target"), o)) { 276 "popup" == l && 277 e.magnificPopup.open({ 278 items: { src: a, type: "inline", showCloseBtn: !1 }, 279 mainClass: "mfp-slideup", 280 removalDelay: 300, 281 callbacks: { 282 close: function () { 283 e.cookie(d, "shown", { expires: n, path: "/" }); 284 }, 285 }, 286 }), 287 "signup-bar" == l && (t ? a.addClass("visible force") : a.addClass("visible")); 288 var h = a.find(".icon-text"); 289 h.on("click", function (e) { 290 a.hidePopup(), e.preventDefault(); 291 }); 292 var y = a.find("form"); 293 y.on("submit", function (t) { 294 return !!t.target.checkValidity() && (a.hidePopup(), void e(this).submit()); 295 }); 296 } 297 }, 298 hidePopup: function () { 299 var t = (e("#shopify-section-promos"), e(this)), 300 a = t.data("type"), 301 o = t.data("id"); 302 if (("popup" == a && e.magnificPopup.close(), "signup-bar" == a)) { 303 var n = "popup-" + o; 304 e.cookie(n, "shown", { expires: 60, path: "/" }), 305 e(".promo-bar.signup-bar").each(function (t) { 306 e(this).slideUp({ 307 duration: 400, 308 progress: function () { 309 StyleHatch.refreshFixTo(); 310 }, 311 complete: function () { 312 StyleHatch.refreshFixTo(), e(this).removeClass("visible force"); 313 }, 314 }); 315 }); 316 } 317 }, 318 promoSlideUp: function () { 319 e(this).slideUp({ duration: p.slideSpeed, progress: StyleHatch.refreshFixTo, complete: StyleHatch.refreshFixTo }); 320 }, 321 promoSlideDown: function () { 322 e(this).slideDown({ duration: p.slideSpeed, progress: StyleHatch.refreshFixTo, complete: StyleHatch.refreshFixTo }); 323 }, 324 showMockPopup: function () { 325 var t = e("#shopify-section-promos"); 326 e(".mock-popup-container").length || t.find(">*:first").append('<div class="mock-popup-container"></div>'); 327 var a = e(".mock-popup-container"), 328 o = e(this); 329 o.appendTo(a), a.show(), o.show(); 330 }, 331 hideMockPopup: function () { 332 var t = e(".mock-popup-container"), 333 a = e(this); 334 t.hide(), a.hide(); 335 }, 336 }), 337 { init: t, unload: d, blockSelect: l, blockDeselect: c, refreshFixTo: r } 338 ); 339 })()), 340 (StyleHatch.HeaderSection = (function () { 341 function t(t) { 342 var a = (this.$container = e(t)); 343 a.attr("data-section-id"); 344 StyleHatch.Header.init(); 345 } 346 return t; 347 })()), 348 (StyleHatch.HeaderSection.prototype = e.extend({}, StyleHatch.HeaderSection.prototype, { 349 onUnload: function () { 350 StyleHatch.Header.unload(); 351 }, 352 })), 353 (StyleHatch.Header = (function () { 354 function t() { 355 a(), o(), c(), u(), m(), S(); 356 } 357 function a() { 358 x = { 359 $htmlBody: e(T.htmlBody), 360 $body: e(T.body), 361 $page: e(T.page), 362 $section: e(T.section), 363 $promosSection: e(T.promosSection), 364 $util: e(T.util), 365 $header: e(T.header), 366 $siteNav: e(T.siteNav), 367 $dropdownParent: e(T.siteNav).find("li.has-dropdown"), 368 $defaultLink: e(T.siteNav).find("> li:not(.has-dropdown)"), 369 $subMenuLinks: e(T.siteNav).find("li.has-dropdown a"), 370 $subDropdownParent: e(T.siteNav).find("li.has-sub-dropdown"), 371 $search: e(T.util).find(".search-wrapper"), 372 $searchLink: e(T.util).find("a.search"), 373 $searchClose: e(T.util).find("form.search-bar button"), 374 $searchInput: e(T.util).find("form.search-bar input"), 375 $menuLink: e(T.menuLink), 376 $menuPanel: e(T.menuPanel), 377 $menuPanelDropdown: e(T.menuPanel).find("li.has-dropdown"), 378 $menuPanelSubDropdown: e(T.menuPanel).find("li.has-sub-dropdown"), 379 }; 380 } 381 function o() { 382 e(T.menuOverlay).length || (x.$section.append('<div class="mobile-menu-overlay"></div>'), (x.$menuOverlay = e(T.menuOverlay))); 383 } 384 function n() { 385 x.$search.slideDown({ 386 duration: C.slideSpeed, 387 progress: function () { 388 StyleHatch.refreshFixTo(); 389 }, 390 complete: function () { 391 StyleHatch.refreshFixTo(); 392 }, 393 }), 394 x.$searchInput.focus(); 395 } 396 function r() { 397 x.$searchInput.blur(), 398 clearTimeout(C.blurTimer), 399 x.$search.slideUp({ 400 duration: C.slideSpeed, 401 progress: function () { 402 StyleHatch.refreshFixTo(); 403 }, 404 complete: function () { 405 StyleHatch.refreshFixTo(); 406 }, 407 }); 408 } 409 function i() { 410 x.$body.hasClass("panel-open") ? l() : s(); 411 } 412 function s() { 413 x.$htmlBody.addClass("panel-open"), window.scrollTo(0, 0), x.$menuPanel.attr("tabindex", "0"), x.$menuPanel.focus(); 414 } 415 function l() { 416 x.$htmlBody.addClass("panel-open-transition"), 417 x.$htmlBody.removeClass("panel-open"), 418 x.$menuPanel.removeAttr("tabindex"), 419 setTimeout(function () { 420 x.$htmlBody.removeClass("panel-open-transition"); 421 }, 400); 422 } 423 function c() { 424 x.$searchLink.on("click.search", function (e) { 425 n(), e.preventDefault(); 426 }), 427 x.$searchClose.on("click.search", function (e) { 428 r(), e.preventDefault(); 429 }), 430 x.$searchInput.on("blur.search", function (e) { 431 (C.blurTimer = setTimeout(r, C.blurTime)), e.preventDefault(); 432 }), 433 x.$menuLink.on("click.panel", function (e) { 434 i(), e.preventDefault(); 435 }), 436 x.$menuOverlay.on("click.panel", function (e) { 437 i(), e.preventDefault(); 438 }), 439 x.$menuPanelDropdown.on("click.panelDropdown", function (t) { 440 x.$menuPanelDropdown.find("ul.dropdown").slide
440Up(), 441 x.$menuPanelDropdown.find("> a").attr("aria-expanded", "false"), 442 x.$menuPanelDropdown.removeClass("expanded"), 443 x.$menuPanelDropdown.find("ul.dropdown").attr("aria-hidden", "true"), 444 x.$menuPanelDropdown.find("ul.dropdown a").attr("tabindex", "-1"), 445 e(this).find("ul.dropdown").is(":visible") || 446 (e(this).find("> a").attr("aria-expanded", "true"), 447 e(this).find("ul.dropdown").slideDown(), 448 e(this).find("ul.dropdown").attr("aria-hidden", "false"), 449 e(this).find("ul.dropdown > li > a").attr("tabindex", "0"), 450 e(this).addClass("expanded")); 451 }), 452 x.$menuPanelDropdown.find("> a").on("click.panelDropdown", function (t) { 453 e(this).closest("li").hasClass("expanded") || t.preventDefault(); 454 }), 455 x.$menuPanelDropdown.find("ul.dropdown li:not(.has-sub-dropdown) a").on("click.panelDropdown", function (e) { 456 e.stopPropagation(); 457 }), 458 x.$menuPanelSubDropdown.on("click.panelDropdown", function (t) { 459 t.stopPropagation(), 460 x.$menuPanelSubDropdown.find("ul.sub-dropdown").slideUp(), 461 x.$menuPanelDropdown.find("> a").attr("aria-expanded", "false"), 462 x.$menuPanelSubDropdown.removeClass("expanded"), 463 x.$menuPanelDropdown.find("ul.sub-dropdown").attr("aria-hidden", "true"), 464 x.$menuPanelDropdown.find("ul.sub-dropdown a").attr("tabindex", "-1"), 465 e(this).find("ul.sub-dropdown").is(":visible") || 466 (e(this).find("> a").attr("aria-expanded", "true"), 467 e(this).find("ul.sub-dropdown").slideDown(), 468 e(this).find("ul.sub-dropdown").attr("aria-hidden", "false"), 469 e(this).find("ul.sub-dropdown > li > a").attr("tabindex", "0"), 470 e(this).addClass("expanded")); 471 }), 472 x.$menuPanelSubDropdown.find("> a").on("click.panelDropdown", function (t) { 473 e(this).closest("li").hasClass("expanded") || t.preventDefault(); 474 }), 475 x.$menuPanelSubDropdown.find("ul.sub-dropdown a").on("click.panelDropdown", function (e) { 476 e.stopPropagation(); 477 }), 478 x.$promosSection.resize(StyleHatch.refreshFixTo); 479 } 480 function d() { 481 clearTimeout(C.blurTimer), 482 x.$searchLink.off("click.search"), 483 x.$searchClose.off("click.search"), 484 x.$searchInput.off("blur.search"), 485 x.$menuLink.off("click.panel"), 486 x.$menuPanelDropdown.off("click.panelDropdown"), 487 x.$menuPanelDropdown.find("> a").off("click.panelDropdown"), 488 x.$menuPanelDropdown.find("ul.dropdown li:not(.has-sub-dropdown) a").off("
488click.panelDropdown"), 489 x.$menuPanelSubDropdown.off("click.panelDropdown"), 490 x.$menuPanelSubDropdown.find("> a").off("click.panelDropdown"), 491 x.$menuPanelSubDropdown.find("ul.sub-dropdown a").off("click.panelDropdown"), 492 x.$promosSection.removeResize(StyleHatch.refreshFixTo); 493 } 494 function u() { 495 x.$subMenuLinks.each(function () { 496 var t = e(this), 497 a = t.text(), 498 o = wordWrapper(a, 24, "<br/>\n"); 499 t.html(o); 500 }), 501 f(x.$dropdownParent); 502 } 503 function p(t) { 504 f(e("." + C.dropdownActiveClass)), t.addClass(C.dropdownActiveClass), t.find("> a").attr("aria-expanded", "true"), t.find("ul.dropdown").attr("aria-hidden", "false"), t.find("ul.dropdown > li > a").attr("tabindex", "0"); 505 var a = t.find("ul.dropdown"); 506 a.css({ left: "auto" }); 507 var o = a.offset().left + a.outerWidth(), 508 n = e(window).width() - 20, 509 r = x.$header.width(), 510 i = x.$header.find(".logo-nav-contain").offset().left; 511 if ((r + 40 > e(window).width() && ((r = e(window).width()), (i = -20)), (n = r + i + 1), o > n)) { 512 var s = "-" + (o - n) + "px"; 513 a.css({ left: s }); 514 } 515 setTimeout(function () { 516 x.$body.on("touchstart", function () { 517 f(t); 518 }); 519 }, 250); 520 } 521 function f(e) { 522 e.removeClass(C.dropdownActiveClass), x.$body.off("touchstart"), e.find("> a").attr("aria-expanded", "false"), e.find("ul.dropdown").attr("aria-hidden", "true"), e.find("ul.dropdown > li > a").attr("tabindex", "-1"); 523 } 524 function h(t) { 525 f(e("." + C.subDropdownActiveClass)), 526 t.addClass(C.subDropdownActiveClass), 527 t.find("> a").attr("aria-expanded", "true"), 528 t.find("ul.sub-dropdown").attr("aria-hidden", "false"), 529 t.find("ul.sub-dropdown > li > a").attr("tabindex", "0"); 530 var a = t.find(".sub-dropdown").offset().left + t.find(".sub-dropdown").width(), 531 o = e(window).width(); 532 a > o ? t.addClass("alternate-align") : t.removeClass("alternate-align"); 533 } 534 function y(e) { 535 e.removeClass(C.subDropdownActiveClass), 536 e.removeClass("alternate-align"), 537 e.find("> a").attr("aria-expanded", "false"), 538 e.find("ul.sub-dropdown").attr("aria-hidden", "true"), 539 e.find("ul.sub-dropdown > li > a").attr("tabindex", "-1"); 540 } 541 function m() { 542 x.$dropdownParent.on("mouseenter.dropdown touchstart.dropdown focusin.dropdown", function (t) { 543 var a = e(this); 544 a.hasClass(C.dropdownActiveClass) || (t.preventDefault(), p(a)); 545 }), 546 x.$dropdownParent.on("mouseleave.dropdown", function () { 547 f(e(this)); 548 }), 549 x.$subMenuLinks.on("touchstart.dropdown", function (e) { 550 e.stopImmediatePropagation(); 551 }), 552 x.$subDropdownParent.on("mouseenter.subdropdown touchstart.subdropdown focusin.subdropdown", function (t) { 553 var a = e(this); 554 a.hasClass(C.subDropdownActiveClass) || (t.preventDefault(), h(a)); 555 }), 556 x.$subDropdownParent.on("mouseleave.subdropdown", function () { 557 y(e(this)); 558 }), 559 x.$subDropdownParent.on("touchstart.subdropdown", function (e) { 560 e.stopImmediatePropagation(); 561 }), 562 e("html").hasClass("touchevents") && 563 x.$subDropdownParent.children("a").on("click", function (t) { 564 var a = e(this); 565 a.hasClass(C.subDropdownActiveClass) || (t.preventDefault(), h(a)); 566 }), 567 x.$subMenuLinks.on("focusout.dropdown", function (t) { 568 null == t.relatedTarget 569 ? f(e("." + C.dropdownActiveClass)) 570 : (e(t.target).closest("li.has-dropdown")[0] !== e(t.relatedTarget).closest("li.has-dropdown")[0] && f(e("." + C.dropdownActiveClass)), 571 e(t.target).closest("li.has-sub-dropdown")[0] !== e(t.relatedTarget).closest("li.has-sub-dropdown")[0] && y(e("." + C.subDropdownActiveClass))); 572 }); 573 } 574 function g() { 575 x.$dropdownParent.off("mouseenter.dropdown touchstart.dropdown focusin.dropdown"), 576 x.$dropdownParent.off("mouseleave.dropdown"), 577 x.$subMenuLinks.off("touchstart.dropdown"), 578 x.$subDropdownParent.off("mouseenter.subdropdown touchstart.subdropdown focusin.subdropdown"),
579 x.$subDropdownParent.off("mouseleave.subdropdown"), 580 x.$subDropdownParent.off("touchstart.subdropdown"), 581 x.$subMenuLinks.off("focusout.dropdown"); 582 } 583 function v() { 584 var t = x.$section, 585 a = x.$promosSection, 586 o = x.$header, 587 n = x.$util, 588 r = o.data("scroll-lock"); 589 if ("util" == r || "header" == r) { 590 var i = ""; 591 a.data("fixtoInstance") && (i = "#shopify-section-promos"), n.fixTo("#page", { zIndex: 991, mind: i }); 592 } 593 if ("header" == r) { 594 var i = "header.util"; 595 a.data("fixtoInstance") && (i = "header.util, #shopify-section-promos"), 596 t.fixTo("#page", { zIndex: 990, mind: i }), 597 t.resize(function () { 598 e(this).width() <= 700 ? t.fixTo("stop") : t.fixTo("start"); 599 }); 600 } 601 } 602 function b() { 603 var t = e("header.util, #shopify-section-header").filter(function () { 604 return e(this).data("fixtoInstance"); 605 }); 606 t.length && t.fixTo("destroy"); 607 } 608 function S() { 609 a(), b(), v(); 610 } 611 function w() { 612 l(), d(), g(), b(); 613 } 614 var T = { 615 htmlBody: "html, body", 616 body: "body", 617 page: "#page", 618 section: "#shopify-section-header", 619 promosSection: "#shopify-section-promos", 620 util: "header.util", 621 header: "header.site-header", 622 siteNav: "header.site-header ul.site-nav", 623 menuLink: ".menu-link", 624 menuPanel: "#menu.panel", 625 menuOverlay: ".mobile-menu-overlay", 626 }, 627 C = {}; 628 C = { blurTimer: {}, blurTime: 2e3, slideSpeed: 300, dropdownActiveClass: "dropdown-hover", subDropdownActiveClass: "sub-dropdown-hover" }; 629 var x = {}; 630 return { init: t, unload: w, openSearch: n, closeSearch: r, togglePanelMenu: i, openPanelMenu: s, closePanelMenu: l, rebuildFixTo: S }; 631 })()), 632 (StyleHatch.FooterSection = (function () { 633 function t(t) { 634 var a = (this.$container = e(t)); 635 a.attr("data-section-id"); 636 StyleHatch.Footer.init(a); 637 } 638 return t; 639 })()), 640 (StyleHatch.FooterSection.prototype = e.extend({}, StyleHatch.FooterSection.prototype, { 641 onUnload: function (e) { 642 StyleHatch.Footer.unload(e); 643 }, 644 })), 645 (StyleHatch.Footer = (function () { 646 function e(e) { 647 var t = e.find("ul.nested-menu"); 648 t.initNestedMenu(); 649 } 650 function t(e) { 651 $nestedMenu.destroyNestedMenu(); 652 } 653 return { init: e, unload: t }; 654 })()), 655 (StyleHatch.SlideshowSection = (function () { 656 function t(t) { 657 var a = (this.$container = e(t)); 658 a.attr("data-section-id"); 659 StyleHatch.Slideshow.init(a); 660 } 661 return t; 662 })()), 663 (StyleHatch.SlideshowSection.prototype = e.extend({}, StyleHatch.SlideshowSection.prototype, { 664 onUnload: function (e) { 665 StyleHatch.Slideshow.unload(e); 666 }, 667 onBlockSelect: function (e) { 668 StyleHatch.Slideshow.blockSelect(e); 669 }, 670 onBlockDeselect: function (e) { 671 StyleHatch.Slideshow.blockDeselect(e); 672 }, 673 })), 674 (StyleHatch.Slideshow = (function () { 675 function t(t) { 676 var a = t.find(".slideshow-carousel"), 677 o = 700, 678 n = a.find(".slide__item"); 679 e(window).on("resize", function () { 680 n.each(function (t) { 681 var a; 682 e(window).width() > o ? (a = e(this).find("img.slide__image-desktop")) : ((a = e(this).find("img.slide__image-mobile")), a.length < 1 && (a = e(this).find("img.slide__image-desktop"))), 683 a.hasClass("lazymanual") && (a.attr("src", a.attr("data-preload")).removeAttr("data-preload"), a.removeClass("lazymanual").addClass("lazyload")); 684 }); 685 }), 686 e(window).trigger("resize"); 687 var r = a.data("flickity-options"); 688 a.flickity(r), a.parent().find(".flickity-page-dots.placeholder").remove(); 689 var i = t.find(".slide__item-video"); 690 i.each(function () { 691 var t = e(this).find(".slide__item-image"), 692 a = e(this).data("video-id"), 693 o = e(this).data("mobile-autoplay"), 694 n = 0; 695 o && (n = 1), 696 t.YTPlayer({
697 fitToBackground: !1, 698 videoId: a, 699 repeat: !0, 700 mute: !0, 701 playerVars: { rel: 0, mute: 1, playsinline: n, autoplay: 1 }, 702 callback: function () { 703 e(window).trigger("resize"); 704 }, 705 }); 706 }); 707 } 708 function a(t) { 709 var a = e("#block-" + t.detail.blockId), 710 o = a.closest(".slideshow-carousel"), 711 n = a.data("slide-index"); 712 o.flickity("pausePlayer"), o.flickity("select", n, !0, !0), o.find("img").removeClass(".lazymanual").addClass("lazyload"); 713 } 714 function o(t) { 715 var a = e("#block-" + t.detail.blockId), 716 o = a.closest(".slideshow-carousel"); 717 o.flickity("unpausePlayer"); 718 } 719 function n(t) { 720 var a = e(".slideshow-" + t.detail.sectionId), 721 o = a.find(".slideshow-carousel"); 722 o.flickity("destroy"); 723 var n = a.find(".slide__item-video .slide__item-image"); 724 n.removeData("yt-init").removeData("ytPlayer").removeClass("loaded"), 725 e(window).off("resize.YTplayer" + n.ID), 726 e(window).off("scroll.YTplayer" + n.ID), 727 (n.$body = null), 728 (n.$node = null), 729 (n.$YTPlayerString = null), 730 (n.player = null); 731 } 732 return { init: t, unload: n, blockSelect: a, blockDeselect: o }; 733 })()), 734 (StyleHatch.HeroVideoSection = (function () { 735 function t(t) { 736 var a = (this.$container = e(t)); 737 a.attr("data-section-id"); 738 StyleHatch.HeroVideo.init(a); 739 } 740 return t; 741 })()), 742 (StyleHatch.HeroVideoSection.prototype = e.extend({}, StyleHatch.HeroVideoSection.prototype, { 743 onUnload: function (e) { 744 StyleHatch.HeroVideo.unload(e); 745 }, 746 })), 747 (StyleHatch.HeroVideo = (function () { 748 function t(e) { 749 var t = e.find(".wrapper"), 750 a = e.data("video-id"), 751 o = e.data("mobile-autoplay"), 752 n = 0; 753 o && (n = 1), t.removeData("ytPlayer"), t.YTPlayer({ fitToBackground: !1, videoId: a, repeat: !0, mute: !0, playerVars: { rel: 0, mute: 1, playsinline: n, autoplay: 1 } }); 754 } 755 function a(t) { 756 var a = e(".slideshow-" + t.detail.sectionId), 757 o = a.find(".wrapper"); 758 o.removeData("yt-init").removeData("ytPlayer").removeClass("loaded"), o.find(".ytplayer-container .ytplayer-shield").remove(); 759 } 760 return { init: t, unload: a }; 761 })()), 762 (StyleHatch.Maps = (function () { 763 function t(t) { 764 (this.$container = e(t)), 765 (this.$map = this.$container.find(u.map)), 766 (this.key = this.$map.data("api-key")), 767 this.key != i && ((i = this.key), (r = null), (s = !0)), 768 "undefined" != typeof this.key && 769 ("loaded" === r 770 ? this.createMap() 771 : (l.push(this), 772 "loading" !== r && 773 ((r = "loading"), 774 ("undefined" == typeof window.google || s) && 775 e.getScript("https://maps.googleapis.com/maps/api/js?key=" + this.key).then(function () { 776 (r = "loaded"), (s = !1), a(); 777 })))); 778 } 779 function a() { 780 e.each(l, function (e, t) { 781 t.createMap(); 782 }); 783 } 784 function o(t) { 785 var a = e.Deferred(), 786 o = new google.maps.Geocoder(), 787 n = t.data("address-setting"); 788 return ( 789 o.geocode({ address: n }, function (e, t) { 790 t !== google.maps.GeocoderStatus.OK && a.reject(t), a.resolve(e); 791 }), 792 a 793 ); 794 } 795 var n = { zoom: 14 }, 796 r = null, 797 i = null, 798 s = !1, 799 l = [], 800 c = { 801 standard: [], 802 silver: [ 803 { elementType: "geometry", stylers: [{ color: "#f5f5f5" }] }, 804 { elementType: "labels.icon", stylers: [{ visibility: "off" }] }, 805 { elementType: "labels.text.fill", stylers: [{ color: "#616161" }] }, 806 { elementType: "labels.text.stroke", stylers: [{ color: "#f5f5f5" }] }, 807 { featureType: "administrative.land_parcel", elementType: "labels.text.fill", stylers: [{ color: "#bdbdbd" }] }, 808 { featureType: "poi", elementType: "geometry", stylers: [{ color: "#eeeeee" }] }, 809 { featureType: "poi", elementType: "labels.text.fill", stylers: [{ color: "#757575" }] }, 810 { featureType: "poi.park", elementType: "geometry", stylers: [{ color: "#e5e5e5" }] }, 811 { featureType: "poi.park", elementType: "labels.text.fill", stylers: [{ color: "#9e9e9e" }] }, 812 { featureType: "road", elementType: "geometry", stylers: [{ color: "#ffffff" }] }, 813 { featureType: "road.arterial", elementType: "labels.text.fill", stylers: [{ color: "#757575" }] }, 814 { featureType: "road.highway", elementType: "geometry", stylers: [{ color: "#dadada" }] }, 815 { featureType: "road.highway", elementType: "labels.text.fill", stylers: [{ color: "#616161" }] }, 816 { featureType: "road.local", elementType: "labels.text.fill", stylers: [{ color: "#9e9e9e" }] }, 817 { featureType: "transit.line", elementType: "geometry", stylers: [{ color: "#e5e5e5" }] }, 818 { featureType: "transit.station", elementType: "geometry", stylers: [{ color: "#eeeeee" }] }, 819 { featureType: "water", elementType: "geometry", stylers: [{ color: "#c9c9c9" }] }, 820 { featureType: "water", elementType: "labels.text.fill", stylers: [{ color: "#9e9e9e" }] }, 821 ], 822 retro: [ 823 { elementType: "geometry", stylers: [{ color: "#ebe3cd" }] }, 824 { elementType: "labels.text.fill", stylers: [{ color: "#523735" }] }, 825 { elementType: "labels.text.stroke", stylers: [{ color: "#f5f1e6" }] }, 826 { featureType: "administrative", elementType: "geometry.stroke", stylers: [{ color: "#c9b2a6" }] }, 827 { featureType: "administrative.land_parcel", elementType: "geometry.stroke", stylers: [{ color: "#dcd2be" }] }, 828 { featureType: "administrative.land_parcel", elementType: "labels.text.fill", stylers: [{ color: "#ae9e90" }] }, 829 { featureType: "landscape.natural", elementType: "geometry", stylers: [{ color: "#dfd2ae" }] }, 830 { featureType: "poi", elementType: "geometry", stylers: [{ color: "#dfd2ae" }] }, 831 { featureType: "poi", elementType: "labels.text.fill", stylers: [{ color: "#93817c" }] }, 832 { featureType: "poi.park", elementType: "geometry.fill", stylers: [{ color: "#a5b076" }] }, 833 { featureType: "poi.park", elementType: "labels.text.fill", stylers: [{ color: "#447530" }] }, 834 { featureType: "road", elementType: "geometry", stylers: [{ color: "#f5f1e6" }] }, 835 { featureType: "road.arterial", elementType: "geometry", stylers: [{ color: "#fdfcf8" }] }, 836 { featureType: "road.highway", elementType: "geometry", stylers: [{ color: "#f8c967" }] }, 837 { featureType: "road.highway", elementType: "geometry.stroke", stylers: [{ color: "#e9bc62" }] }, 838 { featureType: "road.highway.controlled_access", elementType: "geometry", stylers: [{ color: "#e98d58" }] }, 839 { featureType: "road.highway.controlled_access", elementType: "geometry.stroke", stylers: [{ color: "#db8555" }] }, 840 { featureType: "road.local", elementType: "labels.text.fill", stylers: [{ color: "#806b63" }] }, 841 { featureType: "transit.line", elementType: "geometry", stylers: [{ color: "#dfd2ae" }] }, 842 { featureType: "transit.line", elementType: "labels.text.fill", stylers: [{ color: "#8f7d77" }] }, 843 { featureType: "transit.line", elementType: "labels.text.stroke", stylers: [{ color: "#ebe3cd" }] }, 844 { featureType: "transit.station", elementType: "geometry", stylers: [{ color: "#dfd2ae" }] }, 845 { featureType: "water", elementType: "geometry.fill", stylers: [{ color: "#b9d3c2" }] }, 846 { featureType: "water", elementType: "labels.text.fill", stylers: [{ color: "#92998d" }] }, 847 ], 848 dark: [ 849 { elementType: "geometry", stylers: [{ color: "#212121" }] }, 850 { elementType: "labels.icon", stylers: [{ visibility: "off" }] }, 851 { elementType: "labels.text.fill", stylers: [{ color: "#757575" }] }, 852 { elementType: "labels.text.stroke", stylers: [{ color: "#212121" }] }, 853 { featureType: "administrative", elementType: "geometry", stylers: [{ color: "#757575" }] }, 854 { featureType: "administrative.country", elementType: "labels.text.fill", stylers: [{ color: "#9e9e9e" }] }, 855 { featureType: "administrative.land_parcel", stylers: [{ visibility: "off" }] }, 856 { featureType: "administrative.locality", elementType: "labels.text.fill", stylers: [{ color: "#bdbdbd" }] }, 857 { featureType: "poi", elementType: "labels.text.fill", stylers: [{ color: "#757575" }] }, 858 { featureType: "poi.park", elementType: "geometry", stylers: [{ color: "#181818" }] }, 859 { featureType: "poi.park", elementType: "labels.text.fill", stylers: [{ color: "#616161" }] }, 860 { featureType: "poi.park", elementType: "labels.text.stroke", stylers: [{ color: "#1b1b1b" }] }, 861 { featureType: "road", elementType: "geometry.fill", stylers: [{ color: "#2c2c2c" }] }, 862 { featureType: "road", elementType: "labels.text.fill", stylers: [{ color: "#8a8a8a" }] }, 863 { featureType: "road.arterial", elementType: "geometry", stylers: [{ color: "#373737" }] }, 864 { featureType: "road.highway", elementType: "geometry", stylers: [{ color: "#3c3c3c" }] }, 865 { featureType: "road.highway.controlled_access", elementType: "geometry", stylers: [{ color: "#4e4e4e" }] }, 866 { featureType: "road.local", elementType: "labels.text.fill", stylers: [{ color: "#616161" }] }, 867 { featureType: "transit", elementType: "labels.text.fill", stylers: [{ color: "#757575" }] }, 868 { featureType: "water", elementType: "geometry", stylers: [{ color: "#000000" }] }, 869 { featureType: "water", elementType: "labels.text.fill", stylers: [{ color: "#3d3d3d" }] }, 870 ], 871 night: [ 872 { elementType: "geometry", stylers: [{ color: "#242f3e" }] }, 873 { elementType: "labels.text.fill", stylers: [{ color: "#746855" }] }, 874 { elementType: "labels.text.stroke", stylers: [{ color: "#242f3e" }] }, 875 { featureType: "administrative.locality", elementType: "labels.text.fill", stylers: [{ color: "#d59563" }] }, 876 { featureType: "poi", elementType: "labels.text.fill", stylers: [{ color: "#d59563" }] }, 877 { featureType: "poi.park", elementType: "geometry", stylers: [{ color: "#263c3f" }] }, 878 { featureType: "poi.park", elementType: "labels.text.fill", stylers: [{ color: "#6b9a76" }] }, 879 { featureType: "road", elementType: "geometry", stylers: [{ color: "#38414e" }] }, 880 { featureType: "road", elementType: "geometry.stroke", stylers: [{ color: "#212a37" }] }, 881 { featureType: "road", elementType: "labels.text.fill", stylers: [{ color: "#9ca5b3" }] }, 882 { featureType: "road.highway", elementType: "geometry", stylers: [{ color: "#746855" }] }, 883 { featureType: "road.highway", elementType: "geometry.stroke", stylers: [{ color: "#1f2835" }] }, 884 { featureType: "road.highway", elementType: "labels.text.fill", stylers: [{ color: "#f3d19c" }] }, 885 { featureType: "transit", elementType: "geometry", stylers: [{ color: "#2f3948" }] }, 886 { featureType: "transit.station", elementType: "labels.text.fill", stylers: [{ color: "#d59563" }] }, 887 { featureType: "water", elementType: "geometry", stylers: [{ color: "#17263c" }] }, 888 { featureType: "water", elementType: "labels.text.fill", stylers: [{ color: "#515c6d" }] }, 889 { featureType: "water", elementType: "labels.text.stroke", stylers: [{ color: "#17263c" }] }, 890 ], 891 aubergine: [ 892 { elementType: "geometry", stylers: [{ color: "#1d2c4d" }] }, 893 { elementType: "labels.text.fill", stylers: [{ color: "#8ec3b9" }] }, 894 { elementType: "labels.text.stroke", stylers: [{ color: "#1a3646" }] }, 895 { featureType: "administrative.country", elementType: "geometry.stroke", stylers: [{ color: "#4b6878" }] }, 896 { featureType: "administrative.land_parcel", elementType: "labels.text.fill", stylers: [{ color: "#64779e" }] }, 897 { featureType: "administrative.province", elementType: "geometry.stroke", stylers: [{ color: "#4b6878" }] }, 898 { featureType: "landscape.man_made", elementType: "geometry.stroke", stylers: [{ color: "#334e87" }] }, 899 { featureType: "landscape.natural", elementType: "geometry", stylers: [{ color: "#023e58" }] }, 900 { featureType: "poi", elementType: "geometry", stylers: [{ color: "#283d6a" }] }, 901 { featureType: "poi", elementType: "labels.text.fill", stylers: [{ color: "#6f9ba5" }] }, 902 { featureType: "poi", elementType: "labels.text.stroke", stylers: [{ color: "#1d2c4d" }] }, 903 { featureType: "poi.park", elementType: "geometry.fill", stylers: [{ color: "#023e58" }] }, 904 { featureType: "poi.park", elementType: "labels.text.fill", stylers: [{ color: "#3C7680" }] }, 905 { featureType: "road", elementType: "geometry", stylers: [{ color: "#304a7d" }] }, 906 { featureType: "road", elementType: "labels.text.fill", stylers: [{ color: "#98a5be" }] }, 907 { featureType: "road", elementType: "labels.text.stroke", stylers: [{ color: "#1d2c4d" }] }, 908 { featureType: "road.highway", elementType: "geometry", stylers: [{ color: "#2c6675" }] }, 909 { featureType: "road.highway", elementType: "geometry.stroke", stylers: [{ color: "#255763" }] }, 910 { featureType: "road.highway", elementType: "labels.text.fill", stylers: [{ color: "#b0d5ce" }] }, 911
911 { featureType: "road.highway", elementType: "labels.text.stroke", stylers: [{ color: "#023e58" }] }, 912 { featureType: "transit", elementType: "labels.text.fill", stylers: [{ color: "#98a5be" }] }, 913 { featureType: "transit", elementType: "labels.text.stroke", stylers: [{ color: "#1d2c4d" }] }, 914 { featureType: "transit.line", elementType: "geometry.fill", stylers: [{ color: "#283d6a" }] }, 915 { featureType: "transit.station", elementType: "geometry", stylers: [{ color: "#3a4762" }] }, 916 { featureType: "water", elementType: "geometry", stylers: [{ color: "#0e1626" }] }, 917 { featureType: "water", elementType: "labels.text.fill", stylers: [{ color: "#4e6d70" }] }, 918 ], 919 }, 920 d = { addressNoResults: StyleHatch.Strings.addressNoResults, addressQueryLimit: StyleHatch.Strings.addressQueryLimit, addressError: StyleHatch.Strings.addressError, authError: StyleHatch.Strings.authError }, 921 u = { section: '[data-section-type="maps"]', map: "[data-map]", mapOverlay: "[data-map-overlay]" }, 922 p = { mapError: "map-selection--load-error", errorMsg: "map-section__errors errors text-center" }; 923 return ( 924 (window.gm_authFailure = function () { 925 return Shopify.designMode 926 ? (e(u.section).addClass(p.mapError), e(u.map).remove(), void e(u.mapOverlay).after('<div class="' + p.errorMsg + '">' + StyleHatch.Strings.authError + "</div>")) 927 : void log("Google Maps authentication error", window.google, r); 928 }), 929 (t.prototype = e.extend({}, t.prototype, { 930 createMap: function () { 931 var e = this.$map, 932 t = e.data("map-style"); 933 return o(e) 934 .then( 935 function (a) { 936 var o = { zoom: n.zoom, center: a[0].geometry.location, draggable: !1, clickableIcons: !1, scrollwheel: !1, disableDoubleClickZoom: !0, disableDefaultUI: !0, styles: c[t] }, 937 r = (this.map = new google.maps.Map(e[0], o)), 938 i = (this.center = r.getCenter()); 939 new google.maps.Marker({ map: r, position: r.getCenter() }); 940 google.maps.event.addDomListener( 941 window, 942 "resize", 943 slate.utils.debounce(function () { 944 google.maps.event.trigger(r, "resize"), r.setCenter(i), e.removeAttr("style"); 945 }, 250) 946 ); 947 }.bind(this) 948 ) 949 .fail(function () { 950 var t; 951 switch (status) { 952 case "ZERO_RESULTS": 953 t = d.addressNoResults; 954 break; 955 case "OVER_QUERY_LIMIT": 956 t = d.addresQueryLimit; 957 break; 958 case "REQUEST_DENIED": 959 t = d.authError; 960 break; 961 default: 962 t = d.addressError; 963 } 964 Shopify.designMode && 965 e 966 .parent() 967 .addClass(p.mapError) 968 .append('<div class="' + p.errorMsg + '">' + t + "</div>"); 969 }); 970 }, 971 onUnload: function () { 972 0 !== this.$map.length && google.maps.event.clearListeners(this.map, "resize"); 973 }, 974 })), 975 t 976 ); 977 })()), 978 (StyleHatch.PageSection = (function () { 979 function t(t) { 980 var a = (this.$container = e(t)); 981 a.attr("data-section-id"); 982 StyleHatch.Page.init(a); 983 } 984 return t; 985 })()), 986 (StyleHatch.Page = (function () { 987 function e(e) { 988 e.fitVids(); 989 } 990 function t(e) {} 991 return { init: e, unload: t }; 992 })()), 993 (StyleHatch.FeaturedCollectionSection = (function () { 994 function t(t) { 995 var a = (this.$container = e(t)); 996 a.attr("data-section-id"); 997 a.productBox(), StyleHatch.currencyConverter && StyleHatch.CurrencyConverter.init(); 998 } 999 return t; 1000 })()), 1001 (StyleHatch.FeaturedCollectionSection.prototype = e.extend({}, StyleHatch.FeaturedCollectionSection.prototype, { 1002 onUnload: function (t) { 1003 var a = e("#section-" + t.detail.sectionId); 1004 a.attr("data-section-id"); 1005 a.destroyProductBox(); 1006 }, 1007 })), 1008 (StyleHatch.SimpleCollectionSection = (function () { 1009 function t(t) { 1010 var a = (this.$container = e(t)); 1011 a.attr("data-section-id"); 1012 a.productBox(), StyleHatch.currencyConverter && StyleHatch.CurrencyConverter.init(); 1013 } 1014 return t; 1015 })()), 1016 (StyleHatch.SimpleCollectionSection.prototype = e.extend({}, StyleHatch.SimpleCollectionSection.prototype, { 1017 onUnload: function (t) { 1018 var a = e("#section-" + t.detail.sectionId); 1019 a.attr("data-section-id"); 1020 a.destroyProductBox(); 1021 }, 1022 })), 1023 (StyleHatch.instagrams = {}), 1024 (StyleHatch.InstagramSection = (function () { 1025 function t(t) { 1026 var a = (this.$container = e(t)), 1027 o = a.attr("data-section-id"), 1028 n = (this.instagram = "#Instagram-" + o); 1029 if (e("html").hasClass("lt-ie9")) return !1; 1030 var r = a.find(".instagram-container"), 1031 i = a.find("header a.button, footer a.button"), 1032 s = a.data("image-count"), 1033 l = a.data("instagram-access-token"), 1034 c = "https://api.instagram.com/v1/users/self/media/recent/?access_token=" + l + "&count=20", 1035 d = 432e5, 1036 u = StyleHatch.Strings.instagramAddToken, 1037 p = StyleHatch.Strings.instagramInvalidToken, 1038 f = StyleHatch.Strings.instagramRateLimitToken, 1039 h = function () { 1040 l 1041 ? e.ajax({ 1042 url: c, 1043 dataType: "jsonp", 1044 timeout: 5e3, 1045 success: function (e) { 1046 switch (e.meta.code) { 1047 case 400: 1048 Shopify.designMode && (r.attr("data-helper
1048-text", p), storeWithExpiration.set(l, e, d), a.show()); 1049 break; 1050 case 429: 1051 Shopify.designMode && (r.attr("data-helper-text", f), a.show()); 1052 break; 1053 default: 1054 y(e), storeWithExpiration.set(l, e, d); 1055 } 1056 }, 1057 }) 1058 : Shopify.designMode && (r.attr("data-helper-text", u), a.show()); 1059 }, 1060 y = function (t) { 1061 if (t.data) { 1062 if (t.data.length < s) { 1063 var o = t.data.length, 1064 n = s, 1065 l = n - (n - o); 1066 (s = t.data.length), 1067 a.find(".box").each(function (t) { 1068 t >= l && e(this).hide(); 1069 }); 1070 } 1071 for (var c = 0; c < s; c++) { 1072 var d = t.data[c].images, 1073 u = d.thumbnail.url, 1074 p = d.thumbnail.width, 1075 f = d.low_resolution.url, 1076 h = d.low_resolution.width, 1077 y = d.standard_resolution.url, 1078 m = d.standard_resolution.width, 1079 g = t.data[c].link, 1080 v = t.data[c].likes.count, 1081 b = t.data[c].comments.count, 1082 S = ""; 1083 t.data[c].caption && (S = t.data[c].caption.text); 1084 var w = a.find(".box-" + c), 1085 T = w.find("figure > a"), 1086 C = w.find("figure > a, li > a"), 1087 x = w.find("figcaption > p"), 1088 k = w.find("a.likes span.label"), 1089 $ = w.find("a.comments span.label"); 1090 T.html('<div class="card__image lazyload">'); 1091 var H = T.find(".card__image"); 1092 H.attr("data-sizes", "auto"), H.attr("data-bgset", u + " " + p + "w, " + f + " " + h + "w, " + y + " " + m + "w"), C.attr("href", g), x.html(S), k.text(v), $.text(b); 1093 } 1094 var _ = "https://www.instagram.com/" + t.data[0].user.username; 1095 i.attr("href", _), i.attr("target", "_blank"), a.show(), r.addClass("loaded"); 1096 } 1097 }; 1098 if (storeWithExpiration.get(l) && !Shopify.designMode) { 1099 var m = storeWithExpiration.get(l); 1100 y(m); 1101 } else h(); 1102 StyleHatch.instagrams[n] = this; 1103 } 1104 return t; 1105 })()), 1106 (StyleHatch.InstagramSection.prototype = e.extend({}, StyleHatch.InstagramSection.prototype, { 1107 onUnload: function () { 1108 delete StyleHatch.instagrams[this.instagram]; 1109 }, 1110 })), 1111 (StyleHatch.GenericSection = (function () { 1112 function t(t) { 1113 var a = (this.$container = e(t)); 1114 a.attr("data-section-id"); 1115 StyleHatch.cacheSelectors(); 1116 } 1117 return t; 1118 })()), 1119 (StyleHatch.Product = (function () { 1120 function t(t) { 1121 var a = (this.$container = e(t)), 1122 o = a.attr("data-section-id"); 1123 (this.settings = { 1124 enableHistoryState: a.data("enable-history-state") || !1, 1125 enableSwatch: a.data("enable-swatch") || !1, 1126 imageSize: "394x", 1127 imageZoomSize: null, 1128 namespace: ".product-" + o, 1129 sectionId: o, 1130 zoomEnabled: !1, 1131 lightboxEnabled: !1,
1132 productImageLightboxData: [], 1133 }), 1134 (this.selectors = { 1135 addToCartForm: "#AddToCartForm-" + o, 1136 addToCart: "#AddToCart-" + o, 1137 addToCartText: "#AddToCartText-" + o, 1138 comparePrice: "#ComparePrice-" + o, 1139 originalPrice: "#ProductPrice-" + o, 1140 SKU: ".variant-sku", 1141 originalSelectorId: "#ProductSelect-" + o, 1142 productFeaturedImage: "#FeaturedImage-" + o, 1143 productImageWrap: ".featured-container-" + o, 1144 productPrices: ".product-single__price-" + o, 1145 productThumbImages: ".product-single__thumbnail--" + o, 1146 productPhoto: "#ProductPhoto-" + o, 1147 productImage: "#ProductImage-" + o, 1148 productThumbs: "#ProductThumbs-" + o, 1149 quantityWrap: ".quantity-" + o, 1150 quantity: ".quantity-select-" + o, 1151 cartError: ".cart-error-" + o, 1152 singleOptionSelector: ".single-option-selector-" + o, 1153 cartButtons: "#CartButtons-" + o, 1154 paymentButtonContainer: "#PaymentButtonContainer-" + o, 1155 productSizeGuideLink: "a.product-size-guide-" + o, 1156 productSizeGuideContent: "#product-size-guide-content-" + o, 1157 }), 1158 this._initSlider(), 1159 e("#ProductJson-" + o).html() && 1160 ((this.productSingleObject = JSON.parse(document.getElementById("ProductJson-" + o).innerHTML)), 1161 (this.settings.zoomEnabled = e(this.selectors.productImageWrap).hasClass("featured-zoom")), 1162 Modernizr.objectfit && (this.settings.lightboxEnabled = e(this.selectors.productImageWrap).data("lightbox")), 1163 a.productBox(), 1164 StyleHatch.currencyConverter && StyleHatch.CurrencyConverter.init(), 1165 this._initVariants(), 1166 this._initQuanitySelect(), 1167 e(this.selectors.productSizeGuideLink).length && e(this.selectors.productSizeGuideLink).magnificPopup({ items: { src: e(this.selectors.productSizeGuideContent), type: "inline" } })); 1168 } 1169 function a(e) { 1170 var t = e.easyZoom().data("easyZoom"); 1171 t.teardown(); 1172 } 1173 return ( 1174 (t.prototype = e.extend({}, t.prototype, { 1175 _initVariants: function () { 1176 var e = { 1177 $container: this.$container, 1178 enableHistoryState: this.$container.data("enable-history-state") || !1, 1179 enableSwatch: this.$container.data("enable-swatch"), 1180 singleOptionSelector: this.selectors.singleOptionSelector, 1181 originalSelectorId: this.selectors.originalSelectorId, 1182 product: this.productSingleObject, 1183 }; 1184 (this.variants = new slate.Variants(e)), 1185 this.$container.on("variantChange" + this.settings.namespace, this._updateAddToCart.bind(this)), 1186 this.$container.on("variantImageChange" + this.settings.namespace, this._updateImages.bind(this)), 1187 this.$container.on("variantPriceChange" + this.settings.namespace, this._updatePrice.bind(this)), 1188 this.$container.on("variantSKUChange" + this.settings.namespace, this._updateSKU.bind(this)), 1189 e.enableSwatch && this.$container.on("variantChange" + this.settings.namespace, this._updateSwatches.bind(this)); 1190 }, 1191 _initQuanitySelect: function () { 1192 var t = e(this.selectors.quantity); 1193 t.each(function () { 1194 var t = e(this), 1195 a = t.find(".adjust-minus"), 1196 o = t.find(".adjust-plus"), 1197 n = t.find("input.quantity"), 1198 r = n.val(); 1199 a.on("click", function (e) { 1200 (r = n.val()), r > 1 && (r--, n.val(r)), e.preventDefault(); 1201 }), 1202 o.on("click", function (e) { 1203 (r = n.val()), r++, n.val(r), e.preventDefault(); 1204 }); 1205 }); 1206 }, 1207 _initSlider: function () { 1208 var t = this.$container.find(".product-image--slider"); 1209 if (t.length) { 1210 var a = t.data("flickity-options"), 1211 o = t.data("slider-enabled"), 1212 n = t.data("zoom"), 1213 r = t.data("lightbox"), 1214 i = t.find("[data-initial-image]"), 1215 s = i.parent().find(".product-image--cell").index(i); 1216 if (((a.initialIndex = s), o || ((a.draggable = !1), (a.selectedAttraction = 1), (a.friction = 1)), i.removeAttr("data-initial-image"), t.flickity(a), !Modernizr.touchevents && n)) { 1217 e(".product-image--cell").easyZoom(); 1218 t.on("dragStart.flickity", function (t) { 1219 var a = e(t.currentTarget).find(".easyzoom-flyout"); 1220 a.addClass("hidden"); 1221 }).on("dragEnd.flickity", function (t) { 1222 var a = e(t.currentTarget).find(".easyzoom-flyout"); 1223 a.removeClass("hidden"); 1224 }); 1225 } 1226 t.on("dragStart.flickity", function (e, t) { 1227 document.ontouchmove = function (e) { 1228 e.preventDefault(); 1229 }; 1230 }), 1231 t.on("dragEnd.flickity", function (e, t) { 1232 document.ontouchmove = function (e) { 1233 return !0; 1234 }; 1235 }), 1236 t.find("a").on("click", function (e) { 1237 e.preventDefault(); 1238 }), 1239 r && 1240 Modernizr.objectfit && 1241 (t.on("staticClick.flickity", function () { 1242 t.flickity("toggleFullscreen"); 1243 }), 1244 t.on("fullscreenChange.flickity", function (e, a) { 1245 a ? t.parent().addClass("is-fullscreen") : t.parent().removeClass("is-fullscreen"); 1246 })); 1247 } 1248 var l = this.$container.find(".product-thumb--slider"); 1249 if (l.length) { 1250 var a = l.data("flickity-options"), 1251 o = l.data("slider-enabled"); 1252 if (o) { 1253 var i = l.find("[data-initial-image]"), 1254 s = i.parent().find(".product-thumb--cell").index(i); 1255 (a.initialIndex = s), 1256 i.removeAttr("data-initial-image"), 1257 l.flickity(a), 1258 l.find("a").on("click", function (e) { 1259 e.preventDefault(); 1260 }), 1261 l.on("dragStart.flickity", function (e, t) { 1262 document.ontouchmove = function (e) { 1263 e.preventDefault(); 1264 }; 1265 }), 1266 l.on("dragEnd.flickity", function (e, t) { 1267 document.ontouchmove = function (e) { 1268 return !0; 1269 }; 1270 }); 1271 } else { 1272 var i = l.find("[data-initial-image]"); 1273 i.addClass("is-nav-selected"), 1274 i.removeAttr("data-initial-image"), 1275 l.find("a").on("click", function (a) { 1276 var o = e(this), 1277 n = o.parent(), 1278 r = n.data("image-id"), 1279 i = '[data-image-id="' + r + '"]'; 1280 t.flickity("selectCell", i, !1, !0), n.parent().find(".is-nav-selected").removeClass("is-nav-selected"), n.addClass("is-nav-selected"), a.preventDefault(); 1281 }), 1282 t.on("change.flickity", function (t, a) { 1283 var o = e(this), 1284 n = o.find(".product-image--cell").eq(a), 1285 r = n.data("image-id");
1286 l.find(".is-nav-selected").removeClass("is-nav-selected"); 1287 var i = l.find('[data-image-id="' + r + '"]'); 1288 i.addClass("is-nav-selected"); 1289 }); 1290 } 1291 Modernizr.objectfit || 1292 l.find(".product-thumb--cell a").each(function () { 1293 var t = e(this), 1294 a = t.find("img").prop("src"); 1295 t.css({ "background-image": "url(" + a + ")" }), t.addClass("fallback-object-fit"); 1296 }); 1297 } 1298 var c = this.$container.find(".thumbnails"); 1299 if ( 1300 c.length && 1301 (c.find("a").on("click", function (a) { 1302 var o = e(this), 1303 n = o.data("image-id"), 1304 r = '[data-image-id="' + n + '"]'; 1305 t.flickity("selectCell", r, !1, !0), o.parent().parent().find(".active").removeClass("active"), o.addClass("active"), a.preventDefault(); 1306 }), 1307 t.on("change.flickity", function (t, a) { 1308 var o = e(this), 1309 n = o.find(".product-image--cell").eq(a), 1310 r = n.data("image-id"); 1311 c.find(".active").removeClass("active"); 1312 var i = c.find('[data-image-id="' + r + '"]'); 1313 i.addClass("active"); 1314 var s = c.find("[data-productthumbs]"); 1315 s.height() > c.height() && 1316 c.data("enable-group") && 1317 c.is(":visible") && 1318 setTimeout(function () { 1319 i.scrollIntoView(); 1320 }, 200); 1321 }), 1322 c.data("enable-group")) 1323 ) { 1324 c.css({ "overflow-y": "scroll", position: "relative" }), 1325 t.resize(function () { 1326 c.height(e(this).find(".flickity-viewport").height()); 1327 }); 1328 var d = c.find("[data-productthumbs]"); 1329 setTimeout(function () { 1330 d.height() > c.height() && c.find("a.active").scrollIntoView(); 1331 }, 200), 1332 c.find("li").each(function (t) { 1333 e(this) 1334 .delay(100 * t) 1335 .fadeTo(200, 1); 1336 }); 1337 } 1338 }, 1339 _updateAddToCart: function (t) { 1340 var a = t.variant, 1341 o = e(this.selectors.addToCartForm).data("dynamic-checkout"); 1342 a 1343 ? (e(this.selectors.cartError).hide(), 1344 e(this.selectors.productPrices).removeClass("visibility-hidden").attr("aria-hidden", "true"), 1345 a.available 1346 ? (e(this.selectors.addToCart).removeClass("disabled").prop("disabled", !1), 1347 e(this.selectors.addToCartText).text(StyleHatch.Strings.addToCart), 1348 e(this.selectors.quantityWrap).show(), 1349 o && e(this.selectors.cartButtons).addClass("cart-buttons__enabled")) 1350 : (e(this.selectors.addToCart).addClass("disabled").prop("disabled", !0), 1351 e(this.selectors.addToCartText).text(StyleHatch.Strings.soldOut), 1352 e(this.selectors.quantityWrap).hide(), 1353 o && e(this.selectors.cartButtons).removeClass("cart-buttons__enabled"))) 1354 : (e(this.selectors.addToCart).addClass("disabled").prop("disabled", !0), 1355 e(this.selectors.addToCartText).text(StyleHatch.Strings.soldOut), 1356 e(this.selectors.productPrices).addClass("visibility-hidden").attr("aria-hidden", "false"), 1357 e(this.selectors.quantityWrap).hide(), 1358 o && e(this.selectors.cartButtons).removeClass("cart-buttons__enabled")); 1359 }, 1360 _updateSwatches: function (t) { 1361 var a = t.variant, 1362 o = e(t.currentTarget).find("[type=radio]"), 1363 n = e(t.currentTarget).find(".radio-wrapper"), 1364 r = this; 1365 o.each(function () { 1366 var t = e(this), 1367 o = t.data("position"), 1368 n = "option" + o, 1369 i = ["option1", "option2", "option3"].filter(function (e) { 1370 return e != n; 1371 }), 1372 s = !1; 1373 r.productSingleObject.variants.forEac
1373h(function (e) { 1374 e.available && e[n] === t.val() && e[i[0]] === a[i[0]] && e[i[1]] === a[i[1]] && (s = !0); 1375 }), 1376 1 !== o && (s ? t.parent().removeClass("soldout") : t.parent().addClass("soldout")); 1377 }), 1378 n.each(function () { 1379 var t = e(this), 1380 o = "option" + t.data("option-index"), 1381 n = t.find(".single-option-radio__label--value"); 1382 if (n.length) { 1383 var r = a[o]; 1384 n.text(r); 1385 } 1386 }); 1387 }, 1388 _updateImages: function (t) { 1389 var a, 1390 o = t.variant; 1391 theme.Images.getSizedImageUrl(o.featured_image.src, this.settings.imageSize); 1392 this.settings.zoomEnabled && (a = theme.Images.getSizedImageUrl(o.featured_image.src, this.settings.imageZoomSize)); 1393 var n = (e(this.selectors.productThumbImages + '[data-image-id="' + o.featured_image.id + '"]'), this.$container.find(".product-image--slider")); 1394 if (n.length) { 1395 var r = '[data-image-id="' + o.featured_image.id + '"]'; 1396 n.flickity("selectCell", r, !1, !0); 1397 } 1398 }, 1399 _updatePrice: function (t) { 1400 var a = t.variant; 1401 e(this.selectors.originalPrice).html(theme.Currency.formatMoney(a.price, StyleHatch.currencyFormat)), 1402 StyleHatch.currencyConverter && 1403 (removeDataAttributes(e(this.selectors.originalPrice)), Currency.convertAll(StyleHatch.shopCurrency, e("[name=currencies]").val()), e(".selected-currency").text(Currency.currentCurrency)), 1404 a.compare_at_price > a.price 1405 ? (e(this.selectors.comparePrice).find("span.money").html(theme.Currency.formatMoney(a.compare_at_price, StyleHatch.currencyFormat)), e(this.selectors.comparePrice).show()) 1406 : e(this.selectors.comparePrice).hide(); 1407 }, 1408 _updateSKU: function (t) { 1409 var a = t.variant; 1410 e(this.selectors.SKU).html(a.sku); 1411 }, 1412 onUnload: function () { 1413 this.$container.off(this.settings.namespace), 1414 e.magnificPopup.close(), 1415 this.settings.zoomEnabled && a(e(this.selectors.productImageWrap)), 1416 StyleHatch.ajaxCartEnable && StyleHatch.AjaxCart.unload(), 1417 this.$container.destroyProductBox(); 1418 }, 1419 })), 1420 t 1421 ); 1422 })()), 1423 (StyleHatch.Collection = (function () { 1424 function t(t) { 1425 var a = (this.$container = e(t)); 1426 a.attr("data-section-id"); 1427 (this.$sortSelect = e(o.sortSelection, a)), 1428 (this.defaultSort = this._getDefaultSortValue()), 1429 (this.$viewButton = e(o.viewChange)), 1430 this.$sortSelect.on("change", this._onSortChange.bind(this)), 1431 this.$viewButton.on("click", this._onViewChange), 1432 (this.$productbox = e(o.productBox, a)), 1433 this._initSidebar(), 1434 this._initAdvancedTags(), 1435 a.productBox(), 1436 StyleHatch.currencyConverter && StyleHatch.CurrencyConverter.init(); 1437 } 1438 var a = { SORT_BY: "sort_by", DEFAULT_SORT: "title-ascending", VIEW: "view" }, 1439 o = { 1440 sortSelection: "#SortBy", 1441 defaultSort: ".sort-by__default-sort", 1442 viewChange: ".change-view", 1443 advancedFilter: ".advanced-filter a", 1444 filterCollection: ".mobile-aside-container > a.button.simple", 1445 mobileAside: ".mobile-aside-container aside", 1446 productBox: ".box.product .image-table", 1447 nestedMenu: "ul.nested-menu", 1448 }; 1449 return ( 1450 (t.prototype = e.extend({}, t.prototype, { 1451 _onSortChange: function (e) { 1452 var t = ""; 1453 (this.sort = this._getSortValue()), this.sort !== this.defaultSort && (t = [a.SORT_BY + "=" + this.sort]); 1454 var o = document.URL, 1455 n = o.indexOf("?") > -1; 1456 if (n) document.location.href = replaceUrlParam(o, a.SORT_BY, this.sort); 1457 else { 1458 var r = (document.location.search = t.length ? "?" + t : ""); 1459 document.location.href = this.$filterSelect.val() + r; 1460 } 1461 }, 1462 _getSortValue: function () { 1463 return this.$sortSelect.val() || this.defaultSort; 1464 }, 1465 _getDefaultSortValue: function () { 1466 return e(o.defaultSort, this.$container).val() || a.DEFAULT_SORT; 1467 }, 1468 _onViewChange: function (t) { 1469 var a = e(this).data("view"), 1470 o = document.URL, 1471 n = o.indexOf("?") > -1; 1472 n ? (window.location = replaceUrlParam(o, "view", a)) : (window.location = o + "?view=" + a), t.preventDefault(); 1473 }, 1474 _initSidebar: function () { 1475 e(o.filterCollection).on("click", function (t) { 1476 e(o.mobileAside).slideToggle(), t.preventDefault(); 1477 }), 1478 this.$container.find(o.nestedMenu).initNestedMenu(); 1479 }, 1480 _initAdvancedTags: function () { 1481 var t, 1482 a, 1483 n, 1484 r, 1485 i = e(o.advancedFilter); 1486 i.on("click", function (o) { 1487 (t = e(this).parent()), 1488 (a = t.data("group")), 1489 (n = t.data("handle")), 1490 (r = e('.active[data-group="' + a + '"]')), 1491 !t.hasClass("active") && r.size() && (o.preventDefault(), (location.href = location.href.replace(r.data("handle"), n).replace(/(&page=\d+)|(page=\d+&)|(\?page=\d+$)/, ""))); 1492 }); 1493 }, 1494 onUnload: function () { 1495 this.$sortSelect.off("change"), this.$viewButton.off("click"), e(o.advancedFilter).off("click"), this.$container.destroyProductBox(), this.$container.find(o.nestedMenu).destroyNestedMenu(); 1496 }, 1497 })), 1498 t 1499 ); 1500 })()), 1501 (StyleHatch.ListCollections = (function () { 1502 function t(t) { 1503 var o = (this.$container = e(t)), 1504 n = (o.attr("data-section-id"), o.data("layout")); 1505 o.find(".card__image"); 1506 (this.$productbox = e(a.productBox, o)), "preview" == n && o.productBox(), StyleHatch.currencyConverter && StyleHatch.CurrencyConverter.init(); 1507 } 1508 var a = { productBox: ".box .image-table" }; 1509 return ( 1510 (t.prototype = e.extend({}, t.prototype, { 1511 onUnload: function () { 1512 $container.destroyProductBox(); 1513 }, 1514 })), 1515 t 1516 ); 1517 })()), 1518 (StyleHatch.BlogArticle = (function () { 1519 function t(t) { 1520 var a = (this.$container = e(t)); 1521 a.attr("data-section-id"); 1522 this._initSidebar(), StyleHatch.videoLayout(); 1523 } 1524 var a = { filterCollection: ".mobile-aside-container > a.button.simple", mobileAside: ".mobile-aside-container aside", nestedMenu: "ul.nested-menu" }; 1525 return ( 1526 (t.prototype = e.extend({}, t.prototype, { 1527 _initSidebar: function () { 1528 e(a.filterCollection).on("click", function (t) { 1529 e(a.mobileAside).slideToggle(), t.preventDefault(); 1530 }), 1531 this.$container.find(a.nestedMenu).initNestedMenu(); 1532 }, 1533 onUnload: function () { 1534 e(a.filterCollection).off("click"), this.$container.find(a.nestedMenu).destroyNestedMenu(); 1535 }, 1536 })), 1537 t 1538 ); 1539 })()), 1540 (StyleHatch.Password = (function () { 1541 function t(t) { 1542 var a = (this.$container = e(t)), 1543 o = (a.attr("data-section-id"), e("#login_form")); 1544 e(".login-popup").magnificPopup({ 1545 type: "inline", 1546 midClick: !0, 1547 mainClass: "mfp-fade", 1548 closeBtnInside: !1, 1549 callbacks: { 1550 afterClose: function () { 1551 e("a").blur(), o.find(".errors").remove(); 1552 }, 1553 }, 1554 }), 1555 e("#mc-embedded-subscribe-form").on("submit", function () { 1556 e("p.signup-message").hide(), e("p.thanks-message").show(), e(this).find(".input-row").hide(); 1557 }), 1558 o.find(".errors").length > 0 && e(".login-popup").magnificPopup("open"); 1559 } 1560 return ( 1561 (t.prototype = e.extend({}, t.prototype, { 1562 onUnload: function () { 1563 e.magnificPopup.close(), e("#mc-embedded-subscribe-form").off("submit"); 1564 }, 1565 })), 1566 t 1567 ); 1568 })()), 1569 (StyleHatch.Cart = (function () { 1570 function t(t) { 1571 var a = (this.$container = e(t)); 1572 a.attr("data-section-id"); 1573 StyleHatch.quantitySelect(); 1574 } 1575 return (t.prototype = e.extend({}, t.prototype, { onUnload: function () {} })), t; 1576 })()), 1577 (StyleHatch.AjaxCart = (function () { 1578 function t() { 1579 p = { 1580 $body: e(d.body), 1581 $util: e(d.util), 1582 $cartPreview: e(d.cartPreview), 1583 $addToCartForm: e(d.addToCartForm),
1584 $addToCartButton: e(d.addToCartButton), 1585 $cartButton: e(d.cartButton), 1586 $cartCount: e(d.cartCount), 1587 $cartCost: e(d.cartCost), 1588 }; 1589 } 1590 function a() { 1591 t(), s(); 1592 } 1593 function o(t) { 1594 var t = t, 1595 a = t.find(".cart-error"), 1596 o = t.find("[data-AddToCartText]").html(), 1597 n = (t.find("[data-AddToCartText]").attr("data-added"), t.find("[data-AddToCartText]").attr("data-adding")); 1598 return ( 1599 t.find("[data-AddToCart]").addClass("added").prop("disabled", !0), 1600 t.find("[data-AddToCartText]").html(n), 1601 a.hide(), 1602 e 1603 .post( 1604 u.addURL, 1605 t.serialize(), 1606 function (a) { 1607 var n = a; 1608 e.get( 1609 u.cartURL, 1610 function (e) { 1611 var a = e; 1612 r(a), i(n, a); 1613 var s; 1614 s = setTimeout(function () { 1615 t.find("[data-AddToCart]").removeClass("added").prop("disabled", !1), t.find("[data-AddToCartText]").html(o); 1616 }, 500); 1617 }, 1618 "json" 1619 ); 1620 }, 1621 "text" 1622 ) 1623 .error(function (e) { 1624 if ("undefined" != typeof e && "undefined" != typeof e.status) { 1625 var n = JSON.parse(e.responseText); 1626 a.html("<strong>" + n.message + ":</strong> <em>" + n.description + "<em>"), a.slideDown(); 1627 } 1628 var r; 1629 r = setTimeout(function () { 1630 t.find("[data-AddToCart]").removeClass("added").prop("disabled", !1), t.find("[data-AddToCartText]").html(o); 1631 }, 500); 1632 }), 1633 !1 1634 ); 1635 } 1636 function n() { 1637 e.post(u.clearURL); 1638 } 1639 function r(e) { 1640 var t = (p.$cartButton, p.$cartCount), 1641 a = p.$cartCost, 1642 o = e.item_count, 1643 n = theme.Currency.formatMoney(e.total_price, StyleHatch.currencyFormat); 1644 t.text(o), a.removeClass("money"), a.html('<span class="money">' + n + "</span>"), StyleHatch.currencyConverter && Currency.convertAll(StyleHatch.shopCurrency, jQuery("[name=currencies]").val()); 1645 } 1646 function i(t, a) { 1647 var o = p.$util, 1648 n = p.$cartPreview; 1649 clearTimeout(p.hideCartPreview), p.$cartPreview.hide(); 1650 var r = a.item_count, 1651 i = theme.Currency.formatMoney(a.total_price, StyleHatch.currencyFormat), 1652 t = JSON.parse(t), 1653 s = t.product_title, 1654 l = t.variant_options, 1655 c = t.image, 1656 d = t.url, 1657 u = theme.Currency.formatMoney(t.price, StyleHatch.currencyFormat), 1658 f = (t.quantity, theme.Currency.formatMoney(t.line_price, StyleHatch.currencyFormat), n.find(".product-image").empty()); 1659 f.append('<img src="' + c + '" alt="' + s + '">'), f.attr("href", d); 1660 var h = n.find(".product-title"); 1661 h.html(s), h.attr("href", d); 1662 var y = n.find(".product-variant").empty(); 1663 e.each(l, function () { 1664 var e = this; 1665 e.toLowerCase().indexOf("default title") < 0 ? (y.show(), y.append("<li>" + e + "</li>")) : y.hide(); 1666 }); 1667 var m = n.find(".product-price"); 1668 m.removeClass("money"), m.html('<span class="money">' + u + "</span>"); 1669 var g = n.find(".item-count"); 1670 g.text(r), r > 1 ? (n.find(".count.plural").show(), n.find(".count.singular").hide()) : (n.find(".count.plural").hide(), n.find(".count.singular").show()); 1671 var v = n.find(".total-price"); 1672 v.html('<span class="money">' + i + "</span>"); 1673 var b = o.height(); 1674 n.css({ top: b }), 1675 n.fadeIn(300), 1676 (p.hideCartPreview = setTimeout(function () { 1677 n.fadeOut(300); 1678 }, 6e3)), 1679 n.find("a.continue-shopping").on("click", function (e) { 1680 n.fadeOut(300), e.preventDefault(); 1681 }), 1682 StyleHatch.currencyConverter && Currency.convertAll(StyleHatch.shopCurrency, jQuery("[name=currencies]").val()); 1683 } 1684 function s() { 1685 p.$addToCartForm.each(function () { 1686 e(this).on("submit", function (t) { 1687 var a = e(this); 1688 o(a), t.preventDefault(); 1689 }); 1690 }); 1691 } 1692 function l() { 1693 p.$addToCartForm.off("submit"); 1694 } 1695 function c() { 1696 l(), clearTimeout(p.hideCartPreview), p.$cartPreview.hide(); 1697 } 1698 var d = { 1699 body: "body", 1700 util: "header.util", 1701 cartPreview: "header.util .cart-preview", 1702 addToCartForm: "[data-AddToCartForm] > form", 1703 addToCartButton: "[data-AddToCartForm]", 1704 cartButton: "[data-CartButton]", 1705 cartCount: "#CartCount", 1706 cartCost: "#CartCost", 1707 }, 1708 u = { addURL: "/cart/add.js", cartURL: "/cart.js", clearURL: "/cart/clear.js" }, 1709 p = {}; 1710 return { init: a, clearCart: n, unload: c }; 1711 })()), 1712 (StyleHatch.CurrencyConverter = (function () { 1713 function t() { 1714 i = { $body: e(n.body), $money: e(n.money) }; 1715 } 1716 function a() { 1717 t(), o(); 1718 } 1719 function o() { 1720 (r.cookieCurrency = Currency.cookie.read()), 1721 e("span.money span.money").each(function () {
1722 e(this).parents(n.money).removeClass("money"); 1723 }), 1724 i.$money.each(function () { 1725 "" !== Currency.currentCurrency ? e(this).attr("data-currency-" + Currency.currentCurrency, e(this).html()) : e(this).attr("data-currency-" + StyleHatch.shopCurrency, e(this).html()); 1726 }), 1727 null == r.cookieCurrency 1728 ? StyleHatch.shopCurrency !== StyleHatch.defaultCurrency 1729 ? Currency.convertAll(StyleHatch.shopCurrency, StyleHatch.defaultCurrency) 1730 : (Currency.currentCurrency = StyleHatch.defaultCurrency) 1731 : e("[name=currencies]").size() && 0 === e("[name=currencies] option[value=" + r.cookieCurrency + "]").size() 1732 ? ((Currency.currentCurrency = StyleHatch.shopCurrency), Currency.cookie.write(StyleHatch.shopCurrency)) 1733 : r.cookieCurrency === StyleHatch.shopCurrency 1734 ? (Currency.currentCurrency = StyleHatch.shopCurrency) 1735 : Currency.convertAll(StyleHatch.shopCurrency, r.cookieCurrency), 1736 e("[name=currencies]") 1737 .val(Currency.currentCurrency) 1738 .change(function () { 1739 var t = e(this).val(); 1740 Currency.convertAll(Currency.currentCurrency, t), 1741 e(".selected-currency").text(Currency.currentCurrency), 1742 e("p.currency-at-checkout").length > 0 && (Currency.currentCurrency == StyleHatch.shopCurrency ? e("p.currency-at-checkout").hide() : e("p.currency-at-checkout").show()); 1743 }), 1744 e("[name=currencies]").val(Currency.currentCurrency).change(); 1745 } 1746 var n = { body: "body", money: "span.money" }, 1747 r = { enabled: !1 }, 1748 i = {}; 1749 return { init: a, config: r, convert: o }; 1750 })()), 1751 (window.theme = window.theme || {}), 1752 (window.slate = window.slate || {}), 1753 (theme.Images = (function () { 1754 function e(e, t) { 1755 "string" == typeof e && (e = [e]); 1756 for (var a = 0; a < e.length; a++) { 1757 var o = e[a]; 1758 this.loadImage(this.getSizedImageUrl(o, t)); 1759 } 1760 } 1761 function t(e) { 1762 new Image().src = e; 1763 } 1764 function a(e, t, a) { 1765 var o = this.imageSize(t.src), 1766 n = this.getSizedImageUrl(e.src, o); 1767 a ? a(n, e, t) : (t.src = n); 1768 } 1769 function o(e) { 1770 var t = e.match(/.+_((?:pico|icon|thumb|small|compact|medium|large|grande)|\d{1,4}x\d{0,4}|x\d{1,4})[_\.@]/); 1771 return null !== t ? t[1] : null; 1772 } 1773 function n(e, t) { 1774 if (null == t) return e; 1775 if ("master" === t) return this.removeProtocol(e); 1776 var a = e.match(/\.(jpg|jpeg|gif|png|bmp|bitmap|tiff|tif)(\?v=\d+)?$/i); 1777 if (null != a) { 1778 var o = e.split(a[0]), 1779 n = a[0]; 1780 return this.removeProtocol(o[0] + "_" + t + n); 1781 } 1782 return null; 1783 } 1784 function r(e) { 1785 return e.replace(/http(s)?:/, ""); 1786 } 1787 return { preload: e, loadImage: t, switchImage: a, imageSize: o, getSizedImageUrl: n, removeProtocol: r }; 1788 })()), 1789 (theme.Currency = (function () { 1790 function e(e, a) { 1791 function o(e, t, a, o) { 1792 if (((t = slate.utils.defaultTo(t, 2)), (a = slate.utils.defaultTo(a, ",")), (o = slate.utils.defaultTo(o, ".")), isNaN(e) || null == e)) return 0; 1793 e = (e / 100).toFixed(t); 1794 var n = e.split("."), 1795 r = n[0].replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1" + a), 1796 i = n[1] ? o + n[1] : ""; 1797 return r + i; 1798 } 1799 "string" == typeof e && (e = e.replace(".", "")); 1800 var n = "", 1801 r = /\{\{\s*(\w+)\s*\}\}/, 1802 i = a || t; 1803 switch (i.match(r)[1]) { 1804 case "amount": 1805 n = o(e, 2); 1806 break; 1807 case "amount_no_decimals": 1808 n = o(e, 0); 1809 break; 1810 case "amount_with_comma_separator": 1811 n = o(e, 2, ".", ","); 1812 break; 1813 case "amount_no_decimals_with_comma_separator": 1814 n = o(e, 0, ".", ","); 1815 break; 1816 case "amount_no_decimals_with_space_separator": 1817 n = o(e, 0, " "); 1818 } 1819 return i.replace(r, n); 1820 } 1821 var t = "${{amount}}"; 1822 return { formatMoney: e }; 1823 })()), 1824 (slate.utils = { 1825 findInstance: function (e, t, a) { 1826 for (var o = 0; o < e.length; o++) if (e[o][t] === a) return e[o]; 1827 }, 1828 removeInstance: function (e, t, a) { 1829 for (var o = e.length; o--; ) 1830 if (e[o][t] === a) { 1831 e.splice(o, 1); 1832 break; 1833 } 1834 return e; 1835 }, 1836 compact: function (e) { 1837 for (var t = -1, a = null == e ? 0 : e.length, o = 0, n = []; ++t < a; ) { 1838 var r = e[t]; 1839 r && (n[o++] = r); 1840 } 1841 return n; 1842 }, 1843 defaultTo: function (e, t) { 1844 return null == e || e !== e ? t : e; 1845 }, 1846 debounce: function (e, t, a) { 1847 var o; 1848 return function () { 1849 var n = this, 1850 r = arguments, 1851 i = function () { 1852 (o = null), a || e.apply(n, r); 1853 }, 1854 s = a && !o; 1855 clearTimeout(o), (o = setTimeout(i, t)), s && e.apply(n, r); 1856 }; 1857 }, 1858 }), 1859 (slate.Variants = (function () { 1860 function t(t) { 1861 (this.$container = t.$container), 1862 (this.product = t.product), 1863 (this.singleOptionSelector = t.singleOptionSelector), 1864 (this.originalSelectorId = t.originalSelectorId), 1865 (this.enableHistoryState = t.enableHistoryState), 1866 (this.enableSwatch = t.enableSwatch), 1867 (this.currentVariant = this._getVariantFromOptions()), 1868 e(this.singleOptionSelector, this.$container).on("change", this._onSelectChange.bind(this)); 1869 } 1870 return ( 1871 (t.prototype = e.extend({}, t.prototype, { 1872 _getCurrentOptions: function () { 1873 var t = e.map(e(this.singleOptionSelector, this.$container), function (t) { 1874 var a = e(t), 1875 o = a.attr("type"), 1876 n = {}; 1877 return "radio" === o || "checkbox" === o ? !!a[0].checked && ((n.value = a.val()), (n.index = a.data("index")), n) : ((n.value = a.val()), (n.index = a.data("index")), n); 1878 }); 1879 return (t = slate.utils.compact(t)); 1880 }, 1881 _getVariantFromOptions: function () { 1882 var e = this._getCurrentOptions(), 1883 t = this.product.variants, 1884 a = !1; 1885 return ( 1886 t.forEach(function (t) { 1887 var o = !0; 1888 t.options; 1889 e.forEach(function (e) { 1890 o && (o = e.value === t[e.index]); 1891 }), 1892 o && (a = t); 1893 }), 1894 a || null 1895 ); 1896 }, 1897 _onSelectChange: function () { 1898 var e = this._getVariantFromOptions(); 1899 this.$container.trigger({ type: "variantChange", variant: e }), 1900 e && (this._updateMasterSelect(e), this._updateImages(e), this._updatePrice(e), this._updateSKU(e), (this.currentVariant = e), this.enableHistoryState && this._updateHistoryState(e)); 1901 }, 1902 _updateImages: function (e) { 1903 var t = e.featured_image || {}, 1904 a = this.currentVariant.featured_image || {}; 1905 e.featured_image && t.src !== a.src && this.$container.trigger({ type: "variantImageChange", variant: e }); 1906 }, 1907 _updatePrice: function (e) { 1908 (e.price === this.currentVariant.price && e.compare_at_price === this.currentVariant.compare_at_price) || this.$container.trigger({ type: "variantPriceChange", variant: e }); 1909 }, 1910 _updateSKU: function (e) { 1911 e.sku !== this.currentVariant.sku && this.$container.trigger({ type: "variantSKUChange", variant: e }); 1912 }, 1913 _updateHistoryState: function (e) { 1914 if (history.replaceState && e) { 1915 var t = window.location.protocol + "//" + window.location.host + window.location.pathname + "?variant=" + e.id; 1916 window.history.replaceState({ path: t }, "", t); 1917 } 1918 }, 1919 _updateMasterSelect: function (t) { 1920 e(this.originalSelectorId, this.$container)[0].value = t.id; 1921 }, 1922 })), 1923 t 1924 ); 1925 })()), 1926 e.fn.extend({ 1927 productBox: function () { 1928 var t = e(this).find(".box.product figure"); 1929 t.on("click", function (t) { 1930 if (e(t.target).is(".vendor") || e(t.target).parent().is(".vendor")); 1931 else { 1932 t.preventDefault(); 1933 var a = e(this).find("a").attr("href"); 1934 t.shiftKey || t.ctrlKey || t.metaKey ? window.open(a, "_blank") : (window.location = a); 1935 } 1936 }), 1937 Modernizr.objectfit || 1938 t.find(".product_card__image-wrapper").each(function () { 1939 var t = e(this), 1940 a = t.find(".product_card__image.alt"); 1941 t.find("img").prop("src"); 1942 a.hide(), t.addClass("ie-fallback lazyload"); 1943 }); 1944 }, 1945 destroyProductBox: function () { 1946 var t = e(this).find(".box.product figure"); 1947 t.off("click"); 1948 }, 1949 initNestedMenu: function () { 1950 var t = e(this), 1951 a = t.find('a[aria-haspopup="true"]'), 1952 o = function (e) { 1953 var t = e.find("li.has-dropdown.expanded"); 1954 if (t.length > 0) { 1955 t.removeClass("expanded"); 1956 var a = t.find("> a"); 1957 a.attr("aria-expanded", "false"); 1958 var o = t.find("> ul.dropdown"); 1959 o.attr("aria-hidden", "true"), o.slide
1959Up(); 1960 var r = o.find("a"); 1961 r.attr("tabindex", "-1"), n(e); 1962 } 1963 }, 1964 n = function (e) { 1965 var t = e.find("li.has-sub-dropdown.expanded"); 1966 if (t.length > 0) { 1967 t.removeClass("expanded"); 1968 var a = t.find("> a"); 1969 a.attr("aria-expanded", "false"); 1970 var o = t.find("> ul.sub-dropdown"); 1971 o.attr("aria-hidden", "true"), o.slideUp(); 1972 var r = o.find("a"); 1973 r.attr("tabindex", "-1"), n(e); 1974 } 1975 }; 1976 a.on("click", function (t) { 1977 var a = e(this), 1978 r = a.parent(), 1979 i = r.find("> ul"), 1980 s = r.find("> ul > li > a"), 1981 l = a.closest("ul.nested-menu"); 1982 "true" !== a.attr("aria-expanded") && 1983 (t.preventDefault(), r.hasClass("has-dropdown") ? o(l) : n(l), a.attr("aria-expanded", "true"), r.addClass("expanded"), i.attr("aria-hidden", "false"), s.attr("tabindex", "0"), i.slideDown()); 1984 }); 1985 }, 1986 destroyNestedMenu: function () { 1987 var t = e(this), 1988 a = t.find('a[aria-haspopup="true"]'); 1989 a.off("click"); 1990 }, 1991 }), 1992 (StyleHatch.refreshFixTo = function () { 1993 StyleHatch.Promos.refreshFixTo(); 1994 var t = e("*").filter(function () { 1995 return e(this).data("fixtoInstance"); 1996 }); 1997 t.each(function (t) { 1998 e(this).data("fixto-instance")._running && e(this).fixTo("refresh"); 1999 }); 2000 }), 2001 (StyleHatch.videoLayout = function () { 2002 e(".rte").fitVids(); 2003 }), 2004 (StyleHatch.loginForms = function () { 2005 function e() { 2006 StyleHatch.cache.$recoverPasswordForm.show(), StyleHatch.cache.$customerLoginForm.hide(); 2007 } 2008 function t() { 2009 StyleHatch.cache.$recoverPasswordForm.hide(), StyleHatch.cache.$customerLoginForm.show(); 2010 } 2011 StyleHatch.cache.$recoverPasswordLink.on("click", function (t) { 2012 t.preventDefault(), e(), StyleHatch.updateHash("recover"); 2013 }), 2014 StyleHatch.cache.$hideRecoverPasswordLink.on("click", function (e) { 2015 e.preventDefault(), t(), StyleHatch.updateHash(); 2016 }), 2017 "#recover" == StyleHatch.getHash() && e(); 2018 }), 2019 (StyleHatch.initTemplates = function () { 2020 var e = StyleHatch.cache.$body, 2021 t = e.data("template"); 2022 switch (t) { 2023 case "addresses": 2024 StyleHatch.initCustomerAddressTemplate(); 2025 } 2026 }), 2027 (StyleHatch.initCustomerAddressTemplate = function () { 2028 if (StyleHatch.addressJSValidation) { 2029 var t = e('.customer-address input[type="submit"]'); 2030 t.on("click", function (t) { 2031 var a = e(this).closest("form"), 2032 o = a.find('input[name="address[last_name]"]'), 2033 n = a.find('input[name="address[address1]"]'), 2034 r = a.find('input[name="address[city]"]'), 2035 i = a.find('select[name="address[country]"]'), 2036 s = a.find('select[name="address[province]"]'), 2037 l = a.find('input[name="address[zip]"]'); 2038 o.val() || o.addClass("required"), 2039 n.val() || n.addClass("required"), 2040 r.val() || r.addClass("required"), 2041 "---" == i.val() && i.addClass("required"), 2042 s.closest(".input-row").is(":visible") && ((s.val() && "---" != s.val() && "" != s.val()) || s.addClass("required")), 2043 l.val() || l.addClass("required"); 2044 var c = a.find("input.required, select.required"); 2045 c.on("focus", function () { 2046 e(this).removeClass("required"); 2047 }), 2048 c.length > 0 ? (a.find("div.errors").parent().show(), t.preventDefault()) : a.find("div.errors").parent().hide(); 2049 }); 2050 } 2051 }), 2052 (StyleHatch.updateHash = function (t) { 2053 t 2054 ? ((window.location.hash = "#" + t), 2055 e("#" + t) 2056 .attr("tabindex", -1) 2057 .focus()) 2058 : (window.location.hash = ""); 2059 }), 2060 (StyleHatch.getHash = function () { 2061 return window.location.hash; 2062 }), 2063 (StyleHatch.quantitySelect = function () { 2064 var t = e(".quantity-select"); 2065 t.each(function () { 2066 var t = e(this), 2067 a = t.find(".adjust-minus"), 2068 o = t.find(".adjust-plus"), 2069 n = t.find("input.quantity"), 2070 r = n.val(); 2071 a.on("click", function (e) { 2072 (r = n.val()), r > 1 && (r--, n.val(r)), e.preventDefault(); 2073 }), 2074 o.on("click", function (e) { 2075 (r = n.val()), r++, n.val(r), e.preventDefault(); 2076 }); 2077 }); 2078 }), 2079 (StyleHatch.resetPasswordSuccess = function () { 2080 StyleHatch.cache.$passwordResetSuccess.show(); 2081 }), 2082 e(document).ready(function () { 2083 StyleHatch.init(); 2084 }); 2085})(jq223);
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.