(window.webpackJsonp=window.webpackJsonp||[]).push([[172],{2273:function(e,t,r){"use strict";r.r(t);var n=r(7),o=(r(3),r(5),r(22),r(27),r(0)),l=r(769),c=(r(17),r(33)),d=r(38),v=r(25),h=r(58),f=class extends h.a{constructor(e){super(e),this.services=["tagular"]}get defaults(){return{"@type":"core.InfinitePageScrolled.v1",isInfiniteScroll:!0}}};f=Object(o.c)([Object(c.a)(v.a.Transient),Object(o.g)(0,d.a),Object(o.f)("design:paramtypes",[Object])],f);var m=r(6),x=r(772),O=r(844);function P(object,e){var t=Object.keys(object);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(object);e&&(r=r.filter((function(e){return Object.getOwnPropertyDescriptor(object,e).enumerable}))),t.push.apply(t,r)}return t}function y(e){for(var i=1;i{this.currentParentPage=e,this.initializeSeamless()}))}initializeSeamless(){var e=this;return Object(n.a)((function*(){var t,r;e.$services.isFeatureEnabled("seamless")?(e.$seamless.createSeamlessMeta(e.$meta()),e.listing=null===(r=yield e.$seamless.requestSeamlessListing(null===(t=e.currentParentPage)||void 0===t?void 0:t.content))||void 0===r?void 0:r.items):k.a.warn("Seamless is disabled")}))()}enterPage(e){var t=this;return Object(n.a)((function*(){var{data:data,direction:r}=e;k.a.log("waiting for page to be requested and inserted");try{yield t.pageRequestPromises[data.index]}catch(e){return void k.a.error(e)}k.a.log("enterPage",data,r);var n="down"===r?data.index+1:data.index,o=t.getPageByIndex(n),l="down"===r?data.index-1:data.index+1,c=t.getPageByIndex(l);k.a.log("previousPage",c),c&&c.removeAds(),t.$seamless.enterPage(o,c,{data:data,direction:r}),t.$nuxt.$emit("seamless-enter",o)}))()}preInsertPage(e,t){this.loading=!0;try{this.pageRequestPromises[e]=new Promise(((r,n)=>{t.then((t=>{var n;if(!(null===(n=null==t?void 0:t.content)||void 0===n?void 0:n.content))throw new Error("no content found on page");this.insertPage(t.content,e,t.pageTypeConfig).then(r),this.loading=!1}))}))}catch(e){k.a.error(e),this.loading=!1}}insertPage(content,e,t){var r=this;return Object(n.a)((function*(){var component=yield t.component();component=component.extend({data:()=>({content:content}),beforeCreate(){try{this.$options.asyncData(this.$nuxt.context,content)}catch(e){k.a.error("error calling 'asyncData' for page with slug: '".concat(content.id,"'"),e)}}}),r.$config.ads.adDisplay.delayLoad=!0,r.$nuxt.$meta().pause(),r.pages.push(component),yield r.$nextTick();try{r.$refs.pages[e]?k.a.log("inserted page: '".concat(content.pageType,"' with slug: '").concat(content.id,"'")):(r.pages.pop(),k.a.warn("could not find a reference to a page at index ".concat(e)))}catch(e){k.a.error("error getting page reference for slug: '".concat(content.id,"'"),e)}}))()}trackScroll(e,t){var r,n,o,l,c;if(this.$services.isFeatureEnabled("seamless")){k.a.log("Firing Cohesion scroll event",e,null===(r=null==t?void 0:t.data)||void 0===r?void 0:r.index),this.$track(f).with({scrollDistance:e,pageIndex:null===(n=null==t?void 0:t.data)||void 0===n?void 0:n.index}).fire();var content=null===(c=null===(l=this.getPageByIndex(null===(o=null==t?void 0:t.data)||void 0===o?void 0:o.index))||void 0===l?void 0:l.content)||void 0===c?void 0:c.content;this.$nuxt.$emit("track-scroll",e,content)}else k.a.log("Not firing scroll events, seamless is disabled")}cleanup(){this.$config.ads.adDisplay.delayLoad=!1,this.pages=[],this.pageRequestPromises=[],this.listing=null,this.$store.commit("page/clearSeamless"),this.$nuxt.$meta().resume()}};Object(o.c)([Object(l.Watch)("$route"),Object(o.f)("design:type",Function),Object(o.f)("design:paramtypes",[]),Object(o.f)("design:returntype",void 0)],I.prototype,"routeChange",null);var C=I=Object(o.c)([Object(l.Component)({components:{SeamlessTriggers:S,TrackScroll:T.a}})],I),L=Object(_.a)(C,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"c-seamlessListing"},[t("TrackScroll",{attrs:{"tracking-data":{index:0}},on:{"scroll-change":e.trackScroll}},[e._t("default")],2),e._v(" "),e.listing?[t("SeamlessTriggers",{attrs:{index:0},on:{"seamless-insert-page":e.preInsertPage,"seamless-enter-page":e.enterPage}}),e._v(" "),e._l(e.pages,(function(r,n){return[t("TrackScroll",{key:r.slug,attrs:{"tracking-data":{index:n+1}},on:{"scroll-change":e.trackScroll}},[t(r,{ref:"pages",refInFor:!0,tag:"component",attrs:{"is-seamless":!0}})],1),e._v(" "),n({content:content}),beforeCreate(){try{this.$options.asyncData(this.$nuxt.context,content)}catch(e){k.a.error("error calling 'asyncData' for page with slug: '".concat(content.id,"'"),e)}}}),r.$config.ads.adDisplay.delayLoad=!0,r.$nuxt.$meta().pause();var o=content.content,l=null===(n=article.d.mattressesBestListRedesign)||void 0===n?void 0:n.includes(o.id);r.pageRecords.push({component:component,isBestList:l,id:o.id}),yield r.$nextTick();try{r.$refs.pages[e]?k.a.log("inserted page: '".concat(content.pageType,"' with slug: '").concat(content.id,"'")):(r.pageRecords.pop(),k.a.warn("could not find a reference to a page at index ".concat(e)))}catch(e){k.a.error("error getting page reference for slug: '".concat(content.id,"'"),e)}}))()}enterPage(e){var t=this;return Object(n.a)((function*(){var{data:data,direction:r}=e;k.a.log("waiting for page to be requested and inserted");try{yield t.pageRequestPromises[data.index]}catch(e){return void k.a.error(e)}k.a.log("enterPage",data,r);var n="down"===r?data.index+1:data.index,o=t.getPageByIndex(n),l="down"===r?data.index-1:data.index+1,c=t.getPageByIndex(l);k.a.log("previousPage",c),c&&c.removeAds(),t.$seamless.enterPage(o,c,{data:data,direction:r}),t.$nuxt.$emit("seamless-enter",o),t.clearBestListCompareStore()}))()}clearBestListCompareStore(){this.$store.dispatch("bestList/updateFirstProduct",null),this.$store.dispatch("bestList/updateFirstProductCta",null),this.$store.dispatch("bestList/updateSecondProduct",null),this.$store.dispatch("bestList/updateSecondProductCta",null)}},B=D=Object(o.c)([Object(l.Component)({components:{SeamlessTriggers:S,TrackScroll:T.a}})],D),R=Object(_.a)(B,(function(){var e=this,t=e._self._c;e._self._setupProxy;return t("div",{staticClass:"c-seamlessListing"},[t("TrackScroll",{attrs:{"tracking-data":{index:0}},on:{"scroll-change":e.trackScroll}},[e._t("default")],2),e._v(" "),e.listing?[t("SeamlessTriggers",{attrs:{index:0},on:{"seamless-insert-page":e.preInsertPage,"seamless-enter-page":e.enterPage}}),e._v(" "),e._l(e.pageRecords,(function(r,n){return[t("TrackScroll",{key:r.id+"-scroll",attrs:{"tracking-data":{index:n+1}},on:{"scroll-change":e.trackScroll}},[t(r.component,{ref:"pages",refInFor:!0,tag:"component",attrs:{"is-seamless":!0,"is-seamless-best-list":r.isBestList}})],1),e._v(" "),n{var e;d.log(data);var r=null===(e=null==t?void 0:t.value)||void 0===e?void 0:e.handler;r?r(data):d.warn("No handler specified on Intersection Observer directive")}))}))()}update(){this.observer&&this.refreshOnUpdate&&this.observer.refresh()}componentUpdated(){this.observer&&this.refreshOnUpdate&&this.observer.refresh()}unbind(){this.observer&&this.observer.destroy()}}}}]); //# sourceMappingURL=c12e834.modern.js.map