"use strict"; var __assign = undefined && undefined.__assign || function () { __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) { if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } } return t; }; return __assign.apply(this, arguments); }; Object.defineProperty(exports, "__esModule", { value: true }); var component_1 = require('./../common/component.js'); var shared_1 = require('./shared.js'); component_1.VantComponent({ classes: ['active-class', 'toolbar-class', 'column-class'], props: __assign({}, shared_1.pickerProps, { valueKey: { type: String, value: 'text' }, defaultIndex: { type: Number, value: 0 }, columns: { type: Array, value: [], observer: function observer(columns) { if (columns === void 0) { columns = []; } this.simple = columns.length && !columns[0].values; this.children = this.selectAllComponents('.van-picker__column'); if (Array.isArray(this.children) && this.children.length) { this.setColumns().catch(function () {}); } } } }), beforeCreate: function beforeCreate() { this.children = []; }, methods: { noop: function noop() {}, setColumns: function setColumns() { var _this = this; var data = this.data; var columns = this.simple ? [{ values: data.columns }] : data.columns; var stack = columns.map(function (column, index) { return _this.setColumnValues(index, column.values); }); return Promise.all(stack); }, emit: function emit(event) { var type = event.currentTarget.dataset.type; if (this.simple) { this.$emit(type, { value: this.getColumnValue(0), index: this.getColumnIndex(0) }); } else { this.$emit(type, { value: this.getValues(), index: this.getIndexes() }); } }, onChange: function onChange(event) { if (this.simple) { this.$emit('change', { picker: this, value: this.getColumnValue(0), index: this.getColumnIndex(0) }); } else { this.$emit('change', { picker: this, value: this.getValues(), index: event.currentTarget.dataset.index }); } }, // get column instance by index getColumn: function getColumn(index) { return this.children[index]; }, // get column value by index getColumnValue: function getColumnValue(index) { var column = this.getColumn(index); return column && column.getValue(); }, // set column value by index setColumnValue: function setColumnValue(index, value) { var column = this.getColumn(index); if (column == null) { return Promise.reject(new Error('setColumnValue: 对应列不存在')); } return column.setValue(value); }, // get column option index by column index getColumnIndex: function getColumnIndex(columnIndex) { return (this.getColumn(columnIndex) || {}).data.currentIndex; }, // set column option index by column index setColumnIndex: function setColumnIndex(columnIndex, optionIndex) { var column = this.getColumn(columnIndex); if (column == null) { return Promise.reject(new Error('setColumnIndex: 对应列不存在')); } return column.setIndex(optionIndex); }, // get options of column by index getColumnValues: function getColumnValues(index) { return (this.children[index] || {}).data.options; }, // set options of column by index setColumnValues: function setColumnValues(index, options, needReset) { if (needReset === void 0) { needReset = true; } var column = this.children[index]; if (column == null) { return Promise.reject(new Error('setColumnValues: 对应列不存在')); } var isSame = JSON.stringify(column.data.options) === JSON.stringify(options); if (isSame) { return Promise.resolve(); } return column.set({ options: options }).then(function () { if (needReset) { column.setIndex(0); } }); }, // get values of all columns getValues: function getValues() { return this.children.map(function (child) { return child.getValue(); }); }, // set values of all columns setValues: function setValues(values) { var _this = this; var stack = values.map(function (value, index) { return _this.setColumnValue(index, value); }); return Promise.all(stack); }, // get indexes of all columns getIndexes: function getIndexes() { return this.children.map(function (child) { return child.data.currentIndex; }); }, // set indexes of all columns setIndexes: function setIndexes(indexes) { var _this = this; var stack = indexes.map(function (optionIndex, columnIndex) { return _this.setColumnIndex(columnIndex, optionIndex); }); return Promise.all(stack); } } }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImluZGV4LmpzIl0sIm5hbWVzIjpbIl9fYXNzaWduIiwiT2JqZWN0IiwiaSIsIm4iLCJhcmd1bWVudHMiLCJzIiwidCIsInZhbHVlIiwiY29tcG9uZW50XzEiLCJyZXF1aXJlIiwic2hhcmVkXzEiLCJjbGFzc2VzIiwicHJvcHMiLCJ2YWx1ZUtleSIsInR5cGUiLCJkZWZhdWx0SW5kZXgiLCJjb2x1bW5zIiwib2JzZXJ2ZXIiLCJBcnJheSIsImJlZm9yZUNyZWF0ZSIsIm1ldGhvZHMiLCJub29wIiwic2V0Q29sdW1ucyIsIl90aGlzIiwiZGF0YSIsInZhbHVlcyIsInN0YWNrIiwiY29sdW1uIiwiUHJvbWlzZSIsImVtaXQiLCJldmVudCIsImluZGV4Iiwib25DaGFuZ2UiLCJwaWNrZXIiLCJnZXRDb2x1bW4iLCJnZXRDb2x1bW5WYWx1ZSIsInNldENvbHVtblZhbHVlIiwiZ2V0Q29sdW1uSW5kZXgiLCJzZXRDb2x1bW5JbmRleCIsImdldENvbHVtblZhbHVlcyIsInNldENvbHVtblZhbHVlcyIsIm5lZWRSZXNldCIsImlzU2FtZSIsIkpTT04iLCJvcHRpb25zIiwiZ2V0VmFsdWVzIiwiY2hpbGQiLCJzZXRWYWx1ZXMiLCJnZXRJbmRleGVzIiwic2V0SW5kZXhlcyJdLCJtYXBwaW5ncyI6Ijs7QUFDQSxJQUFJQSxXQUFZLGFBQVEsVUFBVCxRQUFDLElBQTBCLFlBQVk7QUFDbERBLGVBQVdDLE9BQUFBLE1BQUFBLElBQWlCLFVBQUEsQ0FBQSxFQUFZO0FBQ3BDLGFBQUssSUFBQSxDQUFBLEVBQU9DLElBQVAsQ0FBQSxFQUFjQyxJQUFJQyxVQUF2QixNQUFBLEVBQXlDRixJQUF6QyxDQUFBLEVBQUEsR0FBQSxFQUFxRDtBQUNqREcsZ0JBQUlELFVBQUpDLENBQUlELENBQUpDO0FBQ0EsaUJBQUssSUFBTCxDQUFBLElBQUEsQ0FBQSxFQUFBO0FBQWlCLG9CQUFJSixPQUFBQSxTQUFBQSxDQUFBQSxjQUFBQSxDQUFBQSxJQUFBQSxDQUFBQSxDQUFBQSxFQUFKLENB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c3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGNvbXBvbmVudF8xID0gcmVxdWlyZShcIi4uL2NvbW1vbi9jb21wb25lbnRcIik7XG52YXIgc2hhcmVkXzEgPSByZXF1aXJlKFwiLi9zaGFyZWRcIik7XG5jb21wb25lbnRfMS5WYW50Q29tcG9uZW50KHtcbiAgICBjbGFzc2VzOiBbJ2FjdGl2ZS1jbGFzcycsICd0b29sYmFyLWNsYXNzJywgJ2NvbHVtbi1jbGFzcyddLFxuICAgIHByb3BzOiBfX2Fzc2lnbih7fSwgc2hhcmVkXzEucGlja2VyUHJvcHMsIHsgdmFsdWVLZXk6IHtcbiAgICAgICAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgICAgICAgIHZhbHVlOiAndGV4dCdcbiAgICAgICAgfSwgZGVmYXVsdEluZGV4OiB7XG4gICAgICAgICAgICB0eXBlOiBOdW1iZXIsXG4gICAgICAgICAgICB2YWx1ZTogMFxuICAgICAgICB9LCBjb2x1bW5zOiB7XG4gICAgICAgICAgICB0eXBlOiBBcnJheSxcbiAgICAgICAgICAgIHZhbHVlOiBbXSxcbiAgICAgICAgICAgIG9ic2VydmVyOiBmdW5jdGlvbiAoY29sdW1ucykge1xuICAgICAgICAgICAgICAgIGlmIChjb2x1bW5zID09PSB2b2lkIDApIHsgY29sdW1ucyA9IFtdOyB9XG4gICAgICAgICAgICAgICAgdGhpcy5zaW1wbGUgPSBjb2x1bW5zLmxlbmd0aCAmJiAhY29sdW1uc1swXS52YWx1ZXM7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGlsZHJlbiA9IHRoaXMuc2VsZWN0QWxsQ29tcG9uZW50cygnLnZhbi1waWNrZXJfX2NvbHVtbicpO1xuICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHRoaXMuY2hpbGRyZW4pICYmIHRoaXMuY2hpbGRyZW4ubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0Q29sdW1ucygpLmNhdGNoKGZ1bmN0aW9uICgpIHsgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IH0pLFxuICAgIGJlZm9yZUNyZWF0ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICB0aGlzLmNoaWxkcmVuID0gW107XG4gICAgfSxcbiAgICBtZXRob2RzOiB7XG4gICAgICAgIG5vb3A6IGZ1bmN0aW9uICgpIHsgfSxcbiAgICAgICAgc2V0Q29sdW1uczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF90aGlzID0gdGhpcztcbiAgICAgICAgICAgIHZhciBkYXRhID0gdGhpcy5kYXRhO1xuICAgICAgICAgICAgdmFyIGNvbHVtbnMgPSB0aGlzLnNpbXBsZSA/IFt7IHZhbHVlczogZGF0YS5jb2x1bW5zIH1dIDogZGF0YS5jb2x1bW5zO1xuICAgICAgICAgICAgdmFyIHN0YWNrID0gY29sdW1ucy5tYXAoZnVuY3Rpb24gKGNvbHVtbiwgaW5kZXgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuc2V0Q29sdW1uVmFsdWVzKGluZGV4LCBjb2x1bW4udmFsdWVzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKHN0YWNrKTtcbiAgICAgICAgfSxcbiAgICAgICAgZW1pdDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgdHlwZSA9IGV2ZW50LmN1cnJlbnRUYXJnZXQuZGF0YXNldC50eXBlO1xuICAgICAgICAgICAgaWYgKHRoaXMuc2ltcGxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCh0eXBlLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmdldENvbHVtblZhbHVlKDApLFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5nZXRDb2x1bW5JbmRleCgwKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCh0eXBlLCB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmdldFZhbHVlcygpLFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5nZXRJbmRleGVzKClcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICAgICAgaWYgKHRoaXMuc2ltcGxlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywge1xuICAgICAgICAgICAgICAgICAgICBwaWNrZXI6IHRoaXMsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmdldENvbHVtblZhbHVlKDApLFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogdGhpcy5nZXRDb2x1bW5JbmRleCgwKVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy4kZW1pdCgnY2hhbmdlJywge1xuICAgICAgICAgICAgICAgICAgICBwaWNrZXI6IHRoaXMsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB0aGlzLmdldFZhbHVlcygpLFxuICAgICAgICAgICAgICAgICAgICBpbmRleDogZXZlbnQuY3VycmVudFRhcmdldC5kYXRhc2V0LmluZGV4XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIC8vIGdldCBjb2x1bW4gaW5zdGFuY2UgYnkgaW5kZXhcbiAgICAgICAgZ2V0Q29sdW1uOiBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuW2luZGV4XTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gZ2V0IGNvbHVtbiB2YWx1ZSBieSBpbmRleFxuICAgICAgICBnZXRDb2x1bW5WYWx1ZTogZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgICAgICAgICB2YXIgY29sdW1uID0gdGhpcy5nZXRDb2x1bW4oaW5kZXgpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbiAmJiBjb2x1bW4uZ2V0VmFsdWUoKTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gc2V0IGNvbHVtbiB2YWx1ZSBieSBpbmRleFxuICAgICAgICBzZXRDb2x1bW5WYWx1ZTogZnVuY3Rpb24gKGluZGV4LCB2YWx1ZSkge1xuICAgICAgICAgICAgdmFyIGNvbHVtbiA9IHRoaXMuZ2V0Q29sdW1uKGluZGV4KTtcbiAgICAgICAgICAgIGlmIChjb2x1bW4gPT0gbnVsbCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ3NldENvbHVtblZhbHVlOiDlr7nlupTliJfkuI3lrZjlnKgnKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gY29sdW1uLnNldFZhbHVlKHZhbHVlKTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gZ2V0IGNvbHVtbiBvcHRpb24gaW5kZXggYnkgY29sdW1uIGluZGV4XG4gICAgICAgIGdldENvbHVtbkluZGV4OiBmdW5jdGlvbiAoY29sdW1uSW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5nZXRDb2x1bW4oY29sdW1uSW5kZXgpIHx8IHt9KS5kYXRhLmN1cnJlbnRJbmRleDtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gc2V0IGNvbHVtbiBvcHRpb24gaW5kZXggYnkgY29sdW1uIGluZGV4XG4gICAgICAgIHNldENvbHVtbkluZGV4OiBmdW5jdGlvbiAoY29sdW1uSW5kZXgsIG9wdGlvbkluZGV4KSB7XG4gICAgICAgICAgICB2YXIgY29sdW1uID0gdGhpcy5nZXRDb2x1bW4oY29sdW1uSW5kZXgpO1xuICAgICAgICAgICAgaWYgKGNvbHVtbiA9PSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignc2V0Q29sdW1uSW5kZXg6IOWvueW6lOWIl+S4jeWtmOWcqCcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBjb2x1bW4uc2V0SW5kZXgob3B0aW9uSW5kZXgpO1xuICAgICAgICB9LFxuICAgICAgICAvLyBnZXQgb3B0aW9ucyBvZiBjb2x1bW4gYnkgaW5kZXhcbiAgICAgICAgZ2V0Q29sdW1uVmFsdWVzOiBmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAgICAgICAgIHJldHVybiAodGhpcy5jaGlsZHJlbltpbmRleF0gfHwge30pLmRhdGEub3B0aW9ucztcbiAgICAgICAgfSxcbiAgICAgICAgLy8gc2V0IG9wdGlvbnMgb2YgY29sdW1uIGJ5IGluZGV4XG4gICAgICAgIHNldENvbHVtblZhbHVlczogZnVuY3Rpb24gKGluZGV4LCBvcHRpb25zLCBuZWVkUmVzZXQpIHtcbiAgICAgICAgICAgIGlmIChuZWVkUmVzZXQgPT09IHZvaWQgMCkgeyBuZWVkUmVzZXQgPSB0cnVlOyB9XG4gICAgICAgICAgICB2YXIgY29sdW1uID0gdGhpcy5jaGlsZHJlbltpbmRleF07XG4gICAgICAgICAgICBpZiAoY29sdW1uID09IG51bGwpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdzZXRDb2x1bW5WYWx1ZXM6IOWvueW6lOWIl+S4jeWtmOWcqCcpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBpc1NhbWUgPSBKU09OLnN0cmluZ2lmeShjb2x1bW4uZGF0YS5vcHRpb25zKSA9PT0gSlNPTi5zdHJpbmdpZnkob3B0aW9ucyk7XG4gICAgICAgICAgICBpZiAoaXNTYW1lKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGNvbHVtbi5zZXQoeyBvcHRpb25zOiBvcHRpb25zIH0pLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmIChuZWVkUmVzZXQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29sdW1uLnNldEluZGV4KDApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LFxuICAgICAgICAvLyBnZXQgdmFsdWVzIG9mIGFsbCBjb2x1bW5zXG4gICAgICAgIGdldFZhbHVlczogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChjaGlsZCkgeyByZXR1cm4gY2hpbGQuZ2V0VmFsdWUoKTsgfSk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIHNldCB2YWx1ZXMgb2YgYWxsIGNvbHVtbnNcbiAgICAgICAgc2V0VmFsdWVzOiBmdW5jdGlvbiAodmFsdWVzKSB7XG4gICAgICAgICAgICB2YXIgX3RoaXMgPSB0aGlzO1xuICAgICAgICAgICAgdmFyIHN0YWNrID0gdmFsdWVzLm1hcChmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnNldENvbHVtblZhbHVlKGluZGV4LCB2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChzdGFjayk7XG4gICAgICAgIH0sXG4gICAgICAgIC8vIGdldCBpbmRleGVzIG9mIGFsbCBjb2x1bW5zXG4gICAgICAgIGdldEluZGV4ZXM6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmNoaWxkcmVuLm1hcChmdW5jdGlvbiAoY2hpbGQpIHsgcmV0dXJuIGNoaWxkLmRhdGEuY3VycmVudEluZGV4OyB9KTtcbiAgICAgICAgfSxcbiAgICAgICAgLy8gc2V0IGluZGV4ZXMgb2YgYWxsIGNvbHVtbnNcbiAgICAgICAgc2V0SW5kZXhlczogZnVuY3Rpb24gKGluZGV4ZXMpIHtcbiAgICAgICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgICAgICB2YXIgc3RhY2sgPSBpbmRleGVzLm1hcChmdW5jdGlvbiAob3B0aW9uSW5kZXgsIGNvbHVtbkluZGV4KSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF90aGlzLnNldENvbHVtbkluZGV4KGNvbHVtbkluZGV4LCBvcHRpb25JbmRleCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChzdGFjayk7XG4gICAgICAgIH1cbiAgICB9XG59KTtcbiJdLCJmaWxlIjoiaW5kZXguanMifQ==