{"version":3,"file":"main.mjs","sources":["../../../../src/components/photo-list/src/main.vue"],"sourcesContent":["<template>\r\n  <div class=\"tkc-photo-list\" :class=\"{ 'is-no-photo': noPhoto }\" :style=\"photoListStyles\">\r\n    <div class=\"photo-list-wrap\">\r\n      <upload-component\r\n        class=\"tkc_photo_list_upload\"\r\n        :style=\"uploadStyles\"\r\n        :size=\"noPhoto ? 'large' : 'normal'\"\r\n        :disabled=\"maxPhoto\"\r\n        @upload=\"addHandler\"\r\n      />\r\n      <gallery-component\r\n        v-if=\"!noPhoto\"\r\n        class=\"photo-list-view\"\r\n        :wrap-width=\"galleryWrapWidth\"\r\n        :view-width=\"galleryViewWidth\"\r\n        :prev-left=\"prevLeft\"\r\n        :next-right=\"nextRight\"\r\n      >\r\n        <draggable\r\n          class=\"photo-list-drag\"\r\n          :class=\"{ 'is-dragging': dragging }\"\r\n          v-model=\"photoList\"\r\n          :options=\"dragOpts\"\r\n          @input=\"dragHandler\"\r\n          @start=\"startDrag\"\r\n          @end=\"endDrag\"\r\n          item-key=\"index\"\r\n        >\r\n          <template #item=\"{ element, index }\">\r\n            <div\r\n              :key=\"index\"\r\n              class=\"photo-list-item\"\r\n              :class=\"{ ['photo-selected']: checkedItem && checkedItem === element }\"\r\n              :style=\"itemStyles\"\r\n              @click=\"editHandler(element, index)\"\r\n              @mousemove=\"mousemoveHandler(index)\"\r\n              @mouseleave=\"mouseleaveHandler\"\r\n            >\r\n              <editor-component\r\n                class=\"tkc_photo_list_editor\"\r\n                :class=\"{ tkc_photo_list_editor_hover: index == hoverIndex }\"\r\n                @close=\"delHandler(element)\"\r\n                @editor=\"editHandler(element, index)\"\r\n              >\r\n                <img-component v-if=\"index < viewLength || canLoad\" :src=\"element[pathAlias]\" />\r\n              </editor-component>\r\n            </div>\r\n          </template>\r\n        </draggable>\r\n      </gallery-component>\r\n    </div>\r\n    <div v-if=\"modelValue.length > viewLength\" class=\"photo-list-label\">\r\n      图片已上传{{ modelValue.length }}张\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import { nextTick } from 'vue';\r\n  // 改这里的值要注意css那边是否有关联\r\n  import ImgComponent from './img.vue';\r\n  import EditorComponent from './editor.vue';\r\n  import UploadComponent from './upload.vue';\r\n  import GalleryComponent from '../../gallery';\r\n  import draggable from 'vuedraggable';\r\n  import vueUtils from '../../../utils/vue_utils';\r\n  import { UPDATE_MODEL_EVENT } from '../../../constants/event';\r\n\r\n  const UPLOAD_LENGTH = 1;\r\n  const UPLOAD_WIDTH = 78;\r\n  const IETM_WIDTH = 92;\r\n  export default {\r\n    name: 'PhotoListComponent',\r\n    components: {\r\n      ImgComponent,\r\n      EditorComponent,\r\n      UploadComponent,\r\n      GalleryComponent,\r\n      draggable,\r\n    },\r\n    emits: ['add-photo', UPDATE_MODEL_EVENT, 'del-photo', 'drag-photo', 'edit-photo'],\r\n    props: {\r\n      modelValue: {\r\n        type: Array,\r\n        requied: true,\r\n      },\r\n      viewLength: {\r\n        type: Number,\r\n        default: 4,\r\n      },\r\n      pathAlias: {\r\n        type: String,\r\n        default: 'filePath',\r\n      },\r\n      slideToDirection: {\r\n        type: String,\r\n        default: 'last',\r\n      },\r\n      max: {\r\n        type: Number,\r\n        default: Infinity,\r\n      },\r\n      itemMargin: {\r\n        type: Number,\r\n        default: 15,\r\n      },\r\n      uploadMargin: {\r\n        type: Number,\r\n        default: 15,\r\n      },\r\n      noPhotoWidth: Number,\r\n      prevLeft: {\r\n        type: Number,\r\n        default: 140,\r\n      },\r\n      nextRight: {\r\n        type: Number,\r\n        default: 47,\r\n      },\r\n    },\r\n    data() {\r\n      return {\r\n        dragging: false,\r\n        hoverIndex: -1,\r\n        canLoad: false,\r\n        checkedItem: null,\r\n      };\r\n    },\r\n    computed: {\r\n      photoList: {\r\n        get() {\r\n          return this.modelValue;\r\n        },\r\n        set(value) {\r\n          this.$emit(UPDATE_MODEL_EVENT, value);\r\n        },\r\n      },\r\n      noPhoto() {\r\n        return this.modelValue.length === 0;\r\n      },\r\n      maxPhoto() {\r\n        return this.modelValue.length >= this.max;\r\n      },\r\n      uploadStyles() {\r\n        return this.noPhoto\r\n          ? {\r\n              margin: '5px 0 0',\r\n              width: this.noPhotoWidth ? `${this.noPhotoWidth}px` : '',\r\n            }\r\n          : {\r\n              margin: `5px ${this.uploadMargin / 2}px 0`,\r\n              width: `${UPLOAD_WIDTH}px`,\r\n            };\r\n      },\r\n      itemStyles() {\r\n        return {\r\n          width: `${IETM_WIDTH}px`,\r\n          margin: `5px ${this.itemMargin / 2}px 0`,\r\n        };\r\n      },\r\n      photoListStyles() {\r\n        return { width: `${this.galleryWrapWidth + UPLOAD_LENGTH * this.uploadOuterWidth}px` };\r\n      },\r\n      // 自动计算传给gallery组件的参数\r\n      galleryWrapWidth() {\r\n        return this.viewLength * this.itemOuterWidth;\r\n      },\r\n      galleryViewWidth() {\r\n        return this.modelValue.length * this.itemOuterWidth;\r\n      },\r\n      // draggable组件的配置\r\n      dragOpts() {\r\n        return {\r\n          draggable: '.photo-list-item',\r\n          forceFallback: true,\r\n          filter: '.tkc_editor_item',\r\n          scrollFn: this.scrollFn,\r\n          preventOnFilter: false,\r\n        };\r\n      },\r\n      itemOuterWidth() {\r\n        return IETM_WIDTH + this.itemMargin;\r\n      },\r\n      uploadOuterWidth() {\r\n        return UPLOAD_WIDTH + this.uploadMargin;\r\n      },\r\n    },\r\n    created() {\r\n      // 添加完图片要滑到最后\r\n      // this.$bus?.$on('added-photo', this.addedPhoto);\r\n    },\r\n    mounted() {\r\n      // 图片生成延迟加载\r\n      if (document.readyState === 'complete') {\r\n        this.loadImgs();\r\n      } else {\r\n        vueUtils.on(window, 'load', this.loadImgs);\r\n      }\r\n\r\n      /**\r\n       * 首次加载默认选中第一项\r\n       */\r\n      if (this.modelValue && this.modelValue.length > 0) {\r\n        this.editHandler(this.modelValue[0], 0);\r\n      }\r\n    },\r\n    beforeUnmount() {\r\n      vueUtils.off(window, 'load', this.loadImgs);\r\n    },\r\n    methods: {\r\n      loadImgs() {\r\n        this.canLoad = true;\r\n      },\r\n      addHandler() {\r\n        if (this.maxPhoto) return;\r\n        this.$emit('add-photo', this.addedPhoto);\r\n      },\r\n      delHandler(item) {\r\n        const currentValue = this.modelValue.slice();\r\n        const index = currentValue.indexOf(item);\r\n\r\n        index > -1 && currentValue.splice(index, 1);\r\n\r\n        this.$emit(UPDATE_MODEL_EVENT, currentValue);\r\n        this.$emit('del-photo', item);\r\n      },\r\n      dragHandler(currentValue) {\r\n        this.$emit(UPDATE_MODEL_EVENT, currentValue);\r\n        this.$emit('drag-photo', currentValue);\r\n      },\r\n      editHandler(item, index) {\r\n        this.checkedItem = item;\r\n        this.$emit('edit-photo', item, index);\r\n      },\r\n      // 触发gallery组件的事件，触发滑动效果\r\n      slideToPrev() {\r\n        vueUtils.broadcast(this, 'Gallery', 'slide-to-prev');\r\n      },\r\n      slideToNext() {\r\n        vueUtils.broadcast(this, 'Gallery', 'slide-to-next');\r\n      },\r\n      slideToFirst() {\r\n        vueUtils.broadcast(this, 'Gallery', 'slide-to-first');\r\n      },\r\n      slideToLast() {\r\n        vueUtils.broadcast(this, 'Gallery', 'slide-to-last');\r\n      },\r\n      addedPhoto() {\r\n        // 从无图片状态添加图片，不会触发滑动到最后一张图片的效果\r\n        // 此时子组件的数据还没更新好，要用nextTick\r\n        !this.noPhoto &&\r\n          nextTick(this.slideToDirection === 'last' ? this.slideToLast : this.slideToFirst);\r\n      },\r\n      // 排序的时候检测位置，触发滑动\r\n      scrollFn: vueUtils.throttle(function (offsetX) {\r\n        offsetX < 0 && this.slideToPrev();\r\n        offsetX > 0 && this.slideToNext();\r\n      }, 800),\r\n      // 控制状态，是否排序中\r\n      startDrag() {\r\n        this.dragging = true;\r\n      },\r\n      endDrag() {\r\n        this.dragging = false;\r\n      },\r\n      // 通过操作类来控制hover样式，因为css伪类hover无法处理一些情况\r\n      mousemoveHandler(index) {\r\n        if (this.dragging) return;\r\n        if (this.hoverIndex === index) return;\r\n        this.hoverIndex = index;\r\n      },\r\n      mouseleaveHandler() {\r\n        if (this.dragging) return;\r\n        this.hoverIndex = -1;\r\n      },\r\n    },\r\n  };\r\n</script>\r\n\r\n<style lang=\"less\">\r\n  @import '../../../themes';\r\n\r\n  .tkc-photo-list {\r\n    position: relative;\r\n  }\r\n\r\n  .tkc-photo-list .photo-list-label {\r\n    position: absolute;\r\n    right: 7.5px;\r\n    top: -20px;\r\n    color: #999;\r\n    font-size: 13px;\r\n    line-height: normal;\r\n  }\r\n\r\n  .tkc-photo-list .photo-list-wrap:after {\r\n    content: '';\r\n    display: table;\r\n    clear: both;\r\n    height: 0;\r\n    visibility: hidden;\r\n  }\r\n\r\n  .tkc-photo-list .photo-list-item,\r\n  .tkc-photo-list .photo-list-view {\r\n    display: inline-block;\r\n    float: left;\r\n  }\r\n\r\n  .tkc-photo-list .photo-list-item {\r\n    height: 78px;\r\n  }\r\n\r\n  .tkc-photo-list .photo-list-drag {\r\n    overflow: hidden;\r\n  }\r\n\r\n  .tkc-photo-list .photo-list-item {\r\n    cursor: move;\r\n    position: relative;\r\n    box-sizing: border-box;\r\n    -webkit-user-select: none;\r\n    -moz-user-select: none;\r\n    -ms-user-select: none;\r\n    user-select: none;\r\n  }\r\n\r\n  .tkc_photo_list_upload {\r\n    float: left;\r\n  }\r\n\r\n  .tkc_photo_list_editor {\r\n    .tkc_editor_layer {\r\n      opacity: 0;\r\n    }\r\n  }\r\n\r\n  .tkc_photo_list_editor_hover {\r\n    .tkc_editor_layer {\r\n      opacity: 1;\r\n    }\r\n  }\r\n\r\n  .tkc-photo-list .sortable-ghost {\r\n    background-color: #eef2fc;\r\n    border: 1px dashed @primary-color;\r\n  }\r\n\r\n  .tkc-photo-list .sortable-ghost > div {\r\n    display: none;\r\n  }\r\n\r\n  .tkc-photo-list .sortable-fallback .photo-list-item-hover {\r\n    display: none;\r\n  }\r\n</style>\r\n"],"names":["GalleryComponent","vueUtils","_createElementBlock","_normalizeClass","_createElementVNode","_createVNode","_createBlock","_withCtx"],"mappings":"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"}