{"version":3,"file":"js/store/product_list_pages/show-a55818e406aceaf98794.js","mappings":"4HAIAA,EAAAA,EAAAA,QAAcC,OAAQ,C,wJCJtB,IAAIC,EAAiBC,OAAOC,MAAQD,OAAOC,KAAKF,gBAAkBC,OAAOC,KAAKF,iBAC1EG,EAAUH,GAAkBA,EAAeI,iBAAmBJ,EAAeI,kBAC1E,MAAMC,EAAYF,GAAWA,EAAQE,UAAa,sB,yBCazDC,EAAAA,EAAAA,MAGAL,OAAOM,UAAYC,EAAQ,OAE3B,IAAIC,GAAkB,EAEf,MAAMC,UAAoBC,EAAAA,EAE/BC,WAAAA,IAAeC,GACbC,SAASD,GAETE,KAAKC,wBACP,CAEAA,sBAAAA,GACMP,IAGJA,GAAkB,EAGlBQ,EAAAA,EAAQC,IAAI,+BAAgCb,GAC9C,CAEAc,OAAAA,GAUEC,EAAAA,EAAiBC,KACfN,KAAKO,OAAOC,sBACZR,KAAKO,OAAOE,qBACZT,KAAKO,OAAOG,oBACZV,KAAKO,OAAOI,aACZX,KAAKO,OAAOK,WACZZ,KAAKO,OAAOM,mCACZb,KAAKO,OAAOO,iCACZd,KAAKO,OAAOQ,mBAGdf,KAAKgB,eACLhB,KAAKiB,oBACLjB,KAAKkB,gBAELC,EAAAA,EAAMC,SAASpB,KAAKqB,KACtB,CAEAL,YAAAA,GACE,IAAIM,SAASC,iBAAiB,gBAAgBC,SAASC,GAAO,IAAIjC,UAAUkC,MAAMD,GAAIE,QACxF,CAEAV,iBAAAA,GACEW,IAAAA,WACW5B,KAAK6B,KAAK,mBAChBC,GAAG,SAAS,SAASC,GAGxB,OAFAA,EAAEC,iBACF9C,OAAO+C,SAAS,CAACC,IAAK,EAAGC,SAAU,YAC5B,CACT,GACF,CAEAjB,aAAAA,GACE,IAAII,SAASC,iBAAiB,+BAA+BC,SAASC,GAAO,IAAIjC,UAAU4C,QAAQX,IACrG,E,wDCpFK,MAAMpB,EAEX,WAAOC,CACL+B,EACAC,EACAC,EACA5B,EACAC,EACAE,EACAD,EACAE,GAEA7B,OAAOsD,UAAYtD,OAAOsD,WAAa,GACvCtD,OAAOsD,UAAUC,KAAK,CACpB,oBAAuB3B,EACvB,sBAAyBD,EACzB,WAAcD,EACd,kBAAqBG,IAGnBsB,GAAoBC,GAAkBC,GAAiB5B,GAGzD,SAAU+B,EAAGC,EAAGC,EAAGC,EAAGC,GACpBJ,EAAEG,GAAGH,EAAEG,IAAI,GACXH,EAAEG,GAAGJ,KAAK,CAAC,aAAa,IAAIM,MAAOC,UAAWC,MAAM,WACpD,IAAIC,EAAEP,EAAEQ,qBAAqBP,GAAG,GAC5BQ,EAAET,EAAEU,cAAcT,GAAgCQ,EAAEE,OAAM,EAC1DF,EAAEG,IAAI,WAAW5C,eAA0BmC,EAAK,aAAaR,iBAA8BC,sBAC3FW,EAAEM,WAAWC,aAAaL,EAAEF,EACjC,CAPD,CAOGhE,OAAQoC,SAAU,SAAU,YAAae,EAGhD,CAEA,eAAOjB,CAASsC,GACdxE,OAAOsD,UAAUC,KAAK,CACpB,WAAciB,EAAWC,iBAAiBC,UAC1C,WAAcF,EAAWC,iBAAiBE,YAGxCH,EAAWI,OACb5E,OAAOsD,UAAUC,KAAK,CACpB,aAAgBiB,EAAWI,MAAMC,YACjC,aAAgBL,EAAWI,MAAME,YACjC,YAAeN,EAAWI,MAAMG,WAChC,UAAaP,EAAWI,MAAMI,SAC9B,MAASR,EAAWI,MAAMK,MAC1B,SAAYT,EAAWI,MAAMM,WAI7BV,EAAWW,MACbnF,OAAOsD,UAAUC,KAAK,CACpB,MAAS,gBACT,KAAQiB,EAAWW,KAAKC,OAIxBZ,EAAWC,kBAAoBD,EAAWC,iBAAiBY,cAC7DrF,OAAOsD,UAAUC,KAAK,CACpB,eAAkBiB,EAAWC,iBAAiBY,aAAaC,YAC3D,eAAkBd,EAAWC,iBAAiBY,aAAaE,MAC3D,sBAAyBf,EAAWC,iBAAiBY,aAAaG,WAClE,UAAahB,EAAWC,iBAAiBY,aAAaI,WAG5D,CAEA,qBAAOC,CAAelB,GACpBxE,OAAOsD,UAAUC,KAAK,CACpB,SAAYiB,EAAWmB,WAAWC,GAClC,cAAiBpB,EAAWmB,WAAWE,QACvC,aAAgBrB,EAAWmB,WAAWG,OACtC,WAActB,EAAWmB,WAAWI,KACpC,YAAevB,EAAWmB,WAAWK,MACrC,eAAkBxB,EAAWmB,WAAWM,SACxC,cAAiBzB,EAAWmB,WAAWO,QACvC,mBAAsB1B,EAAWmB,WAAWQ,aAC5C,wBAA2B3B,EAAWmB,WAAWS,kBACjD,uBAA0B5B,EAAWmB,WAAWU,iBAChD,eAAkB7B,EAAWc,YAC7B,qBAAwBd,EAAWmB,WAAWW,eAC9C,UAAa9B,EAAWmB,WAAWY,IACnC,eAAkB/B,EAAWmB,WAAWa,SACxC,sBAAyBhC,EAAWgB,WACpC,yBAA4BhB,EAAWiC,cACvC,6BAAgCjC,EAAWkC,kBAE/C,CAEA,0BAAOC,CAAoBnC,GACzBxE,OAAOsD,UAAUC,KAAK,CACpB,aAAgBiB,EAAWc,YAAYsB,KACvC,iBAAoBpC,EAAWc,YAAYuB,SAC3C,cAAiBrC,EAAWc,YAAYwB,MACxC,aAAgB,CAAC,CACf,QAAWtC,EAAWc,YAAYM,GAClC,UAAapB,EAAWc,YAAYsB,KACpC,cAAiBpC,EAAWc,YAAYuB,SACxC,aAAgBrC,EAAWc,YAAYyB,UAEzC,oBAAuB,CAAC,CACtB,WAAcvC,EAAWc,YAAYM,GACrC,aAAgBpB,EAAWc,YAAYsB,KACvC,aAAgB,UAChB,MAASpC,EAAWc,YAAY0B,gBAGtC,E,sGCvGK,MAAM/E,EAEXgF,cAAa,KAAGC,EAAAA,EAAH,GAEbD,8BAA6B,KAAG9F,EAAAA,EAAH,GAE7B,eAAOe,CAASC,GACdrB,KAAKqG,uBAAuBjF,SAASC,EACvC,CAEA,0BAAOwE,CAAoBxE,GACzBrB,KAAKqG,uBAAuBR,oBAAoBxE,EAAKsC,iBAAiBkC,oBACxE,CAQA,qBAAOjB,CAAevD,EAAMiF,GAC1B,IAAIC,EAAUlF,EAAKmF,SAASC,SAE5B,OAAIH,IAAuBC,IAG3BG,IAAAA,IAAU,qBAAsBH,GAEhCvG,KAAKqG,uBAAuBzB,eAAevD,EAAKsC,iBAAiBiB,iBAE1D,EACT,E,mGCnCK,MAAM+B,EAAcC,GAAe,cAAcA,EACtDC,gBAAAA,CAAiBC,GACVA,IAIL9G,KAAK+G,iBAAmB,CACtBC,OAAQ,GACRC,MAAO,IAGTjH,KAAKkH,YAAYlH,KAAKmH,2BAA2BC,KAAKpH,OACxD,CAEAqH,MAAAA,CAAOC,GACLtH,KAAKuH,oBAAoB,UAEzBvH,KAAKwH,KAAKH,OACR,SAAUI,GACR,OAAOzH,KAAK0H,YAAYD,EAAMH,EAChC,EAAEF,KAAKpH,OAGTA,KAAKuH,oBAAoB,QAC3B,CAEAI,YAAAA,CAAaC,GACX5H,KAAK+G,iBAAiBC,OAAOvE,KAAKmF,EACpC,CAEAV,WAAAA,CAAYU,GACV5H,KAAK+G,iBAAiBE,MAAMxE,KAAKmF,EACnC,CAEAT,0BAAAA,GACE,IAAIG,EAAUtH,KAAK6H,KAAKP,SAOC,IANjBQ,OAAOC,KAAKT,GAASU,IAC3B,SAAUC,GACR,OAAOjI,KAAKkI,YAAYZ,EAAQW,GAClC,EAAEb,KAAKpH,OAGHmI,SAAQ,GACZnI,KAAK6H,KAAKO,iBAAiBzG,OAE3B3B,KAAK6H,KAAKO,iBAAiBC,MAE/B,CAGAH,WAAAA,CAAYb,GACV,OAAIA,aAAkBiB,MACbjB,EAAOkB,OAAS,IAEdlB,CAEb,CAEAE,mBAAAA,CAAoBiB,GAClB,IAAInH,EAAO,CACToH,WAAYzI,KAAKwH,KAAKkB,cAAcH,QAEtCI,EAAAA,GAAAA,KAAO3I,KAAK+G,iBAAiByB,IAAO,SAAUZ,GAC5CA,EAASvG,EACX,GACF,CAEAqG,WAAAA,CAAYD,EAAMH,GAChB,IAAIsB,EAAe5I,KAAK6I,mBAAmBpB,EAAMH,EAAgB,QAC7DwB,EAAgB9I,KAAK+I,oBAAoBtB,EAAMH,EAAiB,SAChE0B,EAAsBhJ,KAAKiJ,0BAA0BxB,EAAMH,EAAsB,cAErF,OAAOsB,GAAgBE,GAAiBE,CAC1C,CAEAH,kBAAAA,CAAmBpB,EAAMyB,GACvB,IAAIC,EACAC,EACApD,EACAqD,EAkBJ,OAhBAA,GAAU,EACVrD,EAAQsD,SAAS7B,EAAK8B,SAASvD,MAAO,IAElCkD,GAAgBA,EAAaX,OAC/BI,EAAAA,GAAAA,KAAOO,GAAc,SAAUM,GAC7BL,EAAWG,SAASE,EAAW,GAAI,IACnCJ,EAAYE,SAASE,EAAW,GAAI,IAEhCxD,GAASmD,GAAYnD,GAASoD,IAChCC,GAAU,EAEd,IAEAA,GAAU,EAGLA,CACT,CAEAN,mBAAAA,CAAoBtB,EAAMgC,GACxB,OAAIA,IAAiBA,EAAclB,SAC0B,IAApDI,EAAAA,GAAAA,QAAUc,EAAehC,EAAK8B,SAASG,OAIlD,CAEAT,yBAAAA,CAA0BxB,EAAMkC,GAC9B,OAAIA,GACKlC,EAAK8B,SAASK,eAAiBD,CAI1C,GCpHWE,EAAYjD,GAAe,cAAcA,EACpDkD,cAAAA,CAAeC,GACRA,IAIL/J,KAAKgK,eAAiB,CACpBhD,OAAQ,GACRC,MAAO,IAEX,CAEAgD,IAAAA,CAAKC,GACHlK,KAAKmK,kBAAkB,UAEvBnK,KAAKwH,KAAKyC,KAAKC,EAAaD,KAAM,CAChCG,MAAOF,EAAaE,QAGtBpK,KAAKmK,kBAAkB,QACzB,CAEAE,UAAAA,CAAWzC,GACT5H,KAAKgK,eAAehD,OAAOvE,KAAKmF,EAClC,CAEA0C,SAAAA,CAAU1C,GACR5H,KAAKgK,eAAe/C,MAAMxE,KAAKmF,EACjC,CAEAuC,iBAAAA,CAAkB3B,GAChB,IAAInH,EAAO,CACTkJ,OAAQvK,KAAK6H,KAAKqC,aAAaD,MAGjCjK,KAAKgK,eAAexB,GAAMhH,SAAQ,SAAUoG,GAC1CA,EAASvG,EACX,GACF,GCjCWmJ,EAAY5D,GAAe,cAAcD,EAAWkD,EAASjD,KACxE6D,UAAAA,CAAWrL,GASTA,EAAUsL,IAAAA,OAAS,CAAC,EARC,CACnBC,SAAU,GACVC,SAAU,CACRC,WAAW,EACXC,SAAS,EACTC,cAAc,IAGqB3L,GAAS,GAGhDY,KAAKwH,KAAO,IAAIwD,IAAJ,CAAShL,KAAKiL,IAAIC,IAAI,GAAI,CACpCC,UAAWnL,KAAKiL,IAAIG,SAAS,MAAMC,KAAK,SACxCC,WAAY,CAAC,CAACjK,KAAMjC,EAAQuL,aAG9B3K,KAAK6G,iBAAiBzH,EAAQwL,SAASC,WACvC7K,KAAK8J,eAAe1K,EAAQwL,SAASE,QACvC,GCtBK,MAAMS,UAAoBf,EAAS5K,EAAAA,IACxC4L,IAAAA,GACExL,KAAKqE,KAAOrE,KAAKZ,QAAQiF,KAEzBrE,KAAKyK,WAAW,CACdG,SAAU,CACRG,cAAc,IAGpB,ECRFnL,EAAAA,EAAUU,KAAK,cAAcX,EAAAA,EAC3BS,OAAAA,GACEL,MAAMK,UACN,IAAImL,EAAY,eAAgB,CAAElH,KAAMrE,KAAKqB,KAAKgD,OAAQmH,MAC5D,G","sources":["webpack://titan/./app/webpack_assets/javascripts/application.js","webpack://titan/./app/webpack_assets/javascripts/lib/time_zone.js","webpack://titan/./app/webpack_assets/javascripts/layouts/store_layout.js","webpack://titan/./app/webpack_assets/javascripts/lib/integrations/google_tag_manager.js","webpack://titan/./app/webpack_assets/javascripts/lib/store/event.js","webpack://titan/./app/webpack_assets/javascripts/lib/store/concerns/filterable.js","webpack://titan/./app/webpack_assets/javascripts/lib/store/concerns/sortable.js","webpack://titan/./app/webpack_assets/javascripts/lib/store/concerns/listable.js","webpack://titan/./app/webpack_assets/javascripts/store/components/product_list.js","webpack://titan/./app/webpack_assets/packs/store/product_list_pages/show.js"],"sourcesContent":["import { Turbo } from \"@hotwired/turbo-rails\";\nimport \"./controllers\";\n\n// Turn off turbo-drive by default unless \"opted in\"\nTurbo.session.drive = false;\n","let DateTimeFormat = window.Intl && window.Intl.DateTimeFormat && window.Intl.DateTimeFormat();\nlet options = DateTimeFormat && DateTimeFormat.resolvedOptions && DateTimeFormat.resolvedOptions();\nexport const timeZone = (options && options.timeZone) || 'America/Los_Angeles';\n\n\n","import smoothscroll from 'smoothscroll-polyfill';\n// import function to register Swiper custom elements\nimport { register } from 'swiper/element/bundle';\nimport 'lazysizes'; // lazy load logos in footer\nimport 'javascripts/lib/compat/bootstrap';\n\nimport Cookies from 'js-cookie';\nimport {Component} from \"javascripts/lib/component\";\nimport {Event} from \"javascripts/lib/store/event\";\nimport {timeZone} from \"javascripts/lib/time_zone\"; // TODO consider making this a function\nimport {GoogleTagManager} from \"javascripts/lib/integrations/google_tag_manager\";\n\n// Import our custom behaviors\nimport \"../application\";\n// register Swiper custom elements\nregister();\n\n/* global bootstrap */\nwindow.bootstrap = require('bootstrap');\n\nlet initializersRun = false;\n\nexport class StoreLayout extends Component {\n\n constructor(...args) {\n super(...args);\n\n this._runLayoutInitializers();\n }\n\n _runLayoutInitializers() {\n if (initializersRun) {\n return;\n }\n initializersRun = true;\n\n // Sets the users timezone, was in time_zone.js initializer\n Cookies.set('titan.browser.time_zone_name', timeZone);\n }\n\n didLoad() {\n /**\n * We load the scripts that have the possibility of running for >50ms on init first so the TTI\n * (time to interactive) is not higher than it needs to be.\n *\n * More on this here:\n * - https://docs.google.com/document/d/1GGiI9-7KeY3TPqS3YT271upUVimo-XiL5mwWorDUD4c/edit#\n * - https://www.searchenginejournal.com/a-technical-seo-guide-to-lighthouse-performance-metrics/292703/\n */\n\n GoogleTagManager.load(\n this.config.googleTagManagerToken,\n this.config.googleTagManagerAuth,\n this.config.googleTagManagerEnv,\n this.config.gtmServerUrl,\n this.config.customerId,\n this.config.googleTagManageremailAddressSHA256,\n this.config.googleTagManageremailAddressSHA1,\n this.config.klaviyoExternalId\n );\n\n this._initNotices();\n this._initBackToTopBtn();\n this._initTooltips();\n\n Event.pageView(this.data);\n }\n\n _initNotices() {\n [...document.querySelectorAll('.toast-init')].forEach((el) => new bootstrap.Toast(el).show());\n }\n\n _initBackToTopBtn() {\n smoothscroll.polyfill();\n let $btn = this.hook('btn-back-to-top');\n $btn.on('click', function(e) {\n e.preventDefault();\n window.scrollTo({top: 0, behavior: 'smooth'});\n return false;\n });\n }\n\n _initTooltips() {\n [...document.querySelectorAll('[data-bs-toggle=\"tooltip\"]')].forEach((el) => new bootstrap.Tooltip(el));\n }\n}\n","export class GoogleTagManager {\n\n static load(\n tagManagerToken,\n tagManagerAuth,\n tagManagerEnv,\n gtmServerUrl,\n customerId,\n googleTagManageremailAddressSHA1,\n googleTagManageremailAddressSHA256,\n klaviyoExternalId\n ) {\n window.dataLayer = window.dataLayer || [];\n window.dataLayer.push({\n 'customer_email_sha1': googleTagManageremailAddressSHA1,\n 'customer_email_sha256': googleTagManageremailAddressSHA256,\n 'customerId': customerId,\n 'klaviyoExternalId': klaviyoExternalId,\n });\n\n if (tagManagerToken && tagManagerAuth && tagManagerEnv && gtmServerUrl) {\n /* eslint-disable */\n // Boilerplate GA install snippet\n (function(w, d, s, l, i) {\n w[l]=w[l]||[];\n w[l].push({'gtm.start': new Date().getTime(), event:'gtm.js'});\n var f=d.getElementsByTagName(s)[0],\n j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;\n j.src=`https://${gtmServerUrl}/gtm.js?id=`+i+dl+`>m_auth=${tagManagerAuth}>m_preview=${tagManagerEnv}>m_cookies_win=x`;\n f.parentNode.insertBefore(j,f);\n })(window, document, 'script', 'dataLayer', tagManagerToken);\n /* eslint-enable */\n }\n }\n\n static pageView(customData) {\n window.dataLayer.push({\n 'cart_value': customData.googleTagManager.cartValue,\n 'cart_items': customData.googleTagManager.cartItems\n });\n\n if (customData.fbAds) {\n window.dataLayer.push({\n 'content_name': customData.fbAds.contentName,\n 'content_type': customData.fbAds.contentType,\n 'content_ids': customData.fbAds.contentIds,\n 'num_items': customData.fbAds.numItems,\n 'value': customData.fbAds.value,\n 'currency': customData.fbAds.currency\n });\n }\n\n if (customData.page) {\n window.dataLayer.push({\n 'event': 'category_view',\n 'slug': customData.page.slug\n });\n }\n\n if (customData.googleTagManager && customData.googleTagManager.checkoutFlow) {\n window.dataLayer.push({\n 'checkout_items': customData.googleTagManager.checkoutFlow.productData,\n 'checkout_total': customData.googleTagManager.checkoutFlow.total,\n 'checkout_items_tiktok': customData.googleTagManager.checkoutFlow.tikTokData,\n 'itemNames': customData.googleTagManager.checkoutFlow.itemNames\n });\n }\n }\n\n static orderCompleted(customData) {\n window.dataLayer.push({\n 'order_id': customData.actionData.id,\n 'order_revenue': customData.actionData.revenue,\n 'order_coupon': customData.actionData.coupon,\n 'order_city': customData.actionData.city,\n 'order_state': customData.actionData.state,\n 'order_zip_code': customData.actionData.zip_code,\n 'order_country': customData.actionData.country,\n 'order_email_sha256': customData.actionData.email_sha256,\n 'order_first_name_sha256': customData.actionData.first_name_sha256,\n 'order_last_name_sha256': customData.actionData.last_name_sha256,\n 'order_products': customData.productData,\n 'order_total_discount': customData.actionData.total_discount,\n 'order_tax': customData.actionData.tax,\n 'order_shipping': customData.actionData.shipping,\n 'order_products_tiktok': customData.tikTokData,\n 'order_products_attentive': customData.attentiveData,\n 'order_products_impact_radius': customData.impactRadiusData\n });\n }\n\n static productDetailViewed(customData) {\n window.dataLayer.push({\n 'product_name': customData.productData.name,\n 'product_category': customData.productData.category,\n 'product_price': customData.productData.price,\n 'product_data': [{\n 'item_id': customData.productData.id,\n 'item_name': customData.productData.name,\n 'item_category': customData.productData.category,\n 'item_variant': customData.productData.variant,\n }],\n 'product_data_tiktok': [{\n 'content_id': customData.productData.id,\n 'content_name': customData.productData.name,\n 'content_type': 'product',\n 'price': customData.productData.price_tiktok,\n }]\n });\n }\n}\n","import store from 'store';\nimport {Logger} from \"javascripts/lib/logger\";\nimport {GoogleTagManager} from \"javascripts/lib/integrations/google_tag_manager\";\n\n\n/* eslint-disable max-lines */\nexport class Event {\n\n static logger = Logger;\n\n static googleTagManagerClient = GoogleTagManager;\n\n static pageView(data) {\n this.googleTagManagerClient.pageView(data);\n }\n\n static productDetailViewed(data) {\n this.googleTagManagerClient.productDetailViewed(data.googleTagManager.productDetailViewed);\n }\n\n /**\n * triggered when user completes the checkout flow and reaches the order_completed page\n * @param {JSON} data jbuilder data\n * @param {int} lastOrderCompleted ID of last completed order\n * @return {boolean} return true if event is fired. false, otherwise.\n */\n static orderCompleted(data, lastOrderCompleted) {\n let orderId = data.checkout.order_id;\n\n if (lastOrderCompleted === orderId) return false;\n\n // set the orderId so that next time we don't try sending these again\n store.set('lastOrderCompleted', orderId);\n\n this.googleTagManagerClient.orderCompleted(data.googleTagManager.orderCompleted);\n\n return true;\n }\n}\n","import _ from 'underscore';\n\nexport const Filterable = (superclass) => class extends superclass {\n actsAsFilterable(filteringEnabled) {\n if (!filteringEnabled) {\n return;\n }\n\n this._filterCallbacks = {\n before: [],\n after: []\n };\n\n this.afterFilter(this._updateBtnClearFilterState.bind(this));\n }\n\n filter(filters) {\n this._runFilterCallbacks('before');\n\n this.list.filter(\n function (item) {\n return this._filterItem(item, filters);\n }.bind(this)\n );\n\n this._runFilterCallbacks('after');\n }\n\n beforeFilter(callback) {\n this._filterCallbacks.before.push(callback);\n }\n\n afterFilter(callback) {\n this._filterCallbacks.after.push(callback);\n }\n\n _updateBtnClearFilterState() {\n let filters = this.menu.filters;\n let m = Object.keys(filters).map(\n function (k) {\n return this._hasFilters(filters[k]);\n }.bind(this)\n );\n\n if (m.indexOf(true) !== -1) {\n this.menu.$btnClearFilters.show();\n } else {\n this.menu.$btnClearFilters.hide();\n }\n }\n\n // returns false if a filter has something set on it\n _hasFilters(filter) {\n if (filter instanceof Array) {\n return filter.length > 0;\n } else {\n return !!filter;\n }\n }\n\n _runFilterCallbacks(kind) {\n let data = {\n itemsCount: this.list.matchingItems.length\n };\n _.each(this._filterCallbacks[kind], function (callback) {\n callback(data);\n });\n }\n\n _filterItem(item, filters) {\n let matchesPrice = this._filterItemByPrice(item, filters['prices']);\n let matchesFormat = this._filterItemByFormat(item, filters['formats']);\n let matchesPersonalized = this._filterItemByPersonalized(item, filters['personalized']);\n\n return matchesPrice && matchesFormat && matchesPersonalized;\n }\n\n _filterItemByPrice(item, priceFilters) {\n let lowPrice;\n let highPrice;\n let price;\n let include;\n\n include = false;\n price = parseInt(item.values().price, 10);\n\n if (priceFilters && priceFilters.length) {\n _.each(priceFilters, function (priceRange) {\n lowPrice = parseInt(priceRange[0], 10);\n highPrice = parseInt(priceRange[1], 10);\n\n if (price >= lowPrice && price <= highPrice) {\n include = true;\n }\n });\n } else {\n include = true;\n }\n\n return include;\n }\n\n _filterItemByFormat(item, formatFilters) {\n if (formatFilters && formatFilters.length) {\n return _.indexOf(formatFilters, item.values().format) !== -1;\n } else {\n return true;\n }\n }\n\n _filterItemByPersonalized(item, personalizedFilter) {\n if (personalizedFilter) {\n return item.values().personalized === personalizedFilter;\n } else {\n return true;\n }\n }\n};\n","export const Sortable = (superclass) => class extends superclass {\n actsAsSortable(sortingEnabled) {\n if (!sortingEnabled) {\n return;\n }\n\n this._sortCallbacks = {\n before: [],\n after: []\n };\n }\n\n sort(sortCriteria) {\n this._runSortCallbacks('before');\n\n this.list.sort(sortCriteria.sort, {\n order: sortCriteria.order\n });\n\n this._runSortCallbacks('after');\n }\n\n beforeSort(callback) {\n this._sortCallbacks.before.push(callback);\n }\n\n afterSort(callback) {\n this._sortCallbacks.after.push(callback);\n }\n\n _runSortCallbacks(kind) {\n let data = {\n sortBy: this.menu.sortCriteria.sort\n };\n\n this._sortCallbacks[kind].forEach(function (callback) {\n callback(data);\n });\n }\n};\n","import $ from 'jquery';\nimport List from 'list.js';\nimport {Filterable} from \"javascripts/lib/store/concerns/filterable\";\nimport {Sortable} from \"javascripts/lib/store/concerns/sortable\";\n\nexport const Listable = (superclass) => class extends Filterable(Sortable(superclass)) {\n actsAsList(options) {\n let defaultOptions = {\n filterOn: [],\n features: {\n filtering: false,\n sorting: false,\n textToggling: false\n }\n };\n options = $.extend({}, defaultOptions, options, true);\n // initialize a List to manage adding/removing list items from the DOM\n // see: https://listjs.com for docs\n this.list = new List(this.$el.get(0), {\n listClass: this.$el.children('ul').attr('class'),\n valueNames: [{data: options.filterOn}]\n });\n\n this.actsAsFilterable(options.features.filtering);\n this.actsAsSortable(options.features.sorting);\n }\n};\n","import { Component } from \"javascripts/lib/component\";\nimport { Listable } from \"javascripts/lib/store/concerns/listable\";\n\nexport class ProductList extends Listable(Component) {\n init() {\n this.page = this.options.page;\n\n this.actsAsList({\n features: {\n textToggling: true\n }\n });\n }\n}\n","import { Component } from \"javascripts/lib/component\";\nimport { StoreLayout } from \"javascripts/layouts/store_layout\";\nimport { ProductList } from 'javascripts/store/components/product_list';\n\nComponent.load(class extends StoreLayout {\n didLoad() {\n super.didLoad();\n new ProductList('product-list', { page: this.data.page }).init();\n }\n});\n"],"names":["Turbo","drive","DateTimeFormat","window","Intl","options","resolvedOptions","timeZone","register","bootstrap","require","initializersRun","StoreLayout","Component","constructor","args","super","this","_runLayoutInitializers","Cookies","set","didLoad","GoogleTagManager","load","config","googleTagManagerToken","googleTagManagerAuth","googleTagManagerEnv","gtmServerUrl","customerId","googleTagManageremailAddressSHA256","googleTagManageremailAddressSHA1","klaviyoExternalId","_initNotices","_initBackToTopBtn","_initTooltips","Event","pageView","data","document","querySelectorAll","forEach","el","Toast","show","smoothscroll","hook","on","e","preventDefault","scrollTo","top","behavior","Tooltip","tagManagerToken","tagManagerAuth","tagManagerEnv","dataLayer","push","w","d","s","l","i","Date","getTime","event","f","getElementsByTagName","j","createElement","async","src","parentNode","insertBefore","customData","googleTagManager","cartValue","cartItems","fbAds","contentName","contentType","contentIds","numItems","value","currency","page","slug","checkoutFlow","productData","total","tikTokData","itemNames","orderCompleted","actionData","id","revenue","coupon","city","state","zip_code","country","email_sha256","first_name_sha256","last_name_sha256","total_discount","tax","shipping","attentiveData","impactRadiusData","productDetailViewed","name","category","price","variant","price_tiktok","static","Logger","googleTagManagerClient","lastOrderCompleted","orderId","checkout","order_id","store","Filterable","superclass","actsAsFilterable","filteringEnabled","_filterCallbacks","before","after","afterFilter","_updateBtnClearFilterState","bind","filter","filters","_runFilterCallbacks","list","item","_filterItem","beforeFilter","callback","menu","Object","keys","map","k","_hasFilters","indexOf","$btnClearFilters","hide","Array","length","kind","itemsCount","matchingItems","_","matchesPrice","_filterItemByPrice","matchesFormat","_filterItemByFormat","matchesPersonalized","_filterItemByPersonalized","priceFilters","lowPrice","highPrice","include","parseInt","values","priceRange","formatFilters","format","personalizedFilter","personalized","Sortable","actsAsSortable","sortingEnabled","_sortCallbacks","sort","sortCriteria","_runSortCallbacks","order","beforeSort","afterSort","sortBy","Listable","actsAsList","$","filterOn","features","filtering","sorting","textToggling","List","$el","get","listClass","children","attr","valueNames","ProductList","init"],"sourceRoot":""}