UNPKG

@michielvdanker/plugin-change-flags

Version:

Vuex ORM plugin adding IsDirty / IsNew flags to model entities

1 lines 4.21 kB
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports["isdirty-isnew-vuexorm-plugin"]=t():e["isdirty-isnew-vuexorm-plugin"]=t()}(window,function(){return function(e){var t={};function r(n){if(t[n])return t[n].exports;var a=t[n]={i:n,l:!1,exports:{}};return e[n].call(a.exports,a,a.exports,r),a.l=!0,a.exports}return r.m=e,r.c=t,r.d=function(e,t,n){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)r.d(n,a,function(t){return e[t]}.bind(null,a));return n},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=0)}([function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e};function a(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}var i={isDirtyFlagName:"$isDirty",isNewFlagName:"$isNew",resetDirtyFlagName:"$resetDirty",exposeFlagsExternally:!0};t.default={install:function(e,t){var r=n({},i,t),o=e.Model,l=e.Query,u=e.RootGetters,c=e.Getters,s=e.RootMutations,f=e.RootActions,y=e.Actions;if(r.exposeFlagsExternally){var p,d=(a(p={},r.isDirtyFlagName,o.attr(!1)),a(p,r.isNewFlagName,o.attr(!1)),p),g=o.prototype.$fields;o.prototype.$fields=function(){var e=g.call(this);return Object.assign({},e,d)}}var m=o.prototype.$fill;o.prototype.$fill=function(e){m.call(this,e),this[r.isDirtyFlagName]=e&&e[r.isDirtyFlagName]||!1,this[r.isNewFlagName]=e&&e[r.isNewFlagName]||!1};var N=!1;l.on("beforeUpdate",function(e){N||(e[r.isDirtyFlagName]=!0)}),f.resetAllDirtyFlags=function(e){var t=e.rootGetters["entities/allDirty"]();N=!0,t.forEach(function(e){return e.$update(a({},r.isDirtyFlagName,!1))}),N=!1};var v=s.insertOrUpdate;s.insertOrUpdate=function(e,t){!0===t.data[r.resetDirtyFlagName]&&(t.data[r.isDirtyFlagName]=!1,t.preventDirtyFlag=!0),!0===t.preventDirtyFlag?(N=!0,v.call(this,e,t),N=!1):v.call(this,e,t)};var w=s.update;s.update=function(e,t){!0===t.data[r.resetDirtyFlagName]&&(t.data[r.isDirtyFlagName]=!1,t.preventDirtyFlag=!0),!0===t.preventDirtyFlag?(N=!0,w.call(this,e,t),N=!1):w.call(this,e,t)},u.allDirty=function(e){return function(t){if(t)return new l(e,t).where(function(e){return e[r.isDirtyFlagName]}).get();var n=[];return o.database().entities.forEach(function(t){var a=new l(e,t.name).where(function(e){return e[r.isDirtyFlagName]}).get();n=n.concat(a)}),n}},c.allDirty=function(e,t,r,n){return function(){return n[e.$connection+"/allDirty"](e.$name)}},u.allNew=function(e){return function(t){if(t)return new l(e,t).where(function(e){return e[r.isNewFlagName]}).get();var n=[];return o.database().entities.forEach(function(t){var a=new l(e,t.name).where(function(e){return e[r.isNewFlagName]}).get();n=n.concat(a)}),n}},c.allNew=function(e,t,r,n){return function(){return n[e.$connection+"/allNew"](e.$name)}},o.createNew=function(){if(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])return this.dispatch("createNew");var e=new this;return e[r.isNewFlagName]=!0,e[r.isDirtyFlagName]=!0,Promise.resolve(e)},s.createNew=function(e,t){var r=t.entity;t.result.data=new l(e,r).createNew()},y.createNew=function(e){var t=e.state,r=t.$name;return e.dispatch(t.$connection+"/createNew",{entity:r},{root:!0})},f.createNew=function(e,t){var r={data:{}};return e.commit("createNew",n({},t,{result:r})),r.data},l.prototype.createNew=function(){var e=(new this.model).$toJson();return e[r.isNewFlagName]=!0,e[r.isDirtyFlagName]=!0,this.insert(e,{})[this.entity][0]}}}}])});