UNPKG

warriorjs-engine

Version:
43 lines (35 loc) 1.19 kB
'use strict'; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = viewObject; function getViewObject(object) { return typeof object.toViewObject === 'function' ? object.toViewObject() : object; } function viewObject() { var viewObjectShape = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0]; return function (target) { Object.defineProperty(target.prototype, 'toViewObject', { value: function value() { var _this = this; var applyShape = function applyShape(shape) { var result = {}; Object.keys(shape).forEach(function (key) { if (typeof shape[key] === 'function') { var viewProperty = shape[key].call(_this); if (viewProperty) { result[key] = Array.isArray(viewProperty) ? viewProperty.map(getViewObject) : getViewObject(viewProperty); } else { result[key] = viewProperty; } } else { result[key] = applyShape(shape[key]); } }); return result; }; return applyShape(viewObjectShape); } }); }; }