export default {
  data() {
    return {
      position: [],
      button: {},
      btn: "[]"
    };
  },
  // computed: {
  // 	pos() {
  // 		return JSON.stringify(this.position)
  // 	},
  // 	btn() {
  // 		return JSON.stringify(this.button)
  // 	}
  // },
  watch: {
    button: {
      handler(newVal) {
        this.btn = JSON.stringify(newVal);
      },
      deep: true
    },
    show(newVal) {
      if (this.autoClose) return;
      if (!this.button) {
        this.init();
        return;
      }
      this.button.show = newVal;
    },
    leftOptions() {
      this.init();
    },
    rightOptions() {
      this.init();
    }
  },
  created() {
    if (this.swipeaction.children !== undefined) {
      this.swipeaction.children.push(this);
    }
  },
  mounted() {
    this.init();
  },
  beforeDestroy() {
    this.swipeaction.children.forEach((item, index) => {
      if (item === this) {
        this.swipeaction.children.splice(index, 1);
      }
    });
  },
  methods: {
    init() {
      clearTimeout(this.swipetimer);
      this.swipetimer = setTimeout(() => {
        this.getButtonSize();
      }, 50);
    },
    closeSwipe() {
      if (!this.autoClose) return;
      this.$emit("closeOther", this);
    },

    change(e) {
      this.$emit("change", e.open);
      let show = this.button.show;
      if (show !== e.open) {
        this.button.show = e.open;
      }
    },

    appTouchStart(e) {
      const { clientX } = e.changedTouches[0];
      this.clientX = clientX;
      this.timestamp = new Date().getTime();
    },
    appTouchEnd(e, index, item, position) {
      const { clientX } = e.changedTouches[0];
      // fixed by xxxx 模拟点击事件，解决 ios 13 点击区域错位的问题
      let diff = Math.abs(this.clientX - clientX);
      let time = new Date().getTime() - this.timestamp;
      if (diff < 40 && time < 300) {
        this.$emit("click", {
          content: item,
          index,
          position
        });
      }
    },
    getButtonSize() {
      const views = uni.createSelectorQuery().in(this);
      views
        .selectAll(".uni-swipe_button-group")
        .boundingClientRect(data => {
          let show = "none";
          if (this.autoClose) {
            show = "none";
          } else {
            show = this.show;
          }
          this.button = {
            data,
            show
          };
        })
        .exec();
    }
  }
};
