'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var component_1 = require('../common/component'); var touch_1 = require('../mixins/touch'); var utils_1 = require('../common/utils'); var THRESHOLD = 0.3; var ARRAY = []; component_1.VantComponent({ props: { disabled: Boolean, leftWidth: { type: Number, value: 0, observer: function (leftWidth) { if (leftWidth === void 0) { leftWidth = 0; } if (this.offset > 0) { this.swipeMove(leftWidth); } }, }, rightWidth: { type: Number, value: 0, observer: function (rightWidth) { if (rightWidth === void 0) { rightWidth = 0; } if (this.offset < 0) { this.swipeMove(-rightWidth); } }, }, asyncClose: Boolean, name: { type: null, value: '', }, }, mixins: [touch_1.touch], data: { catchMove: false, wrapperStyle: '', }, created: function () { this.offset = 0; ARRAY.push(this); }, destroyed: function () { var _this = this; ARRAY = ARRAY.filter(function (item) { return item !== _this; }); }, methods: { open: function (position) { var _a = this.data, leftWidth = _a.leftWidth, rightWidth = _a.rightWidth; var offset = position === 'left' ? leftWidth : -rightWidth; this.swipeMove(offset); this.$emit('open', { position: position, name: this.data.name, }); }, close: function () { this.swipeMove(0); }, swipeMove: function (offset) { if (offset === void 0) { offset = 0; } this.offset = utils_1.range( offset, -this.data.rightWidth, this.data.leftWidth ); var transform = 'translate3d(' + this.offset + 'px, 0, 0)'; var transition = this.dragging ? 'none' : 'transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)'; this.setData({ wrapperStyle: '\n -webkit-transform: ' + transform + ';\n -webkit-transition: ' + transition + ';\n transform: ' + transform + ';\n transition: ' + transition + ';\n ', }); }, swipeLeaveTransition: function () { var _a = this.data, leftWidth = _a.leftWidth, rightWidth = _a.rightWidth; var offset = this.offset; if (rightWidth > 0 && -offset > rightWidth * THRESHOLD) { this.open('right'); } else if (leftWidth > 0 && offset > leftWidth * THRESHOLD) { this.open('left'); } else { this.swipeMove(0); } this.setData({ catchMove: false }); }, startDrag: function (event) { if (this.data.disabled) { return; } this.startOffset = this.offset; this.touchStart(event); }, noop: function () {}, onDrag: function (event) { var _this = this; if (this.data.disabled) { return; } this.touchMove(event); if (this.direction !== 'horizontal') { return; } this.dragging = true; ARRAY.filter(function (item) { return item !== _this && item.offset !== 0; }).forEach(function (item) { return item.close(); }); this.setData({ catchMove: true }); this.swipeMove(this.startOffset + this.deltaX); }, endDrag: function () { if (this.data.disabled) { return; } this.dragging = false; this.swipeLeaveTransition(); }, onClick: function (event) { var _a = event.currentTarget.dataset.key, position = _a === void 0 ? 'outside' : _a; this.$emit('click', position); if (!this.offset) { return; } if (this.data.asyncClose) { this.$emit('close', { position: position, instance: this, name: this.data.name, }); } else { this.swipeMove(0); } }, }, });