1if (typeof jQuery.cookie === "function") { 2Shopify.Products = function() { 3 var e = { howManyToShow: 3, howManyToStoreInMemory: 10, wrapperId: "recently-viewed-products", templateId: "recently-viewed-product-template", onComplete: null }, 4 n = [], 5 t = null, 6 o = null, 7 r = 0, 8 i = { 9 configuration: { expires: 90, path: "/", domain: window.location.hostname }, 10 name: "shopify_recently_viewed", 11 write: function(e) { jQuery.cookie(this.name, e.join(" "), this.configuration) }, 12 read: function() { 13 var e = [], 14 n = jQuery.cookie(this.name); 15 return null !== n && null != n && (e = n.split(" ")), e 16 }, 17 destroy: function() { jQuery.cookie(this.name, null, this.configuration) }, 18 remove: function(e) { 19 var n = this.read(), 20 t = jQuery.inArray(e, n); - 1 !== t && (n.splice(t, 1), this.write(n)) 21 } 22 }, 23 a = function() { n.length && r < e.howManyToShow ? jQuery.ajax({ dataType: "json", url: window.router + "/products/" + n[0] + ".js", cache: !1, success: function(e) { o.tmpl(e).appendTo(t), n.shift(), r++, a() }, error: function() { i.remove(n[0]), n.shift(), a() } }) : function() { if (t.show(), e.onComplete) try { e.onComplete() } catch (e) {} }() }; 24 return { 25 resizeImage: function(e, n) { 26 if (null == n) return e; 27 if ("master" == n) return e.replace(/http(s)?:/, ""); 28 var t = e.match(/\.(jpg|jpeg|gif|png|bmp|bitmap|tiff|tif)(\?v=\d+)?/i); 29 if (null != t && null != t) { 30 var o = e.split(t[0]), 31 r = t[0]; 32 return (o[0] + "_" + n + r).replace(/http(s)?:/, "") 33 } 34 return null 35 }, 36 showRecentlyViewed: function(r) { r = r || {}, jQuery.extend(e, r), n = i.read(), o = jQuery("#" + e.templateId), t = jQuery("#" + e.wrapperId), e.howManyToShow = Math.min(n.length, e.howManyToShow), e.howManyToShow && o.length && t.length && a() }, 37 getConfig: function() { return e }, 38 clearList: function() { i.destroy() }, 39 recordRecentlyViewed: function(n) { 40 n = n || {}, jQuery.extend(e, n); 41 var t = i.read(); 42 if (-1 !== window.location.pathname.indexOf("/products/")) { 43 var o = $('[data-main-product-handle]').attr('data-main-product-handle'), 44 r = jQuery.inArray(o, t); - 1 === r ? (t.unshift(o), t = t.splice(0, e.howManyToStoreInMemory)) : (t.splice(r, 1), t.unshift(o)), i.write(t) 45 } 46 } 47 } 48}(); 49}
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.