UNPKG

@angular-extensions/model

Version:

Angular Model - Simple state management with minimalistic API, one way data flow, multiple model support and immutable data exposed as RxJS Observable.

2 lines 2.13 kB
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("rxjs"),require("rxjs/operators")):"function"==typeof define&&define.amd?define("@angular-extensions/model",["exports","@angular/core","rxjs","rxjs/operators"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self)["angular-extensions"]=e["angular-extensions"]||{},e["angular-extensions"].model={}),e.ng.core,e.rxjs,e.rxjs.operators)}(this,(function(e,t,r,n){"use strict";function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(r){if("default"!==r){var n=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,n.get?n:{enumerable:!0,get:function(){return e[r]}})}})),t.default=e,Object.freeze(t)}var i=o(t),a=function(){function e(e,t,o,i){var a=this;this.immutable=t,this.clone=i,this._data=new r.BehaviorSubject(e),this.data$=this._data.asObservable().pipe(n.map((function(e){return a.immutable?i?i(e):JSON.parse(JSON.stringify(e)):e})),o?n.shareReplay({bufferSize:1,refCount:!0}):n.map((function(e){return e})))}return e.prototype.get=function(){var e=this._data.getValue();return this.immutable?this.clone?this.clone(e):JSON.parse(JSON.stringify(e)):e},e.prototype.set=function(e){if(this.immutable){var t=this.clone?this.clone(e):JSON.parse(JSON.stringify(e));this._data.next(t)}else this._data.next(e)},e}(),u=function(){function e(){}return e.prototype.create=function(e){return new a(e,!0,!1)},e.prototype.createMutable=function(e){return new a(e,!1,!1)},e.prototype.createMutableWithSharedSubscription=function(e){return new a(e,!1,!0)},e.prototype.createWithCustomClone=function(e,t){return new a(e,!0,!1,t)},e.prototype.createWithConfig=function(e){var t=e.initialData,r=e.immutable,n=e.sharedSubscription,o=e.clone;return new a(t,r,n,o)},e}();u.ɵprov=i.ɵɵdefineInjectable({factory:function(){return new u},token:u,providedIn:"root"}),u.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}],e.Model=a,e.ModelFactory=u,Object.defineProperty(e,"__esModule",{value:!0})})); //# sourceMappingURL=angular-extensions-model.umd.min.js.map