{"version":3,"file":"main.mjs","sources":["../../../../src/components/gallery/src/main.vue"],"sourcesContent":["<template>\r\n  <div class=\"tkc-gallery\" :data-index=\"proxyIndex\" :data-max-index=\"maxIndex\">\r\n    <div class=\"gallery-wrap\" :style=\"wrapStyles\">\r\n      <div class=\"gallery-view\" :style=\"viewStyles\">\r\n        <slot></slot>\r\n      </div>\r\n    </div>\r\n    <div\r\n      v-if=\"maxIndex > 0\"\r\n      class=\"gallery-button\"\r\n      :class=\"prevButtonClasses\"\r\n      :style=\"prevStyles\"\r\n      @click=\"slideToPrev\"\r\n    >\r\n      <i class=\"gallery-button-icon is-prev\">\r\n        <svg class=\"cusicon-icon\" aria-hidden=\"true\">\r\n          <use xlink:href=\"#cusicon-left\" />\r\n        </svg>\r\n      </i>\r\n    </div>\r\n    <div\r\n      v-if=\"maxIndex > 0\"\r\n      class=\"gallery-button\"\r\n      :class=\"nextButtonClasses\"\r\n      :style=\"nextStyles\"\r\n      @click=\"slideToNext\"\r\n    >\r\n      <i class=\"gallery-button-icon is-next\">\r\n        <svg class=\"cusicon-icon\" aria-hidden=\"true\">\r\n          <use xlink:href=\"#cusicon-right\" />\r\n        </svg>\r\n      </i>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<script>\r\n  import vueUtils from '../../../utils/vue_utils';\r\n  const DEFAULT_INDEX = 0;\r\n  const DEFAULT_WIDTH = 600;\r\n  const DEFAULT_BUTTON_POS = 32;\r\n  const ICON_SIZE = 'default';\r\n\r\n  export default {\r\n    name: 'GalleryComponent',\r\n    props: vueUtils.initDefaultProps(\r\n      {\r\n        wrapWidth: Number,\r\n        viewWidth: Number,\r\n        prevLeft: Number,\r\n        nextRight: Number,\r\n        iconSize: String,\r\n        defaultIndex: Number,\r\n      },\r\n      {\r\n        wrapWidth: DEFAULT_WIDTH,\r\n        viewWidth: DEFAULT_WIDTH,\r\n        prevLeft: DEFAULT_BUTTON_POS,\r\n        nextRight: DEFAULT_BUTTON_POS,\r\n        iconSize: ICON_SIZE,\r\n        defaultIndex: DEFAULT_INDEX,\r\n      },\r\n    ),\r\n    data() {\r\n      return {\r\n        index: this.defaultIndex,\r\n      };\r\n    },\r\n    computed: {\r\n      prevStyles() {\r\n        return { left: '-' + this.prevLeft + 'px' };\r\n      },\r\n      nextStyles() {\r\n        return { right: '-' + this.nextRight + 'px' };\r\n      },\r\n      wrapStyles() {\r\n        return { width: this.wrapWidth + 'px' };\r\n      },\r\n      viewStyles() {\r\n        const marginLeft = this.proxyIndex * this.wrapWidth;\r\n        const maxMarginLeft = this.viewWidth - this.wrapWidth;\r\n\r\n        const _marginLeft = marginLeft > maxMarginLeft ? maxMarginLeft : marginLeft;\r\n\r\n        return {\r\n          width: this.viewWidth + 'px',\r\n          'margin-left': '-' + _marginLeft + 'px',\r\n        };\r\n      },\r\n      maxIndex() {\r\n        return Math.ceil(this.viewWidth / this.wrapWidth) - 1;\r\n      },\r\n      minIndex() {\r\n        return 0;\r\n      },\r\n      // 计算属性代理index, 实现有范围的自动取值\r\n      proxyIndex: {\r\n        get() {\r\n          return this.index;\r\n        },\r\n        set(index) {\r\n          const maxIndex = this.maxIndex;\r\n          const minIndex = this.minIndex;\r\n\r\n          this.index = index > maxIndex ? maxIndex : index < minIndex ? minIndex : index;\r\n        },\r\n      },\r\n      prevButtonClasses() {\r\n        const classes = {};\r\n        classes['gallery-button-' + this.iconSize] = true;\r\n        classes['is-disabled'] = this.proxyIndex == this.minIndex;\r\n        return classes;\r\n      },\r\n      nextButtonClasses() {\r\n        const classes = {};\r\n        classes['gallery-button-' + this.iconSize] = true;\r\n        classes['is-disabled'] = this.proxyIndex == this.maxIndex;\r\n        return classes;\r\n      },\r\n    },\r\n    created() {\r\n      this.$bus?.$on('slide-to-first', this.slideToFirst);\r\n      this.$bus?.$on('slide-to-prev', this.slideToPrev);\r\n      this.$bus?.$on('slide-to-next', this.slideToNext);\r\n      this.$bus?.$on('slide-to-last', this.slideToLast);\r\n    },\r\n    methods: {\r\n      slideToPrev() {\r\n        this.proxyIndex--;\r\n      },\r\n      slideToNext() {\r\n        this.proxyIndex++;\r\n      },\r\n      slideToLast() {\r\n        this.proxyIndex = this.maxIndex;\r\n      },\r\n      slideToFirst() {\r\n        this.proxyIndex = this.minIndex;\r\n      },\r\n    },\r\n  };\r\n</script>\r\n\r\n<style lang=\"less\">\r\n  @import '../../../themes';\r\n  .tkc-gallery {\r\n    position: relative;\r\n  }\r\n\r\n  .tkc-gallery .gallery-wrap {\r\n    overflow: hidden;\r\n  }\r\n\r\n  .tkc-gallery .gallery-view {\r\n    transition: margin 0.5s ease;\r\n  }\r\n\r\n  .tkc-gallery .gallery-button {\r\n    position: absolute;\r\n    cursor: pointer;\r\n    &.is-disabled {\r\n      cursor: no-drop;\r\n      &,\r\n      &:hover {\r\n        .gallery-button-icon {\r\n          color: #e6e6e6;\r\n        }\r\n      }\r\n    }\r\n    &:hover {\r\n      .gallery-button-icon {\r\n        color: @primary-color;\r\n      }\r\n    }\r\n  }\r\n\r\n  .tkc-gallery {\r\n    .gallery-button-default {\r\n      width: 42px;\r\n      height: 42px;\r\n      top: 50%;\r\n      margin-top: -20px;\r\n    }\r\n    .gallery-button-small {\r\n      width: 16px;\r\n      height: 20px;\r\n      top: 50%;\r\n      margin-top: -10px;\r\n    }\r\n  }\r\n\r\n  .gallery-button-icon {\r\n    display: inline-block;\r\n    width: 100%;\r\n    height: 100%;\r\n    color: #666;\r\n    .cusicon-icon {\r\n      position: absolute;\r\n      top: 0;\r\n      left: 0;\r\n      width: 100%;\r\n      height: 100%;\r\n      fill: currentColor;\r\n      overflow: hidden;\r\n    }\r\n  }\r\n</style>\r\n"],"names":["vueUtils","_createElementVNode","_createElementBlock","_renderSlot","_normalizeClass"],"mappings":";;;;;AAsCE,MAAM,aAAY,GAAI,CAAC,CAAA;EACvB,MAAM,gBAAgB,GAAG,CAAA;EACzB,MAAM,kBAAiB,GAAI,EAAE,CAAA;EAC7B,MAAM,SAAU,GAAE,SAAS,CAAA;;EAE3B,MAAK,SAAU,GAAA;IACb,IAAI,EAAE,kBAAkB;AACxB,IAAA,KAAK,EAAEA,KAAQ,CAAC,gBAAgB;AAC9B,MAAA;AACE,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,SAAS,EAAE,MAAM;AACjB,QAAA,QAAQ,EAAE,MAAM;AAChB,QAAA,YAAY,EAAE,MAAM;OACrB;AACD,MAAA;QACE,SAAS,EAAE,aAAa;QACxB,SAAS,EAAE,aAAa;QACxB,QAAQ,EAAE,kBAAkB;QAC5B,SAAS,EAAE,kBAAkB;AAC7B,QAAA,QAAQ,EAAE,SAAS;QACnB,YAAY,EAAE,aAAa;OAC5B;KACF;AACD,IAAA,IAAI,GAAG;AACL,MAAA,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,YAAY;OACzB,CAAA;KACF;AACD,IAAA,QAAQ,EAAE;MACR,UAAU,GAAG;AACX,QAAA,OAAO,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC,WAAW,MAAM,CAAA;OAC5C;MACD,UAAU,GAAG;AACX,QAAA,OAAO,EAAE,KAAK,EAAE,MAAM,IAAI,CAAC,YAAY,MAAM,CAAA;OAC9C;MACD,UAAU,GAAG;AACX,QAAA,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,SAAQ,GAAI,MAAM,CAAA;OACxC;MACD,UAAU,GAAG;QACX,MAAM,aAAa,IAAI,CAAC,UAAW,GAAE,IAAI,CAAC,SAAS,CAAA;QACnD,MAAM,gBAAgB,IAAI,CAAC,SAAQ,GAAI,IAAI,CAAC,SAAS,CAAA;;AAErD,QAAA,MAAM,WAAU,GAAI,UAAW,GAAE,aAAY,GAAI,aAAc,GAAE,UAAU,CAAA;;AAE3E,QAAA,OAAO;UACL,KAAK,EAAE,IAAI,CAAC,YAAY,IAAI;AAC5B,UAAA,aAAa,EAAE,GAAE,GAAI,WAAY,GAAE,IAAI;SACxC,CAAA;OACF;MACD,QAAQ,GAAG;QACT,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAQ,GAAI,IAAI,CAAC,SAAS,CAAE,GAAE,CAAC,CAAA;OACtD;MACD,QAAQ,GAAG;AACT,QAAA,OAAO,CAAC,CAAA;OACT;;MAED,UAAU,EAAE;QACV,GAAG,GAAG;AACJ,UAAA,OAAO,IAAI,CAAC,KAAK,CAAA;SAClB;QACD,GAAG,CAAC,KAAK,EAAE;UACT,MAAM,QAAO,GAAI,IAAI,CAAC,QAAQ,CAAA;UAC9B,MAAM,QAAO,GAAI,IAAI,CAAC,QAAQ,CAAA;;AAE9B,UAAA,IAAI,CAAC,KAAM,GAAE,KAAM,GAAE,QAAO,GAAI,QAAO,GAAI,KAAI,GAAI,QAAS,GAAE,QAAO,GAAI,KAAK,CAAA;SAC/E;OACF;AACD,MAAA,iBAAiB,GAAG;AAClB,QAAA,MAAM,OAAQ,GAAE,EAAE,CAAA;AAClB,QAAA,OAAO,CAAC,iBAAgB,GAAI,IAAI,CAAC,QAAQ,CAAA,GAAI,IAAI,CAAA;QACjD,OAAO,CAAC,aAAa,CAAA,GAAI,IAAI,CAAC,UAAS,IAAK,IAAI,CAAC,QAAQ,CAAA;QACzD,OAAO,OAAO,CAAA;OACf;AACD,MAAA,iBAAiB,GAAG;AAClB,QAAA,MAAM,OAAQ,GAAE,EAAE,CAAA;AAClB,QAAA,OAAO,CAAC,iBAAgB,GAAI,IAAI,CAAC,QAAQ,CAAA,GAAI,IAAI,CAAA;QACjD,OAAO,CAAC,aAAa,CAAA,GAAI,IAAI,CAAC,UAAS,IAAK,IAAI,CAAC,QAAQ,CAAA;QACzD,OAAO,OAAO,CAAA;OACf;KACF;AACD,IAAA,OAAO,GAAG;MACR,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAA;MACnD,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;MACjD,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;MACjD,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAA;KAClD;AACD,IAAA,OAAO,EAAE;MACP,WAAW,GAAG;AACZ,QAAA,IAAI,CAAC,UAAU,EAAE,CAAA;OAClB;MACD,WAAW,GAAG;AACZ,QAAA,IAAI,CAAC,UAAU,EAAE,CAAA;OAClB;MACD,WAAW,GAAG;QACZ,IAAI,CAAC,UAAW,GAAE,IAAI,CAAC,QAAQ,CAAA;OAChC;AACD,MAAA,YAAY,GAAG;QACb,IAAI,CAAC,UAAW,GAAE,IAAI,CAAC,QAAQ,CAAA;OAChC;KACF;GACF,CAAA;;;gCA9HGC,kBAII,CAAA,GAAA,EAAA,EAJD,KAAK,EAAC,6BAA6B,EAAA,EAAA;eACpCA,kBAEM,CAAA,KAAA,EAAA;AAFD,IAAA,KAAK,EAAC,cAAc;AAAC,IAAA,aAAW,EAAC,MAAM;;iBAC1CA,kBAAkC,CAAA,KAAA,EAAA,EAA7B,YAAU,EAAC,eAAe,EAAA,CAAA;;;;EAFnC,UAII;;gCASJA,kBAII,CAAA,GAAA,EAAA,EAJD,KAAK,EAAC,6BAA6B,EAAA,EAAA;eACpCA,kBAEM,CAAA,KAAA,EAAA;AAFD,IAAA,KAAK,EAAC,cAAc;AAAC,IAAA,aAAW,EAAC,MAAM;;iBAC1CA,kBAAmC,CAAA,KAAA,EAAA,EAA9B,YAAU,EAAC,gBAAgB,EAAA,CAAA;;;;EAFpC,UAII;;;;uBA9BRC,kBAgCM,CAAA,KAAA,EAAA;AAhCD,IAAA,KAAK,EAAC,aAAa;AAAE,IAAA,YAAU,EAAE,QAAU,CAAA,UAAA;AAAG,IAAA,gBAAc,EAAE,QAAQ,CAAA,QAAA;;IACzED,kBAIM,CAAA,KAAA,EAAA;AAJD,MAAA,KAAK,EAAC,cAAc;AAAE,MAAA,KAAK,iBAAE,QAAU,CAAA,UAAA,CAAA;;MAC1CA,kBAEM,CAAA,KAAA,EAAA;AAFD,QAAA,KAAK,EAAC,cAAc;AAAE,QAAA,KAAK,iBAAE,QAAU,CAAA,UAAA,CAAA;;QAC1CE,UAAa,CAAA,IAAA,CAAA,MAAA,EAAA,SAAA,CAAA;;;KAIT,QAAQ,CAAA,QAAA,GAAA,CAAA;sBADhBD,kBAYM,CAAA,KAAA,EAAA;;UAVJ,KAAK,EAAAE,cAAA,CAAA,CAAC,gBAAgB,EACd,QAAiB,CAAA,iBAAA,CAAA,CAAA;AACxB,UAAA,KAAK,iBAAE,QAAU,CAAA,UAAA,CAAA;AACjB,UAAA,OAAK,0CAAE,QAAW,CAAA,WAAA,IAAA,QAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,CAAA,CAAA;;;KASb,QAAQ,CAAA,QAAA,GAAA,CAAA;sBADhBF,kBAYM,CAAA,KAAA,EAAA;;UAVJ,KAAK,EAAAE,cAAA,CAAA,CAAC,gBAAgB,EACd,QAAiB,CAAA,iBAAA,CAAA,CAAA;AACxB,UAAA,KAAK,iBAAE,QAAU,CAAA,UAAA,CAAA;AACjB,UAAA,OAAK,0CAAE,QAAW,CAAA,WAAA,IAAA,QAAA,CAAA,WAAA,CAAA,GAAA,IAAA,CAAA,CAAA,CAAA;;;;;;;;;"}