|  | @@ -1,219 +1,342 @@
 | 
	
		
			
				|  |  |  <template>
 | 
	
		
			
				|  |  | -  <div class='wrap' @mouseover="mouseover" @mouseleave="mouseleave"  @dragstart="dragstart" @mousedown="mousedown" @mouseup="mouseup">
 | 
	
		
			
				|  |  | +  <div class='wrap' @mouseover="mouseover" @mouseleave="mouseleave" @dragstart="dragstart" @mousedown="mousedown"
 | 
	
		
			
				|  |  | +    @mouseup="mouseup">
 | 
	
		
			
				|  |  |      <template v-if="!element.eleCanvas">
 | 
	
		
			
				|  |  | -      <img :style="{'z-index':1,width:'100%',height:'100%','border-radius': element.circular+'%'}" :src="element.imgSrc&&element.imgSrc.indexOf('http://dm.static.elab-plus.com')>-1?element.imgSrc.replace('http://dm.static.elab-plus.com','https://dm.static.elab-plus.com'):element.imgSrc">
 | 
	
		
			
				|  |  | +      <img :style="{'z-index':1,width:'100%',height:'100%','border-radius': element.circular+'%'}"
 | 
	
		
			
				|  |  | +        :src="element.imgSrc&&element.imgSrc.indexOf('http://dm.static.elab-plus.com')>-1?element.imgSrc.replace('http://dm.static.elab-plus.com','https://dm.static.elab-plus.com'):element.imgSrc">
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -      <img  src="https://dm.static.elab-plus.com/launchTemplate/0a3b783c-c54a-4e13-ba50-8f0ac6bb35f4-%E6%92%AD%E6%94%BE.png"
 | 
	
		
			
				|  |  | -            v-show="element.videoEditable" style="z-index:1;top:50%;left:50%;transform:translate(-50%,-50%);display: block"/>
 | 
	
		
			
				|  |  | -    </template>
 | 
	
		
			
				|  |  | -    <elab-background-canvas v-else-if="element.eleCanvas=='WaterRipple'" :width="element.width" :height="element.height" :cstyle="`position:absolute;z-index: 1;border-radius:${element.circular+'%'}`" :type="element.eleCanvas" :picSrc="element.imgSrc&&element.imgSrc.indexOf('http://dm.static.elab-plus.com')>-1?element.imgSrc.replace('http://dm.static.elab-plus.com','https://dm.static.elab-plus.com'):element.imgSrc"></elab-background-canvas>
 | 
	
		
			
				|  |  | +      <img
 | 
	
		
			
				|  |  | +        src="https://dm.static.elab-plus.com/launchTemplate/0a3b783c-c54a-4e13-ba50-8f0ac6bb35f4-%E6%92%AD%E6%94%BE.png"
 | 
	
		
			
				|  |  | +        v-show="element.videoEditable"
 | 
	
		
			
				|  |  | +        style="z-index:1;top:50%;left:50%;transform:translate(-50%,-50%);display: block" />
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    <Operate v-show="showOperate || show|| $store.state.editor.complexEditorElement.indexOf(element)>-1" @mousedown.native.stop="scaleMousedown" @mouseup.native.stop="scaleMouseup" @mousemove.native.stop="scaleMousemove"
 | 
	
		
			
				|  |  | +      <section class="content">
 | 
	
		
			
				|  |  | +        <!-- 默认属性动画 -->
 | 
	
		
			
				|  |  | +        <div :class="'animated ' + this.element['animatedName']" :style="styleAnime" v-if="element['animatedFont']">
 | 
	
		
			
				|  |  | +          <myfont :duration="element.duration" :delay="element.delay" :loop="element.loop"
 | 
	
		
			
				|  |  | +            :fonts="element.text.replace(/\n/g,'^').split('')" :class="element['animatedFont']"
 | 
	
		
			
				|  |  | +            :fontstyle="element['animatedFont']" :highLightDelimitId="isOverView?'':element.nodeId"
 | 
	
		
			
				|  |  | +            :elabEditable="element['elabEditable']||true" :style="styleBasic">{{ element.text }}</myfont>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +        <div :class="'animated ' + this.element['animatedName']" :style="styleAnime"
 | 
	
		
			
				|  |  | +          v-else-if="this.element['animatedType']==0">
 | 
	
		
			
				|  |  | +          <div :highLightDelimitId="isOverView?'':element.nodeId" :elabEditable="element['elabEditable']||true"
 | 
	
		
			
				|  |  | +            :style="styleBasic" :class="this.element['animatedFont'] ">{{ element.text }}</div>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +        <div :class="'animated ' + this.element['animatedName']" :style="styleAnime" v-else>
 | 
	
		
			
				|  |  | +          <div :highLightDelimitId="isOverView?'':element.nodeId" :elabEditable="element['elabEditable']||true"
 | 
	
		
			
				|  |  | +            :style="styleBasic" :class="this.element['animatedFont'] ">{{ element.text }}</div>
 | 
	
		
			
				|  |  | +        </div>
 | 
	
		
			
				|  |  | +      </section>
 | 
	
		
			
				|  |  | +    </template>
 | 
	
		
			
				|  |  | +    <elab-background-canvas v-else-if="element.eleCanvas=='WaterRipple'" :width="element.width" :height="element.height"
 | 
	
		
			
				|  |  | +      :cstyle="`position:absolute;z-index: 1;border-radius:${element.circular+'%'}`" :type="element.eleCanvas"
 | 
	
		
			
				|  |  | +      :picSrc="element.imgSrc&&element.imgSrc.indexOf('http://dm.static.elab-plus.com')>-1?element.imgSrc.replace('http://dm.static.elab-plus.com','https://dm.static.elab-plus.com'):element.imgSrc">
 | 
	
		
			
				|  |  | +    </elab-background-canvas>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    />
 | 
	
		
			
				|  |  | +    <Operate v-show="showOperate || show|| $store.state.editor.complexEditorElement.indexOf(element)>-1"
 | 
	
		
			
				|  |  | +      @mousedown.native.stop="scaleMousedown" @mouseup.native.stop="scaleMouseup"
 | 
	
		
			
				|  |  | +      @mousemove.native.stop="scaleMousemove" />
 | 
	
		
			
				|  |  |    </div>
 | 
	
		
			
				|  |  |  </template>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <script>
 | 
	
		
			
				|  |  | -    import Operate from '../Operate'
 | 
	
		
			
				|  |  | -    import appConst from '../../util/appConst'
 | 
	
		
			
				|  |  | -    import elabBackgroundCanvas from '../../util/canvas/elabBackgroundCanvas'
 | 
	
		
			
				|  |  | -    var body = document.body;
 | 
	
		
			
				|  |  | +  import Operate from '../Operate'
 | 
	
		
			
				|  |  | +  import appConst from '../../util/appConst'
 | 
	
		
			
				|  |  | +  import myfont from '../font/font'
 | 
	
		
			
				|  |  | +  import elabBackgroundCanvas from '../../util/canvas/elabBackgroundCanvas'
 | 
	
		
			
				|  |  | +  var body = document.body;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    export default{
 | 
	
		
			
				|  |  | -      props: {
 | 
	
		
			
				|  |  | -        element: {
 | 
	
		
			
				|  |  | -          type: Object,
 | 
	
		
			
				|  |  | -          require: true
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        showOperate: {
 | 
	
		
			
				|  |  | -          type: Boolean
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        stopEvent: {
 | 
	
		
			
				|  |  | -          type: Boolean
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        type: ''
 | 
	
		
			
				|  |  | +  export default {
 | 
	
		
			
				|  |  | +    props: {
 | 
	
		
			
				|  |  | +      element: {
 | 
	
		
			
				|  |  | +        type: Object,
 | 
	
		
			
				|  |  | +        require: true
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | -      data () {
 | 
	
		
			
				|  |  | -        return {
 | 
	
		
			
				|  |  | -          left: 0,
 | 
	
		
			
				|  |  | -          top: 0,
 | 
	
		
			
				|  |  | -          width: 0,
 | 
	
		
			
				|  |  | -          height: 0,
 | 
	
		
			
				|  |  | -          currentX: 0,
 | 
	
		
			
				|  |  | -          currentY: 0,
 | 
	
		
			
				|  |  | -          flag: false,
 | 
	
		
			
				|  |  | -          scaleFlag: false,
 | 
	
		
			
				|  |  | -          direction: '',
 | 
	
		
			
				|  |  | -          http: appConst.BACKEND_DOMAIN,
 | 
	
		
			
				|  |  | -          show:false
 | 
	
		
			
				|  |  | -        }
 | 
	
		
			
				|  |  | +      showOperate: {
 | 
	
		
			
				|  |  | +        type: Boolean
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | -      mounted(){
 | 
	
		
			
				|  |  | -        window.addEventListener("mouseup",()=>{
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -          this.$store.state.user.operationFlag=true;
 | 
	
		
			
				|  |  | -          this.flag = false
 | 
	
		
			
				|  |  | -          this.scaleFlag = false
 | 
	
		
			
				|  |  | -        })
 | 
	
		
			
				|  |  | +      stopEvent: {
 | 
	
		
			
				|  |  | +        type: Boolean
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | -      methods: {
 | 
	
		
			
				|  |  | -        // 处理元素拖动
 | 
	
		
			
				|  |  | -        move () {
 | 
	
		
			
				|  |  | -          var body = document.body;
 | 
	
		
			
				|  |  | -          // var editor = document.querySelector('.editor')
 | 
	
		
			
				|  |  | -          document.querySelector('body').onmousemove = (event) => {
 | 
	
		
			
				|  |  | -            var e = event || window.event
 | 
	
		
			
				|  |  | -            if (this.flag && !this.scaleFlag) {
 | 
	
		
			
				|  |  | -              let nowX = e.clientX
 | 
	
		
			
				|  |  | -              let nowY = e.clientY
 | 
	
		
			
				|  |  | -              let disX = nowX - this.currentX
 | 
	
		
			
				|  |  | -              let disY = nowY - this.currentY
 | 
	
		
			
				|  |  | -              if(this.$store.state.editor.complexEditorElement.indexOf(this.element)>-1&&this.$store.state.editor.complexEditorElement.length>1){
 | 
	
		
			
				|  |  | -                this.$store.state.editor.complexEditorElement.forEach((ele,index)=>{
 | 
	
		
			
				|  |  | -                  ele['top'] = disY + this.startTopArr[index]
 | 
	
		
			
				|  |  | -                  ele['left'] = ele.type=='frame'?0:disX + this.startLeftArr[index]
 | 
	
		
			
				|  |  | -                });
 | 
	
		
			
				|  |  | -                return;
 | 
	
		
			
				|  |  | -              }
 | 
	
		
			
				|  |  | -              this.element.top = parseInt(this.top) + disY
 | 
	
		
			
				|  |  | -              this.element.left = parseInt(this.left) + disX
 | 
	
		
			
				|  |  | +      type: ''
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    data() {
 | 
	
		
			
				|  |  | +      return {
 | 
	
		
			
				|  |  | +        left: 0,
 | 
	
		
			
				|  |  | +        top: 0,
 | 
	
		
			
				|  |  | +        width: 0,
 | 
	
		
			
				|  |  | +        height: 0,
 | 
	
		
			
				|  |  | +        currentX: 0,
 | 
	
		
			
				|  |  | +        currentY: 0,
 | 
	
		
			
				|  |  | +        flag: false,
 | 
	
		
			
				|  |  | +        scaleFlag: false,
 | 
	
		
			
				|  |  | +        direction: '',
 | 
	
		
			
				|  |  | +        http: appConst.BACKEND_DOMAIN,
 | 
	
		
			
				|  |  | +        show: false
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    mounted() {
 | 
	
		
			
				|  |  | +      window.addEventListener("mouseup", () => {
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        this.$store.state.user.operationFlag = true;
 | 
	
		
			
				|  |  | +        this.flag = false
 | 
	
		
			
				|  |  | +        this.scaleFlag = false
 | 
	
		
			
				|  |  | +      })
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    methods: {
 | 
	
		
			
				|  |  | +      // 处理元素拖动
 | 
	
		
			
				|  |  | +      move() {
 | 
	
		
			
				|  |  | +        var body = document.body;
 | 
	
		
			
				|  |  | +        // var editor = document.querySelector('.editor')
 | 
	
		
			
				|  |  | +        document.querySelector('body').onmousemove = (event) => {
 | 
	
		
			
				|  |  | +          var e = event || window.event
 | 
	
		
			
				|  |  | +          if (this.flag && !this.scaleFlag) {
 | 
	
		
			
				|  |  | +            let nowX = e.clientX
 | 
	
		
			
				|  |  | +            let nowY = e.clientY
 | 
	
		
			
				|  |  | +            let disX = nowX - this.currentX
 | 
	
		
			
				|  |  | +            let disY = nowY - this.currentY
 | 
	
		
			
				|  |  | +            if (this.$store.state.editor.complexEditorElement.indexOf(this.element) > -1 && this.$store.state.editor.complexEditorElement.length > 1) {
 | 
	
		
			
				|  |  | +              this.$store.state.editor.complexEditorElement.forEach((ele, index) => {
 | 
	
		
			
				|  |  | +                ele['top'] = disY + this.startTopArr[index]
 | 
	
		
			
				|  |  | +                ele['left'] = ele.type == 'frame' ? 0 : disX + this.startLeftArr[index]
 | 
	
		
			
				|  |  | +              });
 | 
	
		
			
				|  |  | +              return;
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            this.element.top = parseInt(this.top) + disY
 | 
	
		
			
				|  |  | +            this.element.left = parseInt(this.left) + disX
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        // 处理元素伸缩
 | 
	
		
			
				|  |  | -        scaleMousemove () {
 | 
	
		
			
				|  |  | -          document.querySelector('.editor').onmouseup = (event) => {
 | 
	
		
			
				|  |  | -            this.scaleFlag = false
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      // 处理元素伸缩
 | 
	
		
			
				|  |  | +      scaleMousemove() {
 | 
	
		
			
				|  |  | +        document.querySelector('.editor').onmouseup = (event) => {
 | 
	
		
			
				|  |  | +          this.scaleFlag = false
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        document.querySelector('.editor').onmousemove = (event) => {
 | 
	
		
			
				|  |  | +          var e = event || window.event
 | 
	
		
			
				|  |  | +          if (this.scaleFlag) {
 | 
	
		
			
				|  |  | +            let nowX = e.clientX
 | 
	
		
			
				|  |  | +            let nowY = e.clientY
 | 
	
		
			
				|  |  | +            let disX = nowX - this.currentX
 | 
	
		
			
				|  |  | +            let disY = nowY - this.currentY
 | 
	
		
			
				|  |  | +            let ratio = this.width / this.height
 | 
	
		
			
				|  |  | +            switch (this.direction) {
 | 
	
		
			
				|  |  | +              // 左边
 | 
	
		
			
				|  |  | +              case 'w':
 | 
	
		
			
				|  |  | +                this.element.width = parseInt(this.width) - disX
 | 
	
		
			
				|  |  | +                // this.element.height = parseInt(((this.width) - disX)/ratio)
 | 
	
		
			
				|  |  | +                this.element.left = parseInt(this.left) + disX
 | 
	
		
			
				|  |  | +                break
 | 
	
		
			
				|  |  | +              // 右边
 | 
	
		
			
				|  |  | +              case 'e':
 | 
	
		
			
				|  |  | +                this.element.width = parseInt(this.width) + disX
 | 
	
		
			
				|  |  | +                // this.element.height = parseInt(((this.width) + disX)/ratio)
 | 
	
		
			
				|  |  | +                break
 | 
	
		
			
				|  |  | +              // 上边
 | 
	
		
			
				|  |  | +              case 'n':
 | 
	
		
			
				|  |  | +                this.element.height = parseInt(this.height) - disY
 | 
	
		
			
				|  |  | +                // this.element.width = parseInt(((this.height) - disY)*ratio)
 | 
	
		
			
				|  |  | +                this.element.top = parseInt(this.top) + disY
 | 
	
		
			
				|  |  | +                break
 | 
	
		
			
				|  |  | +              // 下边
 | 
	
		
			
				|  |  | +              case 's':
 | 
	
		
			
				|  |  | +                this.element.height = parseInt(this.height) + disY
 | 
	
		
			
				|  |  | +                // this.element.width = parseInt(((this.height) + disY)*ratio)
 | 
	
		
			
				|  |  | +                break
 | 
	
		
			
				|  |  | +              // 左上
 | 
	
		
			
				|  |  | +              case 'nw':
 | 
	
		
			
				|  |  | +                // this.element.width = parseInt(this.width) - disX
 | 
	
		
			
				|  |  | +                this.element.width = parseInt(((this.height) - disY) * ratio)
 | 
	
		
			
				|  |  | +                // this.element.left = parseInt(this.left) + disX
 | 
	
		
			
				|  |  | +                this.element.left = parseInt(this.left + disY * ratio)
 | 
	
		
			
				|  |  | +                this.element.height = parseInt(this.height) - disY
 | 
	
		
			
				|  |  | +                this.element.top = parseInt(this.top) + disY
 | 
	
		
			
				|  |  | +                break
 | 
	
		
			
				|  |  | +              // 左下
 | 
	
		
			
				|  |  | +              case 'sw':
 | 
	
		
			
				|  |  | +                // this.element.width = parseInt(this.width) - disX
 | 
	
		
			
				|  |  | +                this.element.width = parseInt(((this.height) + disY) * ratio)
 | 
	
		
			
				|  |  | +                // this.element.left = parseInt(this.left) + disX
 | 
	
		
			
				|  |  | +                this.element.left = parseInt(this.left - disY * ratio)
 | 
	
		
			
				|  |  | +                this.element.height = parseInt(this.height) + disY
 | 
	
		
			
				|  |  | +                break
 | 
	
		
			
				|  |  | +              // 右上
 | 
	
		
			
				|  |  | +              case 'ne':
 | 
	
		
			
				|  |  | +                this.element.height = parseInt(this.height) - disY
 | 
	
		
			
				|  |  | +                this.element.top = parseInt(this.top) + disY
 | 
	
		
			
				|  |  | +                // this.element.width = parseInt(this.width) + disX
 | 
	
		
			
				|  |  | +                this.element.width = parseInt(((this.height) - disY) * ratio)
 | 
	
		
			
				|  |  | +                break
 | 
	
		
			
				|  |  | +              // 右下
 | 
	
		
			
				|  |  | +              case 'se':
 | 
	
		
			
				|  |  | +                this.element.height = parseInt(this.height) + disY
 | 
	
		
			
				|  |  | +                // this.element.width = parseInt(this.width) + disX
 | 
	
		
			
				|  |  | +                this.element.width = parseInt(((this.height) + disY) * ratio)
 | 
	
		
			
				|  |  | +                break
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | -          document.querySelector('.editor').onmousemove = (event) => {
 | 
	
		
			
				|  |  | -            var e = event || window.event
 | 
	
		
			
				|  |  | -            if (this.scaleFlag) {
 | 
	
		
			
				|  |  | -              let nowX = e.clientX
 | 
	
		
			
				|  |  | -              let nowY = e.clientY
 | 
	
		
			
				|  |  | -              let disX = nowX - this.currentX
 | 
	
		
			
				|  |  | -              let disY = nowY - this.currentY
 | 
	
		
			
				|  |  | -              let  ratio = this.width / this.height
 | 
	
		
			
				|  |  | -              switch (this.direction) {
 | 
	
		
			
				|  |  | -                // 左边
 | 
	
		
			
				|  |  | -                case 'w':
 | 
	
		
			
				|  |  | -                  this.element.width = parseInt(this.width) - disX
 | 
	
		
			
				|  |  | -                  // this.element.height = parseInt(((this.width) - disX)/ratio)
 | 
	
		
			
				|  |  | -                  this.element.left = parseInt(this.left) + disX
 | 
	
		
			
				|  |  | -                  break
 | 
	
		
			
				|  |  | -                // 右边
 | 
	
		
			
				|  |  | -                case 'e':
 | 
	
		
			
				|  |  | -                  this.element.width = parseInt(this.width) + disX
 | 
	
		
			
				|  |  | -                  // this.element.height = parseInt(((this.width) + disX)/ratio)
 | 
	
		
			
				|  |  | -                  break
 | 
	
		
			
				|  |  | -                // 上边
 | 
	
		
			
				|  |  | -                case 'n':
 | 
	
		
			
				|  |  | -                  this.element.height = parseInt(this.height) - disY
 | 
	
		
			
				|  |  | -                  // this.element.width = parseInt(((this.height) - disY)*ratio)
 | 
	
		
			
				|  |  | -                  this.element.top = parseInt(this.top) + disY
 | 
	
		
			
				|  |  | -                  break
 | 
	
		
			
				|  |  | -                // 下边
 | 
	
		
			
				|  |  | -                case 's':
 | 
	
		
			
				|  |  | -                  this.element.height = parseInt(this.height) + disY
 | 
	
		
			
				|  |  | -                  // this.element.width = parseInt(((this.height) + disY)*ratio)
 | 
	
		
			
				|  |  | -                  break
 | 
	
		
			
				|  |  | -                // 左上
 | 
	
		
			
				|  |  | -                case 'nw':
 | 
	
		
			
				|  |  | -                  // this.element.width = parseInt(this.width) - disX
 | 
	
		
			
				|  |  | -                  this.element.width = parseInt(((this.height) - disY)*ratio)
 | 
	
		
			
				|  |  | -                  // this.element.left = parseInt(this.left) + disX
 | 
	
		
			
				|  |  | -                  this.element.left = parseInt(this.left + disY*ratio)
 | 
	
		
			
				|  |  | -                  this.element.height = parseInt(this.height) - disY
 | 
	
		
			
				|  |  | -                  this.element.top = parseInt(this.top) + disY
 | 
	
		
			
				|  |  | -                  break
 | 
	
		
			
				|  |  | -                // 左下
 | 
	
		
			
				|  |  | -                case 'sw':
 | 
	
		
			
				|  |  | -                  // this.element.width = parseInt(this.width) - disX
 | 
	
		
			
				|  |  | -                  this.element.width = parseInt(( (this.height) + disY)*ratio)
 | 
	
		
			
				|  |  | -                  // this.element.left = parseInt(this.left) + disX
 | 
	
		
			
				|  |  | -                  this.element.left = parseInt(this.left - disY*ratio)
 | 
	
		
			
				|  |  | -                  this.element.height = parseInt(this.height) + disY
 | 
	
		
			
				|  |  | -                  break
 | 
	
		
			
				|  |  | -                // 右上
 | 
	
		
			
				|  |  | -                case 'ne':
 | 
	
		
			
				|  |  | -                  this.element.height = parseInt(this.height) - disY
 | 
	
		
			
				|  |  | -                  this.element.top = parseInt(this.top) + disY
 | 
	
		
			
				|  |  | -                  // this.element.width = parseInt(this.width) + disX
 | 
	
		
			
				|  |  | -                  this.element.width = parseInt(((this.height) - disY)*ratio)
 | 
	
		
			
				|  |  | -                  break
 | 
	
		
			
				|  |  | -                // 右下
 | 
	
		
			
				|  |  | -                case 'se':
 | 
	
		
			
				|  |  | -                  this.element.height = parseInt(this.height) + disY
 | 
	
		
			
				|  |  | -                  // this.element.width = parseInt(this.width) + disX
 | 
	
		
			
				|  |  | -                  this.element.width = parseInt(((this.height) + disY)*ratio)
 | 
	
		
			
				|  |  | -                  break
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      mousedown(e) {
 | 
	
		
			
				|  |  | +        this.$store.state.user.operationFlag = false;
 | 
	
		
			
				|  |  | +        if (this.element.locked) {
 | 
	
		
			
				|  |  | +          return false;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (this.stopEvent) {
 | 
	
		
			
				|  |  | +          return false
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.flag = true
 | 
	
		
			
				|  |  | +        this.currentX = e.clientX
 | 
	
		
			
				|  |  | +        this.currentY = e.clientY
 | 
	
		
			
				|  |  | +        if (this.$store.state.editor.complexEditorElement.indexOf(this.element) > -1 && this.$store.state.editor.complexEditorElement.length > 1) {
 | 
	
		
			
				|  |  | +          this.startTopArr = this.$store.state.editor.complexEditorElement.map(v => v.top)
 | 
	
		
			
				|  |  | +          this.startLeftArr = this.$store.state.editor.complexEditorElement.map(v => v.left)
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.top = this.element.top
 | 
	
		
			
				|  |  | +        this.left = this.element.left
 | 
	
		
			
				|  |  | +        this.move()
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      mouseup(e) {
 | 
	
		
			
				|  |  | +        this.$store.state.user.operationFlag = true;
 | 
	
		
			
				|  |  | +        this.flag = false
 | 
	
		
			
				|  |  | +        this.scaleFlag = false
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      mouseover(e) {
 | 
	
		
			
				|  |  | +        if (this.$store.state.editor.editorPage.elements.indexOf(this.element) == -1) {
 | 
	
		
			
				|  |  | +          return
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        this.show = true
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      mouseleave(e) {
 | 
	
		
			
				|  |  | +        this.show = false
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      scaleMousedown(e) {
 | 
	
		
			
				|  |  | +        this.$store.state.user.operationFlag = false;
 | 
	
		
			
				|  |  | +        this.scaleFlag = true
 | 
	
		
			
				|  |  | +        this.flag = true
 | 
	
		
			
				|  |  | +        this.currentX = e.clientX
 | 
	
		
			
				|  |  | +        this.currentY = e.clientY
 | 
	
		
			
				|  |  | +        this.top = this.element.top
 | 
	
		
			
				|  |  | +        this.left = this.element.left
 | 
	
		
			
				|  |  | +        this.width = this.element.width
 | 
	
		
			
				|  |  | +        this.height = this.element.height
 | 
	
		
			
				|  |  | +        this.direction = e.target.getAttribute('data-direction')
 | 
	
		
			
				|  |  | +        this.scaleMousemove()
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      scaleMouseup(e) {
 | 
	
		
			
				|  |  | +        this.$store.state.user.operationFlag = true;
 | 
	
		
			
				|  |  | +        this.scaleFlag = false
 | 
	
		
			
				|  |  | +        this.flag = false
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      dragstart(event) {
 | 
	
		
			
				|  |  | +        event.preventDefault()
 | 
	
		
			
				|  |  | +      }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    components: {
 | 
	
		
			
				|  |  | +      Operate,
 | 
	
		
			
				|  |  | +      myfont,
 | 
	
		
			
				|  |  | +      elabBackgroundCanvas
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +    computed: {
 | 
	
		
			
				|  |  | +      editingElement () {
 | 
	
		
			
				|  |  | +        return this.$store.getters['editingElement']
 | 
	
		
			
				|  |  | +      },
 | 
	
		
			
				|  |  | +      styleAnime () {
 | 
	
		
			
				|  |  | +        var playing = this.element['playing']
 | 
	
		
			
				|  |  | +        //粒子滚动效果
 | 
	
		
			
				|  |  | +        if (this.element['animatedType'] == 1) {
 | 
	
		
			
				|  |  | +          ////粒子滚动效果,如果设置了延迟播放大小,则进行判断,默认是不延迟,默认的虚线宽度是70
 | 
	
		
			
				|  |  | +          if (this.element['delay'] ==0) {
 | 
	
		
			
				|  |  | +            if (playing) {
 | 
	
		
			
				|  |  | +              return {
 | 
	
		
			
				|  |  | +                animationName: this.element['animatedName'],
 | 
	
		
			
				|  |  | +                animationDuration: this.element['duration']+'s',
 | 
	
		
			
				|  |  | +                animationTimingFunction: 'linear',
 | 
	
		
			
				|  |  | +                animationIterationCount: (this.element['loop'] ? 'infinite' : 'initial'),
 | 
	
		
			
				|  |  |                }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            //stroke动画不动的情况,stroke填充线条
 | 
	
		
			
				|  |  | +            return {
 | 
	
		
			
				|  |  | +              // animationName: this.element['animatedName'],
 | 
	
		
			
				|  |  | +              strokeDasharray: '300 400',
 | 
	
		
			
				|  |  | +              animationDuration: this.element['duration']+'s',
 | 
	
		
			
				|  |  | +              animationTimingFunction: 'linear',
 | 
	
		
			
				|  |  | +              animationIterationCount: (this.element['loop'] ? 'infinite' : 'initial'),
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        mousedown (e) {
 | 
	
		
			
				|  |  | -          this.$store.state.user.operationFlag=false;
 | 
	
		
			
				|  |  | -          if(this.element.locked){
 | 
	
		
			
				|  |  | -            return false;
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -          if(this.stopEvent){
 | 
	
		
			
				|  |  | -            return false
 | 
	
		
			
				|  |  | -          }
 | 
	
		
			
				|  |  | -          this.flag = true
 | 
	
		
			
				|  |  | -          this.currentX = e.clientX
 | 
	
		
			
				|  |  | -          this.currentY = e.clientY
 | 
	
		
			
				|  |  | -          if(this.$store.state.editor.complexEditorElement.indexOf(this.element)>-1&&this.$store.state.editor.complexEditorElement.length>1){
 | 
	
		
			
				|  |  | -            this.startTopArr=this.$store.state.editor.complexEditorElement.map(v=>v.top)
 | 
	
		
			
				|  |  | -            this.startLeftArr=this.$store.state.editor.complexEditorElement.map(v=>v.left)
 | 
	
		
			
				|  |  | +          return {
 | 
	
		
			
				|  |  | +            animationName: this.element['animatedName'],
 | 
	
		
			
				|  |  | +            animationDuration: this.element['duration']+'s',
 | 
	
		
			
				|  |  | +            animationTimingFunction: 'linear',
 | 
	
		
			
				|  |  | +            animationDelay: this.element['delay'] + 's',
 | 
	
		
			
				|  |  | +            animationIterationCount: (this.element['loop'] ? 'infinite' : 'initial'),
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | -          this.top = this.element.top
 | 
	
		
			
				|  |  | -          this.left = this.element.left
 | 
	
		
			
				|  |  | -          this.move()
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        mouseup (e) {
 | 
	
		
			
				|  |  | -          this.$store.state.user.operationFlag=true;
 | 
	
		
			
				|  |  | -          this.flag = false
 | 
	
		
			
				|  |  | -          this.scaleFlag = false
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        mouseover (e) {
 | 
	
		
			
				|  |  | -          if(this.$store.state.editor.editorPage.elements.indexOf(this.element)==-1){
 | 
	
		
			
				|  |  | -            return
 | 
	
		
			
				|  |  | +        } else if (this.element['animatedType'] == 2) { //类似抖音抖动动画
 | 
	
		
			
				|  |  | +          var sharksScroll = {
 | 
	
		
			
				|  |  | +            animationDirection: 'reverse',
 | 
	
		
			
				|  |  | +            animationFillMode: 'none',
 | 
	
		
			
				|  |  | +            animationPlayState: 'running',
 | 
	
		
			
				|  |  | +            animationTimingFunction: 'cubic-bezier(0.68, -0.55, 0.27, 1.55)',
 | 
	
		
			
				|  |  | +            animationDelay: this.element['delay'] + 's',
 | 
	
		
			
				|  |  | +            animationIterationCount: (this.element['loop'] ? 'infinite' : 'initial'),
 | 
	
		
			
				|  |  | +            animationDuration: this.element['duration']+'s',
 | 
	
		
			
				|  |  | +            animationDelay: this.element['delay'] + 's',
 | 
	
		
			
				|  |  | +          };
 | 
	
		
			
				|  |  | +          if (playing) {
 | 
	
		
			
				|  |  | +            sharksScroll = {
 | 
	
		
			
				|  |  | +              animationDirection: 'reverse',
 | 
	
		
			
				|  |  | +              animationFillMode: 'none',
 | 
	
		
			
				|  |  | +              animationPlayState: 'running',
 | 
	
		
			
				|  |  | +              animationName: this.element['animatedName'],
 | 
	
		
			
				|  |  | +              animationTimingFunction: 'cubic-bezier(0.68, -0.55, 0.27, 1.55)',
 | 
	
		
			
				|  |  | +              animationDelay: this.element['delay'] + 's',
 | 
	
		
			
				|  |  | +              animationIterationCount: (this.element['loop'] ? 'infinite' : 'initial'),
 | 
	
		
			
				|  |  | +              animationDuration: this.element['duration']+'s',
 | 
	
		
			
				|  |  | +              animationDelay: this.element['delay'] + 's',
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  |            }
 | 
	
		
			
				|  |  | -          this.show = true
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        mouseleave(e){
 | 
	
		
			
				|  |  | -          this.show = false
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        scaleMousedown (e) {
 | 
	
		
			
				|  |  | -          this.$store.state.user.operationFlag=false;
 | 
	
		
			
				|  |  | -          this.scaleFlag = true
 | 
	
		
			
				|  |  | -          this.flag = true
 | 
	
		
			
				|  |  | -          this.currentX = e.clientX
 | 
	
		
			
				|  |  | -          this.currentY = e.clientY
 | 
	
		
			
				|  |  | -          this.top = this.element.top
 | 
	
		
			
				|  |  | -          this.left = this.element.left
 | 
	
		
			
				|  |  | -          this.width = this.element.width
 | 
	
		
			
				|  |  | -          this.height = this.element.height
 | 
	
		
			
				|  |  | -          this.direction = e.target.getAttribute('data-direction')
 | 
	
		
			
				|  |  | -          this.scaleMousemove()
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        scaleMouseup (e) {
 | 
	
		
			
				|  |  | -          this.$store.state.user.operationFlag=true;
 | 
	
		
			
				|  |  | -          this.scaleFlag = false
 | 
	
		
			
				|  |  | -          this.flag = false
 | 
	
		
			
				|  |  | -        },
 | 
	
		
			
				|  |  | -        dragstart (event) {
 | 
	
		
			
				|  |  | -          event.preventDefault()
 | 
	
		
			
				|  |  | +          return sharksScroll;
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        return {
 | 
	
		
			
				|  |  | +          animationIterationCount: this.element['loop'] ? 'infinite' : 'initial',
 | 
	
		
			
				|  |  | +          animationDuration: this.element['duration'] + 's',
 | 
	
		
			
				|  |  | +          animationDelay: this.element['delay'] + 's'
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        },
 | 
	
		
			
				|  |  | -      components: {
 | 
	
		
			
				|  |  | -        Operate,
 | 
	
		
			
				|  |  | -        elabBackgroundCanvas
 | 
	
		
			
				|  |  | +     
 | 
	
		
			
				|  |  | +      styleBasic () {
 | 
	
		
			
				|  |  | +        return {
 | 
	
		
			
				|  |  | +          width: this.element['width'] + 'px',
 | 
	
		
			
				|  |  | +          lineHeight: this.element['lineHeight'],
 | 
	
		
			
				|  |  | +          color: this.element['color'],
 | 
	
		
			
				|  |  | +          backgroundColor: this.element['allTransparent'] || this.element['backgroundColor'],
 | 
	
		
			
				|  |  | +          textAlign: this.element['textAlign'],
 | 
	
		
			
				|  |  | +          fontSize: this.element['fontSize'] + 'px',
 | 
	
		
			
				|  |  | +          fontWeight: this.element['fontWeight'],
 | 
	
		
			
				|  |  | +          'font-family': this.element['fontFamily'],
 | 
	
		
			
				|  |  | +          opacity: this.element['opacity'] / 100,
 | 
	
		
			
				|  |  | +          transform: 'rotate(' + this.element['transform'] + 'deg' + ')',
 | 
	
		
			
				|  |  | +          'vertical-align': this.element['verticalAlign'],
 | 
	
		
			
				|  |  | +          display: this.element['display'],
 | 
	
		
			
				|  |  | +          'text-indent': this.element['textIndent'] + 'em',
 | 
	
		
			
				|  |  | +          'letter-spacing': this.element['letterSpacing'] + 'em',
 | 
	
		
			
				|  |  | +          'writing-mode' : this.element['verticalFont'],
 | 
	
		
			
				|  |  | +          'white-space' : this.element['verticalFont'] ? 'pre' : 'pre-wrap'
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    }
 | 
	
		
			
				|  |  | +    },
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |  </script>
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  <style lang='less' scoped>
 | 
	
		
			
				|  |  | +  .content {
 | 
	
		
			
				|  |  | +    /*white-space: pre-wrap;*/
 | 
	
		
			
				|  |  | +    word-wrap: break-word;
 | 
	
		
			
				|  |  | +    position: relative;
 | 
	
		
			
				|  |  | +    z-index: 3;
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    .wrap {
 | 
	
		
			
				|  |  |      position: absolute;
 | 
	
		
			
				|  |  |      cursor: move;
 | 
	
	
		
			
				|  | @@ -224,4 +347,4 @@
 | 
	
		
			
				|  |  |      user-select: none;
 | 
	
		
			
				|  |  |      /*-webkit-user-drag: none;*/
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  | -</style>
 | 
	
		
			
				|  |  | +</style>
 |