{"version":3,"file":"/js/dest/comparison-tool.js","mappings":"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","sources":["webpack:///./js/components/comparison-tool/index.js"],"sourcesContent":["import Alpine from \"alpinejs\";\nimport Swal from \"sweetalert2/dist/sweetalert2\";\n\nwindow.sessionCookieStorage = {\n getItem(key) {\n const cookies = document.cookie.split(\";\");\n\n for (let i = 0; i < cookies.length; i++) {\n const cookie = cookies[i].split(\"=\");\n if (key == cookie[0].trim()) {\n return decodeURIComponent(cookie[1]);\n }\n }\n\n return null;\n },\n setItem(key, value) {\n document.cookie = `${key}=${encodeURIComponent(value)}; path=/; SameSite=Lax`;\n },\n};\n\nAlpine.store(\"compareItems\", {\n maxItems: 3,\n data: Alpine.$persist({ type: null, items: [] }).as(\"compareItems\").using(window.sessionCookieStorage),\n\n get items() {\n return this.data.items;\n },\n\n get type() {\n return this.data.type;\n },\n\n /**\n * Adds an item to the list.\n * @param item\n * @returns {boolean}\n * @throws Error Throws an error if max items reached / adding mismatched types. Codes: `MaxItemsReached`, `MismatchedTypes`\n */\n add(item) {\n if (this.data.items.length && this.data.type && this.data.type !== item.type) {\n throw new Error(\"You cannot compare both Plans and Inventory Homes.\", {\n cause: {\n code: \"MismatchedTypes\",\n },\n });\n }\n\n if (this.items.length === this.maxItems) {\n throw new Error(`You can only compare up to ${this.maxItems} items.`, {\n cause: {\n code: \"MaxItemsReached\",\n },\n });\n }\n\n window.dataLayer.push({\n \"event\": \"comparison_toggle\",\n \"comparison_data\": {\n \"id\": item.id,\n \"type\": item.type,\n \"name\": item.name,\n },\n });\n\n this.data.type = item.type;\n this.data.items = [...this.data.items, item];\n\n return true;\n },\n\n remove(item) {\n this.data.items = this.data.items.filter((savedItem) => savedItem.id !== item.id);\n\n return true;\n },\n\n exists(item) {\n return !!this.items.filter((savedItem) => savedItem.id === item.id && savedItem.type === item.type).length;\n },\n\n /**\n * Toggles the item by adding / removing from the list depending on its current state.\n *\n * @param {Object} item\n * @returns {boolean} Returns true if toggle was successful\n */\n toggle(item) {\n if (this.exists(item)) {\n return this.remove(item);\n }\n\n return this.add(item);\n },\n\n clear() {\n this.data.type = null;\n this.data.items = [];\n },\n});\n\nAlpine.data(\"compareToggle\", () => ({\n item: {\n type: null,\n id: null,\n name: null,\n image: null,\n },\n timeoutId: null,\n\n init() {\n queueMicrotask(() => {\n const { type, id, name, image } = this.$el.dataset;\n\n this.item = {\n type,\n id: Number(id),\n name,\n image,\n };\n });\n },\n\n toggle: {\n [\"@click\"]() {\n try {\n this.$store.compareItems.toggle(this.item);\n\n // Trying to fix the issue where the checkbox is not checked when selected from within a slider.\n window.setTimeout(() => {\n this.$el.checked = this.$store.compareItems.exists(this.item);\n }, 100);\n\n } catch (error) {\n // Un-check since there was an error.\n if ([\"MaxItemsReached\", \"MismatchedTypes\"].includes(error.cause?.code)) {\n this.$el.checked = false;\n\n const swalOptions = {\n title: \"Sorry\",\n text: error.message,\n icon: \"warning\",\n };\n\n if (error.cause.code === \"MismatchedTypes\") {\n Swal.fire({\n ...swalOptions,\n showCancelButton: true,\n confirmButtonText: \"Replace selections and continue\",\n }).then((result) => {\n if (result.isConfirmed) {\n this.$store.compareItems.clear();\n\n this.$store.compareItems.add(this.item);\n }\n });\n\n return;\n }\n\n Swal.fire(swalOptions);\n }\n }\n },\n [\":checked\"]() {\n return this.$store.compareItems.exists(this.item);\n },\n },\n}));\n"],"names":["window","sessionCookieStorage","getItem","key","cookies","document","cookie","split","i","length","trim","decodeURIComponent","setItem","value","concat","encodeURIComponent","Alpine","store","maxItems","data","$persist","type","items","as","using","this","add","item","Error","cause","code","dataLayer","push","id","name","_toConsumableArray","remove","filter","savedItem","exists","toggle","clear","image","timeoutId","init","_this","queueMicrotask","_this$$el$dataset","$el","dataset","Number","_defineProperty","_this2","$store","compareItems","setTimeout","checked","error","_error$cause","includes","swalOptions","title","text","message","icon","Swal","_objectSpread","showCancelButton","confirmButtonText","then","result","isConfirmed"],"sourceRoot":""}