/*
 * @Descripttion: HJ
 * @Company: 思宏科技
 * @version: v1.0
 * @Author: HJ
 * @Date: 2021-03-17 14:45:35
 * @LastEditors: HJ
 * @LastEditTime: 2021-03-17 15:50:56
 */
const componentOptions = {
  // 组件选项
  options: {
    multipleSlots: true,
  },
  behaviors: [],
  properties: {
    // 浮窗 靠左还是靠右
    float: {
      type: String,
      value: "left",
    },
  },
  // 组件数据
  data: {
    isPageHidden: false, // 页面是否处于隐藏状态
    // 是否靠左
    isFloatLeft: true,
    // 动画
    animationData: null,
  },
  // 数据监听器
  observers: {},
  // 组件方法
  methods: {
    init() {
      this.setData({
        isFloatLeft: this.data.float === "left",
      });
      this.animation = wx.createAnimation({});
    },
    // 设置窗口是否隐藏
    hideWindow() {
      this._animation(0.2, 60);
    },
    // 设置窗口是否展示
    showWindow() {
      this._animation(1, 0);
    },
    // 窗口动画
    _animation(opacity = 0.2, x = 0) {
      x *= this.data.isFloatLeft ? -1 : 1
      const animation = this.animation
        .opacity(opacity)
        .translateX(x + '%')
        .step()
        .export();
      this.setData({
        animationData: animation,
      });
    },
  },
  // 组件生命周期
  lifetimes: {
    created() {},
    attached() {
      this.init();
    },
    ready() {},
    moved() {},
    detached() {},
  },
  definitionFilter() {},
  // 页面生命周期
  pageLifetimes: {
    // 页面被展示
    show() {
      const { isPageHidden } = this.data;

      // show事件发生前，页面不是处于隐藏状态时
      if (!isPageHidden) {
        return;
      }

      // 重新执行定时器等操作
    },
    // 页面被隐藏
    hide() {
      this.setData({
        isPageHidden: true,
      });

      // 清除定时器等操作
    },
    // 页面尺寸变化时
    resize() {},
  },
};

Component(componentOptions);
