1e484b35bSopenharmony_ci/* eslint-disable */ 2e484b35bSopenharmony_ci 3e484b35bSopenharmony_ciimport { 4e484b35bSopenharmony_ci Log, 5e484b35bSopenharmony_ci hasOwn 6e484b35bSopenharmony_ci} from '../../utils/index.ts'; 7e484b35bSopenharmony_ciimport * as _ from '../../utils/index.ts'; 8e484b35bSopenharmony_ci 9e484b35bSopenharmony_civar objProto = Object.prototype; 10e484b35bSopenharmony_ci 11e484b35bSopenharmony_ci/** 12e484b35bSopenharmony_ci * Add a new property to an observed object and emits corresponding event. 13e484b35bSopenharmony_ci * @param {String} key 14e484b35bSopenharmony_ci * @param {*} val 15e484b35bSopenharmony_ci * @public 16e484b35bSopenharmony_ci */ 17e484b35bSopenharmony_ci_.define( 18e484b35bSopenharmony_ci objProto, 19e484b35bSopenharmony_ci '$add', 20e484b35bSopenharmony_ci function $add (key, val) { 21e484b35bSopenharmony_ci Log.warn(`'Object.prototype.$add' is not a standard API,` 22e484b35bSopenharmony_ci + ` it will be removed in the next version.`); 23e484b35bSopenharmony_ci if (hasOwn(this, key)) { 24e484b35bSopenharmony_ci return; 25e484b35bSopenharmony_ci } 26e484b35bSopenharmony_ci var ob = this.__ob__; 27e484b35bSopenharmony_ci if (!ob || _.isReserved(key)) { 28e484b35bSopenharmony_ci this[key] = val; 29e484b35bSopenharmony_ci return; 30e484b35bSopenharmony_ci } 31e484b35bSopenharmony_ci ob.convert(key, val); 32e484b35bSopenharmony_ci ob.notify(); 33e484b35bSopenharmony_ci if (ob.vms) { 34e484b35bSopenharmony_ci var i = ob.vms.length; 35e484b35bSopenharmony_ci while (i--) { 36e484b35bSopenharmony_ci var vm = ob.vms[i]; 37e484b35bSopenharmony_ci vm._proxy(key); 38e484b35bSopenharmony_ci // vm._digest() // todo 39e484b35bSopenharmony_ci } 40e484b35bSopenharmony_ci } 41e484b35bSopenharmony_ci } 42e484b35bSopenharmony_ci) 43e484b35bSopenharmony_ci 44e484b35bSopenharmony_ci/** 45e484b35bSopenharmony_ci * Set a property on an observed object, calling add to ensure the property is observed. 46e484b35bSopenharmony_ci * @param {String} key 47e484b35bSopenharmony_ci * @param {*} val 48e484b35bSopenharmony_ci * @public 49e484b35bSopenharmony_ci */ 50e484b35bSopenharmony_ci_.define( 51e484b35bSopenharmony_ci objProto, 52e484b35bSopenharmony_ci '$set', 53e484b35bSopenharmony_ci function $set (key, val) { 54e484b35bSopenharmony_ci Log.warn(`"Object.prototype.$set" is not a standard API,` 55e484b35bSopenharmony_ci + ` it will be removed in the next version.`); 56e484b35bSopenharmony_ci this.$add(key, val); 57e484b35bSopenharmony_ci this[key] = val; 58e484b35bSopenharmony_ci } 59e484b35bSopenharmony_ci) 60e484b35bSopenharmony_ci 61e484b35bSopenharmony_ci/** 62e484b35bSopenharmony_ci * Deletes a property from an observed object and emits corresponding event. 63e484b35bSopenharmony_ci * @param {String} key 64e484b35bSopenharmony_ci * @public 65e484b35bSopenharmony_ci */ 66e484b35bSopenharmony_ci_.define( 67e484b35bSopenharmony_ci objProto, 68e484b35bSopenharmony_ci '$delete', 69e484b35bSopenharmony_ci function $delete (key) { 70e484b35bSopenharmony_ci Log.warn(`"Object.prototype.$delete" is not a standard API,` 71e484b35bSopenharmony_ci + ` it will be removed in the next version.`); 72e484b35bSopenharmony_ci if (!this.hasOwnProperty(key)) { 73e484b35bSopenharmony_ci return; 74e484b35bSopenharmony_ci } 75e484b35bSopenharmony_ci delete this[key]; 76e484b35bSopenharmony_ci var ob = this.__ob__; 77e484b35bSopenharmony_ci if (!ob || _.isReserved(key)) { 78e484b35bSopenharmony_ci return; 79e484b35bSopenharmony_ci } 80e484b35bSopenharmony_ci ob.notify(); 81e484b35bSopenharmony_ci if (ob.vms) { 82e484b35bSopenharmony_ci var i = ob.vms.length; 83e484b35bSopenharmony_ci while (i--) { 84e484b35bSopenharmony_ci var vm = ob.vms[i]; 85e484b35bSopenharmony_ci vm._unproxy(key); 86e484b35bSopenharmony_ci // vm._digest() // todo 87e484b35bSopenharmony_ci } 88e484b35bSopenharmony_ci } 89e484b35bSopenharmony_ci } 90e484b35bSopenharmony_ci) 91