UNPKG

mobx-vue

Version:
41 lines (40 loc) 1.23 kB
"use strict"; /** * @author Kuitos * @homepage https://github.com/kuitos/ * @since 2018-06-08 10:16 */ Object.defineProperty(exports, "__esModule", { value: true }); var mobx_1 = require("mobx"); /** * collect the data which defined for vue * and filter the mobx data to avoid duplicated watching by vue * @param {Vue} vm * @param {DefaultData<Vue>} data * @returns {any} filtered data for vue definition */ function collectData(vm, data) { // @ts-expect-error var dataDefinition = typeof data === 'function' ? data.call(vm, vm) : (data || {}); var filteredData = Object.keys(dataDefinition).reduce(function (result, field) { var value = dataDefinition[field]; if (mobx_1.isObservable(value)) { Object.defineProperty(vm, field, { configurable: true, get: function () { return value; }, // @formatter:off // tslint:disable-next-line set: function () { } // @formatter:on }); } else { result[field] = value; } return result; }, {}); return filteredData; } exports.default = collectData;