var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { SuperComponent, wxComponent } from '../../common/src/index'; import config from '../../common/config'; import props from './props'; import { getRect } from '../../common/utils'; const systemInfo = wx.getSystemInfoSync(); const { prefix } = config; const name = `${prefix}-draggable`; let Draggable = class Draggable extends SuperComponent { constructor() { super(...arguments); this.properties = props; this.externalClasses = [`${prefix}-class`]; this.data = { prefix, classPrefix: name, }; this.lifetimes = { ready() { this.computedRect(); }, }; this.methods = { onTouchStart(e) { if (this.properties.direction === 'none') return; this.startX = e.touches[0].clientX + systemInfo.windowWidth - this.rect.right; this.startY = e.touches[0].clientY + systemInfo.windowHeight - this.rect.bottom; this.triggerEvent('start', { startX: this.startX, startY: this.startY, rect: this.rect, e }); }, onTouchMove(e) { if (this.properties.direction === 'none') return; let x = this.startX - e.touches[0].clientX; let y = this.startY - e.touches[0].clientY; if (this.properties.direction === 'vertical') { x = systemInfo.windowWidth - this.rect.right; } if (this.properties.direction === 'horizontal') { y = systemInfo.windowHeight - this.rect.bottom; } this.triggerEvent('move', { x, y, rect: this.rect, e }); }, onTouchEnd(e) { return __awaiter(this, void 0, void 0, function* () { if (this.properties.direction === 'none') return; yield this.computedRect(); this.triggerEvent('end', { rect: this.rect, e }); }); }, computedRect() { return __awaiter(this, void 0, void 0, function* () { this.rect = { right: 0, bottom: 0, width: 0, height: 0 }; this.rect = yield getRect(this, `.${this.data.classPrefix}`); }); }, }; } }; Draggable = __decorate([ wxComponent() ], Draggable); export default Draggable;