define([ 'js/system/events' ], function ( events ) { return { type: 'stash', active: false, items: null, init: function () { events.emit('onGetStashItems', this.items); }, extend: function (blueprint) { if (blueprint.has('active')) this.active = blueprint.active; if (blueprint.getItems) { let items = this.items; let newItems = blueprint.getItems || []; let nLen = newItems.length; for (let i = 0; i < nLen; i++) { let nItem = newItems[i]; let nId = nItem.id; let findItem = items.find(f => f.id === nId); if (findItem) { $.extend(true, findItem, nItem); newItems.splice(i, 1); i--; nLen--; } } this.items.push.apply(this.items, blueprint.getItems || []); events.emit('onGetStashItems', this.items); } if (blueprint.destroyItems) events.emit('onDestroyStashItems', blueprint.destroyItems); } }; });