{"version":3,"file":"attachment_carousel-BHxR7A76.cjs","names":[],"sources":["../recipes/conversation_view/attachment_carousel/media_components/image_carousel.vue","../recipes/conversation_view/attachment_carousel/attachment_carousel.vue"],"sourcesContent":["<template>\n  <li\n    class=\"d-recipe-attachment-carousel__image\"\n  >\n    <dt-image-viewer\n      image-button-class=\"d-recipe-attachment-carousel__image-viewer\"\n      :image-src=\"mediaItem.path\"\n      :image-alt=\"mediaItem.altText\"\n      :aria-label=\"i18n.$t('DIALTONE_IMAGE_CAROUSEL_CLICK_TO_OPEN_ARIA_LABEL')\"\n    />\n\n    <!-- Loader / Close button -->\n    <div\n      class=\"d-recipe-attachment-carousel__image-top-right\"\n    >\n      <span\n        class=\"d-recipe-attachment-carousel__image-progress-bar\"\n      >\n        <dt-progress-circle\n          v-if=\"mediaItem.isUploading\"\n          kind=\"brand\"\n          size=\"400\"\n          :progress=\"mediaItem.progress\"\n          :aria-label=\"i18n.$t('DIALTONE_IMAGE_CAROUSEL_PROGRESS_BAR_ARIA_LABEL')\"\n        />\n      </span>\n      <dt-button\n        :id=\"`closeButton-${index}`\"\n        tabindex=\"0\"\n        class=\"d-recipe-attachment-carousel__image-close-button\"\n        circle\n        size=\"xs\"\n        importance=\"clear\"\n        :aria-label=\"closeButtonTitle\"\n        :title=\"closeButtonTitle\"\n        @click=\"removeMediaItem(index)\"\n      >\n        <template #icon>\n          <dt-icon-close\n            size=\"200\"\n          />\n        </template>\n      </dt-button>\n    </div>\n  </li>\n</template>\n\n<script>\nimport { DtImageViewer } from '@/components/image_viewer';\nimport { DtButton } from '@/components/button';\nimport { DtIconClose } from '@dialpad/dialtone-icons/vue3';\nimport { DialtoneLocalization } from '@/localization';\n\nimport { DtProgressCircle } from '@/components/progress_circle';\n\nexport default {\n  compatConfig: { MODE: 3 },\n  name: 'DtImageCarousel',\n\n  components: {\n    DtImageViewer,\n    DtButton,\n    DtIconClose,\n    DtProgressCircle,\n  },\n\n  props: {\n    mediaItem: {\n      type: Object,\n      required: true,\n    },\n\n    index: {\n      type: Number,\n      required: true,\n    },\n  },\n\n  emits: [\n    /**\n     * Emitted when media close button is clicked to remove the image\n     *\n     * @event remove-media\n     * @type {Number}\n     */\n    'remove-media',\n  ],\n\n  data () {\n    return {\n      i18n: new DialtoneLocalization(),\n    };\n  },\n\n  computed: {\n    closeButtonTitle () {\n      return this.i18n.$t('DIALTONE_CLOSE_BUTTON');\n    },\n  },\n\n  methods: {\n    removeMediaItem (index) {\n      this.$emit('remove-media', index);\n    },\n  },\n};\n</script>\n","<template>\n  <div\n    class=\"d-recipe-attachment-carousel\"\n    role=\"presentation\"\n  >\n    <ul\n      v-if=\"mediaList.length > 0\"\n      ref=\"carousel\"\n      class=\"d-recipe-attachment-carousel__media-list\"\n      @scroll=\"handleScroll\"\n    >\n      <!-- media list -->\n      <component\n        :is=\"mediaComponent(mediaItem.type)\"\n        v-for=\"(mediaItem, index) in filteredMediaList\"\n        :key=\"`media-${index}`\"\n        :index=\"index\"\n        :media-item=\"mediaItem\"\n        @remove-media=\"removeMediaItem(index)\"\n        @focusin=\"onItemFocus\"\n      />\n    </ul>\n\n    <!-- Carousel Arrows -->\n    <dt-button\n      v-show=\"showLeftArrow\"\n      tabindex=\"-1\"\n      :aria-label=\"i18n.$t('DIALTONE_ATTACHMENT_CAROUSEL_LEFT_ARROW_ARIA_LABEL')\"\n      class=\"d-recipe-attachment-carousel__arrow d-recipe-attachment-carousel__arrow--left\"\n      circle\n      size=\"xs\"\n      importance=\"clear\"\n      @click=\"leftScroll\"\n    >\n      <template #icon>\n        <dt-icon-arrow-left\n          size=\"100\"\n        />\n      </template>\n    </dt-button>\n    <dt-button\n      v-show=\"showRightArrow\"\n      tabindex=\"-1\"\n      :aria-label=\"i18n.$t('DIALTONE_ATTACHMENT_CAROUSEL_RIGHT_ARROW_ARIA_LABEL')\"\n      class=\"d-recipe-attachment-carousel__arrow d-recipe-attachment-carousel__arrow--right\"\n      circle\n      size=\"xs\"\n      importance=\"clear\"\n      @click=\"rightScroll\"\n    >\n      <template #icon>\n        <dt-icon-arrow-right\n          size=\"100\"\n        />\n      </template>\n    </dt-button>\n  </div>\n</template>\n\n<script>\nimport { DtIconArrowRight, DtIconArrowLeft } from '@dialpad/dialtone-icons/vue3';\nimport { DtButton } from '@/components/button';\nimport { DialtoneLocalization } from '@/localization';\n\nimport DtImageCarousel from './media_components/image_carousel.vue';\n\nconst MEDIA_ITEM_WIDTH = 64;\n\nexport default {\n  compatConfig: { MODE: 3 },\n  name: 'DtRecipeAttachmentCarousel',\n\n  components: {\n    DtButton,\n    DtIconArrowRight,\n    DtIconArrowLeft,\n    DtImageCarousel,\n  },\n\n  /* inheritAttrs: false is generally an option we want to set on library\n    components. This allows any attributes passed in that are not recognized\n    as props to be passed down to another element or component using v-bind:$attrs\n    more info: https://vuejs.org/v2/api/#inheritAttrs */\n  // inheritAttrs: false,\n\n  props: {\n    /**\n     * media - object array of media objects\n     * @type {Array}\n     *\n     * Object: {\n     *  path: String,\n     *  altText: String | null,\n     * }\n     */\n    mediaList: {\n      type: Array,\n      default: () => [],\n    },\n  },\n\n  emits: [\n    /**\n     * Emitted when popover is shown or hidden\n     *\n     * @event remove-media\n     * @type {Number}\n     */\n    'remove-media',\n  ],\n\n  data () {\n    return {\n      showCloseButton: {},\n      showRightArrow: true,\n      showLeftArrow: false,\n      isMounted: false,\n      i18n: new DialtoneLocalization(),\n    };\n  },\n\n  computed: {\n    filteredMediaList () {\n      return this.mediaList.filter((mediaItem) => mediaItem.type === 'image' || mediaItem.type === 'video');\n    },\n  },\n\n  mounted: function () {\n    this.showLeftArrow = this.$refs.carousel.scrollLeft > 0;\n    this.showRightArrow = this.$refs.carousel.scrollWidth > this.$refs.carousel.clientWidth;\n  },\n\n  methods: {\n    onItemFocus (e) {\n      e.currentTarget.scrollIntoView({ behavior: 'smooth' });\n    },\n\n    mediaComponent (type) {\n      switch (type) {\n        case 'image':\n          return 'dt-image-carousel';\n        default:\n          // unknown media type\n          return null;\n      }\n    },\n\n    removeMediaItem (index) {\n      // make sure the carousel arrows is updated. 64 is the width of each media item\n      this.showRightArrow = this.$refs.carousel.scrollWidth > (this.$refs.carousel.clientWidth + MEDIA_ITEM_WIDTH);\n      this.$emit('remove-media', index);\n    },\n\n    closeButton (val, index) {\n      this.showCloseButton[index] = val;\n    },\n\n    handleScroll () {\n      const carousel = this.$refs.carousel;\n      this.showLeftArrow = carousel.scrollLeft > 0;\n      this.showRightArrow = !((carousel.scrollLeft + carousel.clientWidth) === carousel.scrollWidth);\n    },\n\n    leftScroll () {\n      this.$refs.carousel.scrollTo({\n        left: this.$refs.carousel.scrollLeft - 100,\n        behavior: 'smooth',\n      });\n    },\n\n    rightScroll () {\n      this.$refs.carousel.scrollTo({\n        left: this.$refs.carousel.scrollLeft + 100,\n        behavior: 'smooth',\n      });\n    },\n  },\n};\n</script>\n"],"mappings":"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"}