{"version":3,"file":"FlickityButtons-B45KAH3x.js","sources":["../../../app/future_admin/cms/landing_page/blocks/BaseBlock.vue","../../../app/javascript/mixins/landingPageCarousel.js","../../../app/javascript/components/shared/FlickityButtons.vue"],"sourcesContent":["<script>\nimport blockConfig from \"../../../../javascript/utils/landingPageBlocks\";\n\nexport default {\n  name: \"BaseBlock\",\n  props: {\n    block: {\n      type: Object,\n      required: true\n    },\n    previousBlock: {\n      type: Object,\n      default: null\n    },\n    nextBlock: {\n      type: Object,\n      default: null\n    }\n  },\n  computed: {\n    mixedCase() {\n      return text => {\n        return text.replace(/(\\b[A-Z][A-Z]+)/g, \"<em>$1</em>\");\n      };\n    },\n    bgMatchesPrev() {\n      if (!this.previousBlock) return false;\n      if (blockConfig[this.previousBlock.type].prevent_smart_padding)\n        return false;\n      if (!this.previousBlock.backgroundColour && !this.block.backgroundColour)\n        return true;\n\n      return (\n        this.block.backgroundColour === this.previousBlock.backgroundColour\n      );\n    },\n    bgMatchesNext() {\n      if (!this.nextBlock) return false;\n      if (blockConfig[this.nextBlock.type].prevent_smart_padding) return false;\n      if (!this.nextBlock.backgroundColour && !this.block.backgroundColour)\n        return true;\n\n      return this.block.backgroundColour === this.nextBlock.backgroundColour;\n    },\n    topPadding() {\n      if (this.block.overrideTopPadding) {\n        return this.explicitPaddingString(\"top\", this.block.explicitTopPadding);\n      }\n\n      return this.defaultTopPadding;\n    },\n    bottomPadding() {\n      if (this.block.overrideBottomPadding) {\n        return this.explicitPaddingString(\n          \"bottom\",\n          this.block.explicitBottomPadding\n        );\n      }\n\n      return this.defaultBottomPadding;\n    },\n    explicitPaddingString() {\n      return (position, values) => {\n        if (position === \"top\") {\n          return `pt-${values.xs} sm:pt-${values.sm} md:pt-${values.md} lg:pt-${values.lg}`;\n        }\n        return `pb-${values.xs} sm:pb-${values.sm} md:pb-${values.md} lg:pb-${values.lg}`;\n      };\n    },\n    dynamicH1ForField() {\n      return field => {\n        if (!this.block.h1 && field === blockConfig[this.block.type].defaultH1)\n          return \"h1\";\n        return this.block.h1 === field ? `h1` : `p`;\n      };\n    }\n  }\n};\n</script>\n","import { v4 as uuidv4 } from \"uuid\";\n\nexport default {\n  data() {\n    return {\n      flickityId: uuidv4(),\n      elementsInView: [],\n      erroredImages: []\n    };\n  },\n  computed: {\n    defaultTopPadding() {\n      return this.bgMatchesPrev ? \"pt-5\" : \"pt-7\";\n    },\n    defaultBottomPadding() {\n      return this.bgMatchesNext ? \"pb-5\" : \"pb-7\";\n    },\n    previousDisabled() {\n      return this.isInView(0) || !this.elementsInView.length;\n    },\n    nextDisabled() {\n      return (\n        this.isInView(this.currentProducts.length - 1) ||\n        !this.elementsInView.length\n      );\n    },\n    isInView() {\n      return index => {\n        return this.elementsInView.some(\n          element => parseInt(element.dataset.index, 10) === index\n        );\n      };\n    }\n  },\n  methods: {\n    updateElements(selected) {\n      this.elementsInView = selected;\n    },\n    loadAllImages(imageCollection) {\n      return Promise.all(\n        imageCollection.map(async url => {\n          return new Promise(resolve => {\n            const image = new Image();\n            image.addEventListener(\"load\", () => {\n              resolve();\n            });\n            image.addEventListener(\"error\", () => {\n              this.erroredImages.push(url);\n              resolve();\n            });\n            image.src = url;\n          });\n        })\n      );\n    },\n    setupPageForNewProducts() {\n      this.setupFavourites();\n      this.notifyHtmlChanged();\n    },\n    setupFavourites() {\n      window.resetFavourites();\n    },\n    notifyHtmlChanged() {\n      const htmlChanged = new Event(\"htmlChanged\");\n      window.dispatchEvent(htmlChanged);\n    }\n  }\n};\n","<template>\n  <div :class=\"displayClasses\">\n    <div\n      class=\"carousel-arrow show-background arrow-left w-6 h-6 inline-flex items-center justify-center cursor-pointer z-1 no-shadow\"\n      :class=\"arrowClasses(previousDisabled)\"\n      @click=\"previous\">\n      <svg-icon name=\"leftarrow-small\" />\n    </div>\n    <div\n      class=\"carousel-arrow show-background arrow-right w-6 h-6 inline-flex items-center justify-center cursor-pointer z-1 no-shadow\"\n      :class=\"arrowClasses(nextDisabled)\"\n      @click=\"next\">\n      <svg-icon name=\"rightarrow-small\" />\n    </div>\n  </div>\n</template>\n\n<script>\nimport SvgIcon from \"@/app/javascript/components/shared/SvgIcon.vue\";\n\nexport default {\n  name: \"FlickityButtons\",\n  components: {\n    SvgIcon\n  },\n  props: {\n    flickityId: {\n      type: String,\n      default: null\n    },\n    displayClasses: {\n      type: String,\n      default: \"flex flex-no-shrink gap-6\"\n    },\n    previousDisabled: {\n      type: Boolean,\n      default: false\n    },\n    nextDisabled: {\n      type: Boolean,\n      default: false\n    }\n  },\n  methods: {\n    previous() {\n      window.dispatchEvent(\n        new CustomEvent(\"flickityNavigate\", {\n          detail: { id: this.flickityId, next: false }\n        })\n      );\n    },\n    next() {\n      window.dispatchEvent(\n        new CustomEvent(\"flickityNavigate\", {\n          detail: { id: this.flickityId, next: true }\n        })\n      );\n    },\n    arrowClasses(disabledArrow) {\n      return disabledArrow ? \"opacity-50 prevent-scaling\" : \"\";\n    }\n  }\n};\n</script>\n"],"names":["_sfc_main","text","blockConfig","position","values","field","landingPageCarousel","uuidv4","index","element","selected","imageCollection","url","resolve","image","htmlChanged","SvgIcon","disabledArrow","_createElementBlock","_normalizeClass","$props","_createElementVNode","$options","args","_createVNode","_component_svg_icon"],"mappings":"yOAGK,MAAAA,EAAU,CACb,KAAM,YACN,MAAO,CACL,MAAO,CACL,KAAM,OACN,SAAU,EACX,EACD,cAAe,CACb,KAAM,OACN,QAAS,IACV,EACD,UAAW,CACT,KAAM,OACN,QAAS,IACX,CACD,EACD,SAAU,CACR,WAAY,CACV,OAAOC,GACEA,EAAK,QAAQ,mBAAoB,aAAa,CAExD,EACD,eAAgB,CAEd,MADI,CAAC,KAAK,eACNC,EAAY,KAAK,cAAc,IAAI,EAAE,sBAChC,GACL,CAAC,KAAK,cAAc,kBAAoB,CAAC,KAAK,MAAM,iBAC/C,GAGP,KAAK,MAAM,mBAAqB,KAAK,cAAc,gBAEtD,EACD,eAAgB,CAEd,MADI,CAAC,KAAK,WACNA,EAAY,KAAK,UAAU,IAAI,EAAE,sBAA8B,GAC/D,CAAC,KAAK,UAAU,kBAAoB,CAAC,KAAK,MAAM,iBAC3C,GAEF,KAAK,MAAM,mBAAqB,KAAK,UAAU,gBACvD,EACD,YAAa,CACX,OAAI,KAAK,MAAM,mBACN,KAAK,sBAAsB,MAAO,KAAK,MAAM,kBAAkB,EAGjE,KAAK,iBACb,EACD,eAAgB,CACd,OAAI,KAAK,MAAM,sBACN,KAAK,sBACV,SACA,KAAK,MAAM,qBACZ,EAGI,KAAK,oBACb,EACD,uBAAwB,CACtB,MAAO,CAACC,EAAUC,IACZD,IAAa,MACR,MAAMC,EAAO,EAAE,UAAUA,EAAO,EAAE,UAAUA,EAAO,EAAE,UAAUA,EAAO,EAAE,GAE1E,MAAMA,EAAO,EAAE,UAAUA,EAAO,EAAE,UAAUA,EAAO,EAAE,UAAUA,EAAO,EAAE,EAElF,EACD,mBAAoB,CAClB,OAAOC,GACD,CAAC,KAAK,MAAM,IAAMA,IAAUH,EAAY,KAAK,MAAM,IAAI,EAAE,WAEtD,KAAK,MAAM,KAAOG,EADhB,KAC+B,GAE5C,CACF,CACF,EC3EeC,EAAA,CACb,MAAO,CACL,MAAO,CACL,WAAYC,EAAQ,EACpB,eAAgB,CAAE,EAClB,cAAe,CAAA,CAChB,CACF,EACD,SAAU,CACR,mBAAoB,CAClB,OAAO,KAAK,cAAgB,OAAS,MACtC,EACD,sBAAuB,CACrB,OAAO,KAAK,cAAgB,OAAS,MACtC,EACD,kBAAmB,CACjB,OAAO,KAAK,SAAS,CAAC,GAAK,CAAC,KAAK,eAAe,MACjD,EACD,cAAe,CACb,OACE,KAAK,SAAS,KAAK,gBAAgB,OAAS,CAAC,GAC7C,CAAC,KAAK,eAAe,MAExB,EACD,UAAW,CACT,OAAOC,GACE,KAAK,eAAe,KACzBC,GAAW,SAASA,EAAQ,QAAQ,MAAO,EAAE,IAAMD,CACpD,CAET,CACG,EACD,QAAS,CACP,eAAeE,EAAU,CACvB,KAAK,eAAiBA,CACvB,EACD,cAAcC,EAAiB,CAC7B,OAAO,QAAQ,IACbA,EAAgB,IAAI,MAAMC,GACjB,IAAI,QAAQC,GAAW,CAC5B,MAAMC,EAAQ,IAAI,MAClBA,EAAM,iBAAiB,OAAQ,IAAM,CACnCD,EAAS,CACvB,CAAa,EACDC,EAAM,iBAAiB,QAAS,IAAM,CACpC,KAAK,cAAc,KAAKF,CAAG,EAC3BC,EAAS,CACvB,CAAa,EACDC,EAAM,IAAMF,CACxB,CAAW,CACF,CACF,CACF,EACD,yBAA0B,CACxB,KAAK,gBAAiB,EACtB,KAAK,kBAAmB,CACzB,EACD,iBAAkB,CAChB,OAAO,gBAAiB,CACzB,EACD,mBAAoB,CAClB,MAAMG,EAAc,IAAI,MAAM,aAAa,EAC3C,OAAO,cAAcA,CAAW,CACtC,CACA,CACA,EC/CKf,EAAU,CACb,KAAM,kBACN,WAAY,CACVgB,QAAAA,CACD,EACD,MAAO,CACL,WAAY,CACV,KAAM,OACN,QAAS,IACV,EACD,eAAgB,CACd,KAAM,OACN,QAAS,2BACV,EACD,iBAAkB,CAChB,KAAM,QACN,QAAS,EACV,EACD,aAAc,CACZ,KAAM,QACN,QAAS,EACX,CACD,EACD,QAAS,CACP,UAAW,CACT,OAAO,cACL,IAAI,YAAY,mBAAoB,CAClC,OAAQ,CAAE,GAAI,KAAK,WAAY,KAAM,EAAM,CAC5C,CAAA,CACF,CACF,EACD,MAAO,CACL,OAAO,cACL,IAAI,YAAY,mBAAoB,CAClC,OAAQ,CAAE,GAAI,KAAK,WAAY,KAAM,EAAK,CAC3C,CAAA,CACF,CACF,EACD,aAAaC,EAAe,CAC1B,OAAOA,EAAgB,6BAA+B,EACxD,CACF,CACF,2DA7DEC,EAaM,MAAA,CAbA,MADRC,EACeC,EAAc,cAAA,IACzBC,EAKM,MAAA,CAJJ,MAHNF,EAGY,CAAA,yHACEG,EAAA,aAAaF,EAAgB,gBAAA,CAAA,CAAA,EACpC,4BAAOE,EAAQ,UAAAA,EAAA,SAAA,GAAAC,CAAA,KAChBC,EAAmCC,EAAA,CAAzB,KAAK,iBAAiB,CAAA,MAElCJ,EAKM,MAAA,CAJJ,MATNF,EASY,CAAA,0HACEG,EAAA,aAAaF,EAAY,YAAA,CAAA,CAAA,EAChC,4BAAOE,EAAI,MAAAA,EAAA,KAAA,GAAAC,CAAA,KACZC,EAAoCC,EAAA,CAA1B,KAAK,kBAAkB,CAAA"}