{"version":3,"file":"PreviewContent-D4HtaGYW.js","sources":["../../../app/javascript/components/shared/NavigationButton.vue","../../../app/javascript/components/shared/PreviewContent.vue"],"sourcesContent":["<template>\n  <a\n    href=\"#\"\n    class=\"navigation-button\"\n    @click.prevent=\"$emit('navigate')\">\n    <svg-icon\n      :name=\"iconName\"\n      class=\"block\" />\n  </a>\n</template>\n\n<script>\nimport SvgIcon from \"./SvgIcon.vue\";\n\nexport default {\n  name: \"NavigationButton\",\n  components: {\n    SvgIcon\n  },\n  props: {\n    isNextButton: {\n      type: Boolean,\n      default: false\n    }\n  },\n  emits: [\"navigate\"],\n  computed: {\n    iconName() {\n      return this.isNextButton ? \"rightarrow\" : \"leftarrow\";\n    }\n  }\n};\n</script>\n<style lang=\"scss\">\n.navigation-button {\n  height: 32px;\n  width: 32px;\n  background: var(--paper-1);\n  border-radius: 50%;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  box-shadow: 0 2px 4px 0 rgba(0, 12, 27, 0.08);\n\n  @media screen and (min-width: $screen-md-min) {\n    height: 42px;\n    width: 42px;\n  }\n}\n\n.navigation-button.previous {\n  left: 0;\n}\n\n.navigation-button.next {\n  right: 0;\n}\n</style>\n","<template>\n  <a\n    v-if=\"showZoomButton && currentObject.type !== 'flickthrough'\"\n    class=\"button btn-large btn-secondary cursor-pointer absolute top-4 left-4 z-3 flex items-center\"\n    @click=\"zoomImages\">\n    <svg-icon\n      name=\"zoom\"\n      class=\"self-start mr-3\"\n      height=\"20px\"\n      width=\"20px\" />\n    {{ t(\"cart.item.preview.zoom\") }}\n  </a>\n  <fade-transition>\n    <overlay\n      v-if=\"loading\"\n      key=\"loader\"\n      absolutely-positioned />\n    <div\n      v-else\n      key=\"preview\"\n      class=\"flex flex-col h-full sm:pb-3\">\n      <div\n        v-if=\"!loading\"\n        class=\"flex flex-col h-full min-height-0 justify-center\">\n        <div\n          :class=\"imagePreviewContainerClasses\"\n          class=\"flex items-center justify-center h-auto min-height-0 relative\">\n          <fade-transition>\n            <navigation-button\n              v-show=\"canShowPrevious\"\n              class=\"navigation-button previous absolute z-2 ml-2\"\n              :class=\"{ 'pointer-events-none': !canShowPrevious }\"\n              data-cy=\"previous-button-on-preview-modal\"\n              @navigate=\"previous\" />\n          </fade-transition>\n          <div\n            v-if=\"isGiftcard\"\n            class=\"disable-link-click mx-3 md:mx-0\"\n            v-html=\"currentObject.data\"></div>\n          <div\n            v-else-if=\"currentObject.type === 'image'\"\n            :style=\"imageContainerStyles\"\n            class=\"image-container relative block mx-3 md:mx-0\">\n            <img\n              :src=\"currentObject.data\"\n              class=\"preview-image\" />\n            <img\n              v-if=\"currentObject.backing_image\"\n              :src=\"currentObject.backing_image.url\"\n              :style=\"backingImageStyle\"\n              class=\"modal-backing-image\" />\n          </div>\n          <div\n            v-else-if=\"currentObject.type === 'flickthrough'\"\n            class=\"mx-3 md:mx-0 pointer-events-none br-1 book-cover\"\n            :style=\"coverStyles\">\n            <div\n              class=\"image-container relative block book-cover-inner-preview\">\n              <div class=\"flex h-full w-full\">\n                <img\n                  :src=\"currentObject.data\"\n                  class=\"w-1/2 flickthrough-image\" />\n                <img\n                  :src=\"objects[currentObjectIndex + 1].data\"\n                  class=\"w-1/2 flickthrough-image\" />\n              </div>\n              <img\n                :src=\"bookOverlay\"\n                class=\"overlay-image absolute\" />\n            </div>\n          </div>\n          <div\n            v-else\n            class=\"h-full\"\n            :class=\"[\n              photobookCoverClass,\n              { 'w-4/5 md:w-2/3': !contentForModal && currentObject.photobook }\n            ]\"\n            :style=\"photobookCoverStyles\">\n            <div class=\"flex items-center h-full photobook-preview-inner\">\n              <div\n                v-for=\"(image, index) in canvasPreviewImages\"\n                :key=\"index\"\n                class=\"image-container md:mx-0\"\n                :class=\"imageClasses\">\n                <img\n                  :src=\"image\"\n                  class=\"preview-image\"\n                  data-cs-mask />\n              </div>\n            </div>\n          </div>\n          <fade-transition>\n            <navigation-button\n              v-show=\"canShowNext\"\n              is-next-button\n              class=\"navigation-button next z-2 absolute mr-2\"\n              :class=\"[{ 'pointer-events-none': !canShowNext }]\"\n              data-cy=\"next-button-on-preview-modal\"\n              @navigate=\"next\" />\n          </fade-transition>\n        </div>\n        <div class=\"inline-flex items-center justify-center my-6\">\n          <a\n            href=\"#\"\n            class=\"flex mr-4 w-4 h-4 text-ink-3 hover:text-ink\"\n            :class=\"{\n              'navigation-disabled': !shouldShowFirstSheetButton\n            }\"\n            @click.prevent=\"goToFirstSheet\">\n            <svg-icon\n              name=\"double-leftarrow\"\n              class=\"m-auto\"\n              height=\"10px\"\n              width=\"10px\" />\n          </a>\n          <div class=\"text-center\">\n            <div\n              v-if=\"currentObject.name\"\n              class=\"typeset-6 mr-2\">\n              {{ currentObject.name }}\n            </div>\n            ({{ currentObjectIndex + 1 }}\n            <span v-if=\"canvasPreviewImages.length > 1\">\n              & {{ currentObjectIndex + 2 }}\n            </span>\n            <span class=\"mx-2\">/</span>\n            {{ objects.length }})\n          </div>\n          <a\n            href=\"#\"\n            class=\"flex ml-4 w-4 h-4 text-ink-3 hover:text-ink\"\n            :class=\"{ 'navigation-disabled': !shouldShowLastSheetButton }\"\n            @click.prevent=\"goToLastSheet\">\n            <svg-icon\n              name=\"double-rightarrow\"\n              class=\"m-auto\"\n              height=\"10px\"\n              width=\"10px\" />\n          </a>\n        </div>\n      </div>\n    </div>\n  </fade-transition>\n  <div class=\"off-screen-container\">\n    <canvas\n      ref=\"previewCanvas\"\n      width=\"500\"\n      height=\"500\"></canvas>\n  </div>\n</template>\n\n<script>\nimport { Brut } from \"@/components/brut/src/index.ts\";\nimport { TextBox } from \"@/components/brut/src/objects/textBox/textBox.ts\";\nimport defaults from \"@/app/javascript/utils/admin/design/defaultCanvasObjects\";\nimport bookOverlay from \"@/app/javascript/images/flickthrough/overlay.png\";\nimport FadeTransition from \"../transitions/FadeTransition.vue\";\nimport NavigationButton from \"./NavigationButton.vue\";\nimport Overlay from \"./Overlay.vue\";\nimport SvgIcon from \"./SvgIcon.vue\";\n\nexport default {\n  name: \"PreviewContent\",\n  components: {\n    FadeTransition,\n    NavigationButton,\n    Overlay,\n    SvgIcon\n  },\n  props: {\n    objects: {\n      type: Array,\n      default: () => []\n    },\n    objectIndex: {\n      type: Number,\n      default: 0\n    },\n    admin: {\n      type: Boolean,\n      default: false\n    },\n    showZoomButton: {\n      type: Boolean,\n      default: false\n    },\n    photobookCoverImage: {\n      type: String,\n      default: null\n    },\n    contentForModal: {\n      type: Boolean,\n      default: false\n    }\n  },\n  emits: [\"closed\"],\n  data() {\n    return {\n      currentObjectIndex: 0,\n      canvasPreviewImages: [],\n      loading: true,\n      bookOverlay,\n      hasViewed3d: false,\n      showPhotobookCoverSpread: false,\n      togglePhotobookCoverSpreadStatus: false\n    };\n  },\n  computed: {\n    coverStyles() {\n      if (!this.currentObject.cover) return {};\n\n      return {\n        backgroundImage: `url(${this.currentObject.cover})`\n      };\n    },\n    imagePreviewContainerClasses() {\n      if (!this.contentForModal && !this.currentObject.photobook) {\n        return null;\n      }\n      if (!this.contentForModal && this.currentObject.photobook) {\n        return \"py-5\";\n      }\n      if (this.currentObject.backing_image) {\n        return \"p-7\";\n      }\n      return \"pt-7 px-5 pb-5\";\n    },\n    isGiftcard() {\n      return this.currentObject.type === \"html\";\n    },\n    isPhotobookCover() {\n      const isFirstPage = this.currentObjectIndex === 0;\n      const isLastPage = this.currentObjectIndex === this.objects.length - 1;\n      return (isFirstPage || isLastPage) && this.currentObject.photobook;\n    },\n    photobookCoverClass() {\n      if (this.currentObject.photobook && this.photobookCoverImage) {\n        return {\n          \"photobook-cover-spread\": this.showPhotobookCoverSpread\n        };\n      }\n      return null;\n    },\n    previewModalSize() {\n      return this.isGiftcard ? \"\" : \"fullscreen\";\n    },\n    currentObject() {\n      return this.objects[this.currentObjectIndex];\n    },\n    nextObject() {\n      return this.objects[this.currentObjectIndex + 1];\n    },\n    canShowPrevious() {\n      return this.currentObjectIndex > 0;\n    },\n    canShowNext() {\n      return this.currentObjectIndex < this.objects.length - 1;\n    },\n    imageContainerStyles() {\n      if (!this.currentObject.backing_image) return null;\n      const { width } = this.currentObject.backing_image;\n      const { height } = this.currentObject.backing_image;\n      return {\n        maxWidth: `${width}px`,\n        maxHeight: `${height}px`\n      };\n    },\n    imageClasses() {\n      return {\n        \"photobook-page\": this.currentObject.photobook\n      };\n    },\n    photobookCoverStyles() {\n      if (this.currentObject.photobook && this.photobookCoverImage) {\n        return {\n          backgroundImage: `url(${this.photobookCoverImage})`\n        };\n      }\n      return null;\n    },\n    backingImageStyle() {\n      const widthRatio = this.currentObject.backing_image.width_ratio * 100;\n      const heightRatio = this.currentObject.backing_image.height_ratio * 100;\n      return {\n        width: `${widthRatio}%`,\n        height: `${heightRatio}%`\n      };\n    },\n    formattedReturnAddress() {\n      return address => {\n        return [\n          address.line_1,\n          address.line_2,\n          address.line_3,\n          address.line_4,\n          address.line_5,\n          address.line_6\n        ]\n          .filter(Boolean)\n          .join(\"\\n\");\n      };\n    },\n    shouldShowFirstSheetButton() {\n      return this.objects.length > 4 && this.currentObjectIndex > 0;\n    },\n    shouldShowLastSheetButton() {\n      return (\n        this.objects.length > 4 &&\n        this.currentObjectIndex < this.objects.length - 1\n      );\n    },\n    nonFlickthroughObjects() {\n      return this.objects.filter(obj => obj.type !== \"flickthrough\");\n    },\n    isCentralPage() {\n      if (\n        this.currentObjectIndex === 0 ||\n        this.currentObjectIndex === this.objects.length - 1\n      ) {\n        return false;\n      }\n\n      return true;\n    }\n  },\n  watch: {\n    isPhotobookCover() {\n      this.togglePhotobookCoverSpreadStatus = true;\n    },\n    currentObject(object) {\n      this.setUpCanvas(object);\n    }\n  },\n  mounted() {\n    this.currentObjectIndex = this.objectIndex;\n    this.setUpCanvas(this.currentObject);\n  },\n  methods: {\n    previous() {\n      if (this.currentObject.photobook) {\n        if (this.currentObjectIndex === 1) {\n          this.currentObjectIndex -= 1;\n        } else {\n          this.currentObjectIndex -= 2;\n        }\n      } else if (\n        this.objects[this.currentObjectIndex - 1].type === \"flickthrough\"\n      ) {\n        this.currentObjectIndex -= 2;\n      } else {\n        this.currentObjectIndex -= 1;\n      }\n    },\n    next() {\n      if (this.currentObject.photobook) {\n        if (this.currentObjectIndex === 0) {\n          this.currentObjectIndex += 1;\n        } else {\n          this.currentObjectIndex += 2;\n        }\n      } else if (\n        this.currentObject.type === \"flickthrough\" &&\n        this.objects[this.currentObjectIndex + 1].type === \"flickthrough\"\n      ) {\n        this.currentObjectIndex += 2;\n      } else {\n        this.currentObjectIndex += 1;\n      }\n    },\n    async setUpCanvas({ type, data, photobook = false }) {\n      const vm = this;\n      const stagedImages = [];\n      if ([\"sheet\", \"merge\"].includes(type)) {\n        const image = await this.loadStandardCanvas(data, type);\n        stagedImages.push(image);\n\n        // only load the secondary sheet if it's a photobook and we're on the central page\n        if (photobook && this.isCentralPage) {\n          const sisterImage = await this.loadStandardCanvas(\n            this.nextObject.data,\n            this.nextObject.type\n          );\n          stagedImages.push(sisterImage);\n        }\n        if (this.togglePhotobookCoverSpreadStatus) {\n          this.showPhotobookCoverSpread = !this.showPhotobookCoverSpread;\n          this.togglePhotobookCoverSpreadStatus = false;\n        }\n        this.canvasPreviewImages = stagedImages;\n      } else if (type === \"preview_template\") {\n        this.loadPreviewTemplateCanvas(data);\n      } else {\n        vm.loading = false;\n      }\n    },\n    loadStandardCanvas(data, type) {\n      return new Promise(resolve => {\n        this.$refs.previewCanvas.width = data.width;\n        this.$refs.previewCanvas.height = data.height;\n        const offScreenCanvas = new Brut(this.$refs.previewCanvas, {\n          offscreen: true,\n          foilCanvasRequired: true\n        });\n        offScreenCanvas.init();\n        offScreenCanvas.loadOffscreen(data.fabric, () => {\n          if (type === \"merge\") {\n            offScreenCanvas.resetPredefinedStrings(data.strings);\n          }\n          if (data.return_address || data.recipient_address) {\n            const envelopeDefaults = data.return_address\n              ? defaults.returnEnvelopeTextBox()\n              : defaults.recipientEnvelopeTextBox();\n\n            const text = new TextBox(offScreenCanvas, envelopeDefaults);\n\n            text.init();\n            if (data.return_address) {\n              text.insertString(\n                this.formattedReturnAddress(data.return_address)\n              );\n            }\n            if (data.recipient_address) {\n              text.insertString(\n                this.formattedReturnAddress(data.recipient_address)\n              );\n            }\n            offScreenCanvas.insertAt(text, 1).then(() => {\n              offScreenCanvas.refreshObjects();\n              offScreenCanvas.renderAll();\n            });\n          }\n          const image = offScreenCanvas.imageRepresentation();\n          offScreenCanvas.dispose();\n          this.loading = false;\n          resolve(image);\n        });\n      });\n    },\n    loadPreviewTemplateCanvas(data) {\n      this.$refs.previewCanvas.width = data.width;\n      this.$refs.previewCanvas.height = data.height;\n      const offScreenCanvas = new Brut(this.$refs.previewCanvas, {\n        offscreen: true,\n        foilCanvasRequired: true,\n        perspectiveCanvasRequired: true\n      });\n      offScreenCanvas.init();\n      offScreenCanvas.loadOffscreen(data.fabric, async () => {\n        const [perspectiveImage] = offScreenCanvas.perspectiveImages();\n        if (perspectiveImage) {\n          await perspectiveImage.setImageUrl(data.image);\n        }\n        const image = offScreenCanvas.imageRepresentation(null, true);\n        this.canvasPreviewImages = [image];\n        offScreenCanvas.dispose();\n        this.loading = false;\n      });\n    },\n    goToFirstSheet() {\n      this.currentObjectIndex = 0;\n    },\n    goToLastSheet() {\n      this.currentObjectIndex = this.objects.length - 1;\n    },\n    zoomImages() {\n      const imageIndex = this.nonFlickthroughObjects.findIndex(\n        obj => obj.data === this.currentObject.data\n      );\n      window.dispatchEvent(\n        new CustomEvent(\"clickedImage\", {\n          detail: imageIndex\n        })\n      );\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.preview-image {\n  max-width: 100%;\n\n  @media (min-width: $screen-sm-min) {\n    margin-left: 50%;\n    transform: translateX(-50%);\n    max-width: 100%;\n    max-height: 100%;\n  }\n}\n\n.editor-preview {\n  .preview-image {\n    @media (min-width: $screen-sm-min) {\n      max-height: 70vh;\n    }\n  }\n}\n\n.modal-backing-image {\n  @media (min-width: $screen-sm-min) {\n    transform: translate(-50%, -50%);\n  }\n}\n\n.overlay-image {\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n\n  &.spiral {\n    top: -1px;\n  }\n}\n\n.min-height-0 {\n  min-height: 0;\n}\n\n.navigation-disabled {\n  opacity: 0;\n  pointer-events: none;\n}\n\n.image-container,\n.book-cover {\n  height: 100%;\n}\n\n.book-cover {\n  aspect-ratio: 750 / 520;\n  background-size: cover;\n  transform: scaleX(-1);\n  padding: 3px 8px;\n  position: relative;\n  border-radius: 2px;\n  box-shadow:\n    5px 5px 10px rgba(0, 0, 0, 0.3),\n    -5px 0 10px rgba(0, 0, 0, 0.3);\n\n  @media screen and (min-width: 768px) {\n    padding: 5px 15px;\n  }\n\n  .book-cover-inner-preview {\n    transform: scaleX(-1);\n  }\n\n  &::before {\n    content: \"\";\n    position: absolute;\n    top: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    box-shadow: inset 0px 0px 10px rgba(0, 0, 0, 0.4); /* Inner shadow */\n    z-index: 0;\n  }\n}\n\n.photobook-cover-spread {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  position: relative;\n  padding: 0.75%;\n  box-shadow:\n    5px 5px 10px rgba(0, 0, 0, 0.3),\n    -5px 0 10px rgba(0, 0, 0, 0.3);\n  border-radius: 2px;\n  background-size: cover;\n  transform: scaleX(-1);\n\n  .photobook-preview-inner {\n    transform: scaleX(-1);\n  }\n\n  &::before {\n    content: \"\";\n    position: absolute;\n    top: 0;\n    left: 0;\n    right: 0;\n    bottom: 0;\n    z-index: -1;\n    border-radius: 10px;\n    border-radius: inherit;\n    background-image: inherit;\n    background-size: cover;\n    background-position: center;\n  }\n}\n\n.photobook-page {\n  position: relative;\n  box-shadow:\n    5px 5px 10px #0000004d,\n    -5px 0 10px #0000004d;\n\n  &:after {\n    content: \"\";\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    left: 0;\n    z-index: 5;\n  }\n}\n</style>\n"],"names":["_sfc_main","SvgIcon","_createElementBlock","_cache","_withModifiers","_ctx","_createVNode","_component_svg_icon","$options","FadeTransition","NavigationButton","Overlay","bookOverlay","isFirstPage","isLastPage","width","height","widthRatio","heightRatio","address","obj","object","type","data","photobook","vm","stagedImages","image","sisterImage","resolve","offScreenCanvas","Brut","envelopeDefaults","defaults","text","TextBox","perspectiveImage","imageIndex","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_hoisted_14","_hoisted_17","_openBlock","_Fragment","$props","args","_createTextVNode","_createCommentVNode","_component_fade_transition","_withCtx","$data","_createBlock","_component_overlay","_hoisted_1","_hoisted_2","_createElementVNode","_normalizeClass","_component_navigation_button","_normalizeStyle","_renderList","index","_hoisted_15","_toDisplayString","_hoisted_16","_hoisted_18"],"mappings":"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"}