@ngqp/core
Version:
2 lines • 33.9 kB
JavaScript
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@angular/core"),require("@angular/router"),require("rxjs"),require("rxjs/operators"),require("@angular/forms"),require("@angular/common")):"function"==typeof define&&define.amd?define("@ngqp/core",["exports","@angular/core","@angular/router","rxjs","rxjs/operators","@angular/forms","@angular/common"],t):t(((e="undefined"!=typeof globalThis?globalThis:e||self).ngqp=e.ngqp||{},e.ngqp.core={}),e.ng.core,e.ng.router,e.rxjs,e.rxjs.operators,e.ng.forms,e.ng.common)}(this,(function(e,t,r,n,i,o,a){"use strict";var u=function(e,t){return e==t},s=function(){};function c(e){return null==e}function p(e){return void 0===e?null:e}function l(e){return!c(e)}function h(e){return l(e)&&"function"==typeof e}function f(e,t){return function(){try{return e.apply(this,arguments)}catch(e){return console.error(t,e),null}}}function y(e,t,r){var n=r(e,t);return"boolean"==typeof n?n:0===n}function d(e,t){var n={};return t.filter((function(t){return e.keys.includes(t)})).forEach((function(t){return n[t]=e.getAll(t)})),r.convertToParamMap(n)}function m(e,t){if(!e&&!t)return!0;if(e&&!t||t&&!e)return!1;if(e.length!==t.length)return!1;var r=e.sort(),n=t.sort();return r.every((function(e,t){return e===n[t]}))}function g(e){return n.isObservable(e)?e:n.of(e)}function v(e){return void 0===e&&(e=null),function(t){return c(t)?e:t}}function P(e){return void 0===e&&(e=null),function(t){return c(t)?e:t}}function b(e){return void 0===e&&(e=null),function(t){return c(t)?e:""+t}}function O(e){return void 0===e&&(e=null),function(t){return c(t)?e:parseFloat(t)}}function w(e){return void 0===e&&(e=null),function(t){return c(t)?e:""+t}}function C(e){return void 0===e&&(e=null),function(t){return c(t)?e:"true"===t||"1"===t}}var E=v(),q=P(),A=b(),R=O(),S=w(),V=C(),j=function(e,t){return(j=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)};function _(e,t){function r(){this.constructor=e}j(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}Object.create;function D(e){var t="function"==typeof Symbol&&Symbol.iterator,r=t&&e[t],n=0;if(r)return r.call(e);if(e&&"number"==typeof e.length)return{next:function(){return e&&n>=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function T(e,t){var r="function"==typeof Symbol&&e[Symbol.iterator];if(!r)return e;var n,i,o=r.call(e),a=[];try{for(;(void 0===t||t-- >0)&&!(n=o.next()).done;)a.push(n.value)}catch(e){i={error:e}}finally{try{n&&!n.done&&(r=o.return)&&r.call(o)}finally{if(i)throw i.error}}return a}function I(){for(var e=[],t=0;t<arguments.length;t++)e=e.concat(T(arguments[t]));return e}Object.create;var G=function(){function e(){this.parent=null,this._valueChanges=new n.Subject,this.changeFunctions=[],this.valueChanges=this._valueChanges.asObservable()}return e.prototype._registerOnChange=function(e){this.changeFunctions.push(e)},e.prototype._clearChangeFunctions=function(){this.changeFunctions=[]},e.prototype._setParent=function(e){if(this.parent&&e)throw new Error("Parameter already belongs to a QueryParamGroup.");this.parent=e},e}(),N=function(e){function t(t,r){void 0===r&&(r={});var n=e.call(this)||this;n.value=null;var i=r.serialize,o=r.deserialize,a=r.debounceTime,u=r.compareWith,s=r.emptyOn,y=r.combineWith;if(c(t))throw new Error("Please provide a URL parameter name for each query parameter.");if(!h(i))throw new Error("serialize must be a function, but received "+i);if(!h(o))throw new Error("deserialize must be a function, but received "+o);if(void 0!==s&&!h(u))throw new Error("compareWith must be a function, but received "+u);if(l(y)&&!h(y))throw new Error("combineWith must be a function, but received "+y);return n.urlParam=t,n.serialize=f(i,"Error while serializing value for "+n.urlParam),n.deserialize=f(o,"Error while deserializing value for "+n.urlParam),n.debounceTime=p(a),n.emptyOn=s,n.compareWith=u,n.combineWith=y,n}return _(t,e),t.prototype.setValue=function(e,t){void 0===t&&(t={}),this.value=e,!1!==t.emitModelToViewChange&&this.changeFunctions.forEach((function(t){return t(e)})),!1!==t.emitEvent&&this._valueChanges.next(this.value),l(this.parent)&&!t.onlySelf&&this.parent._updateValue({emitEvent:t.emitEvent,emitModelToViewChange:!1})},t}(G),z=function(e){function t(t,r){var n=e.call(this,t,r)||this;return n.multi=!1,n}return _(t,e),t.prototype.serializeValue=function(e){return void 0!==this.emptyOn&&y(e,this.emptyOn,this.compareWith)?null:this.serialize(e)},t.prototype.deserializeValue=function(e){return void 0!==this.emptyOn&&null===e?n.of(this.emptyOn):g(this.deserialize(e)).pipe(i.first())},t}(N),Q=function(e){function t(t,r){var n=e.call(this,t,r)||this;n.multi=!0;var i=r.serializeAll,o=r.deserializeAll;if(void 0!==i){if(!h(i))throw new Error("serializeAll must be a function, but received "+i);n.serializeAll=f(i,"Error while serializing value for "+n.urlParam)}if(void 0!==o){if(!h(o))throw new Error("deserializeAll must be a function, but received "+o);n.deserializeAll=f(o,"Error while deserializing value for "+n.urlParam)}return n}return _(t,e),t.prototype.serializeValue=function(e){return void 0!==this.emptyOn&&y(e,this.emptyOn,this.compareWith)?null:void 0!==this.serializeAll?this.serializeAll(e):(e||[]).map(this.serialize.bind(this))},t.prototype.deserializeValue=function(e){var t=this;return void 0!==this.emptyOn&&0===(e||[]).length?n.of(this.emptyOn):void 0!==this.deserializeAll?g(this.deserializeAll(e)):e&&0!==e.length?n.forkJoin.apply(void 0,I(e.map((function(e){return g(t.deserialize(e)).pipe(i.first())})))):n.of([])},t}(N),x=function(e){function t(t,r){var n=e.call(this)||this;if(0===t.length)throw new Error("Partitioned parameters must contain at least one parameter.");if(!h(r.partition))throw new Error("partition must be a function, but received "+r.partition);if(!h(r.reduce))throw new Error("reduce must be a function, but received "+r.reduce);return n.queryParams=t,n.partition=r.partition,n.reduce=r.reduce,n}return _(t,e),Object.defineProperty(t.prototype,"value",{get:function(){return this.reduce(this.queryParams.map((function(e){return e.value})))},enumerable:!1,configurable:!0}),t.prototype.setValue=function(e,t){var r=this;void 0===t&&(t={});var n=this.partition(e);this.queryParams.forEach((function(e,r){return e.setValue(n[r],{emitEvent:t.emitEvent,onlySelf:!0,emitModelToViewChange:!1})})),!1!==t.emitModelToViewChange&&this.changeFunctions.forEach((function(e){return e(r.value)})),!1!==t.emitEvent&&this._valueChanges.next(this.value)},t}(G),M=function(){function e(e,t){var r=this;void 0===t&&(t={}),this._valueChanges=new n.Subject,this.valueChanges=this._valueChanges.asObservable(),this._queryParamAdded$=new n.Subject,this.queryParamAdded$=this._queryParamAdded$.asObservable(),this.changeFunctions=[],this.queryParams=e,this.routerOptions=t,this.options=t,Object.values(this.queryParams).forEach((function(e){return e._setParent(r)}))}return e.prototype._registerOnChange=function(e){this.changeFunctions.push(e)},e.prototype._clearChangeFunctions=function(){this.changeFunctions=[]},e.prototype.get=function(e){var t=this.queryParams[e];return t||null},e.prototype.add=function(e,t){if(this.get(e))throw new Error("A parameter with name "+e+" already exists.");this.queryParams[e]=t,t._setParent(this),this._queryParamAdded$.next(e)},e.prototype.remove=function(e){var t=this.get(e);if(!t)throw new Error("No parameter with name "+e+" found.");delete this.queryParams[e],t._setParent(null),t._clearChangeFunctions()},Object.defineProperty(e.prototype,"value",{get:function(){var e=this,t={};return Object.keys(this.queryParams).forEach((function(r){return t[r]=e.queryParams[r].value})),t},enumerable:!1,configurable:!0}),e.prototype.patchValue=function(e,t){var r=this;void 0===t&&(t={}),Object.keys(e).forEach((function(n){var i=r.queryParams[n];c(i)||i.setValue(e[n],{emitEvent:t.emitEvent,onlySelf:!0,emitModelToViewChange:!1})})),this._updateValue(t)},e.prototype.setValue=function(e,t){var r=this;void 0===t&&(t={}),Object.keys(this.queryParams).forEach((function(n){r.queryParams[n].setValue(p(null==e?void 0:e[n]),{emitEvent:t.emitEvent,onlySelf:!0,emitModelToViewChange:!1})})),this._updateValue(t)},e.prototype._updateValue=function(e){var t=this;void 0===e&&(e={}),!1!==e.emitModelToViewChange&&this.changeFunctions.forEach((function(e){return e(t.value)})),!1!==e.emitEvent&&this._valueChanges.next(this.value)},e}();function L(e){return!0===e.multi}var k=function(){function e(){}return e.prototype.group=function(e,t){return void 0===t&&(t={}),new M(e,t)},e.prototype.partition=function(e,t){return new x(e,t)},e.prototype.stringParam=function(e,t){return void 0===t&&(t={}),L(t=Object.assign({serialize:E,deserialize:q,compareWith:u},t))?new Q(e,t):new z(e,t)},e.prototype.numberParam=function(e,t){return void 0===t&&(t={}),L(t=Object.assign({serialize:A,deserialize:R,compareWith:u},t))?new Q(e,t):new z(e,t)},e.prototype.booleanParam=function(e,t){return void 0===t&&(t={}),L(t=Object.assign({serialize:S,deserialize:V,compareWith:u},t))?new Q(e,t):new z(e,t)},e.prototype.param=function(e,t){return void 0===t&&(t={}),L(t=Object.assign({compareWith:u},t))?new Q(e,t):new z(e,t)},e}();k.ɵprov=t.ɵɵdefineInjectable({factory:function(){return new k},token:k,providedIn:"root"}),k.decorators=[{type:t.Injectable,args:[{providedIn:"root"}]}];var $={replaceUrl:!0,preserveFragment:!0},F=new t.InjectionToken("NGQP_ROUTER_ADAPTER"),U=new t.InjectionToken("NGQP_ROUTER_OPTIONS");var H=function(e,t){void 0===t&&(t=!1),this.params=e,this.synthetic=t},W=function(){function e(e,t){this.routerAdapter=e,this.globalRouterOptions=t,this.queryParamGroup=null,this.directives=new Map,this.queue$=new n.Subject,this.synchronizeRouter$=new n.Subject,this.destroy$=new n.Subject,this.setupNavigationQueue()}return e.prototype.ngOnDestroy=function(){var e,t,r,n=this;if(this.destroy$.next(),this.destroy$.complete(),this.synchronizeRouter$.complete(),null===(e=this.queryParamGroup)||void 0===e||e._clearChangeFunctions(),null===(r=null===(t=this.queryParamGroup)||void 0===t?void 0:t.options)||void 0===r?void 0:r.clearOnDestroy){var i=Object.values(this.queryParamGroup.queryParams).map((function(e){return n.wrapIntoPartition(e)})).map((function(e){return e.queryParams.map((function(e){return e.urlParam}))})).reduce((function(e,t){return I(e,t)}),[]).map((function(e){var t;return(t={})[e]=null,t})).reduce((function(e,t){return Object.assign(Object.assign({},e),t)}),{});this.routerAdapter.navigate(i,{replaceUrl:!0}).then()}},e.prototype.setQueryParamGroup=function(e){if(this.queryParamGroup)throw new Error("A QueryParamGroup has already been setup. Changing the group is currently not supported.");this.queryParamGroup=e,this.startSynchronization()},e.prototype.registerQueryParamDirective=function(e){var t=this;if(!e.valueAccessor)throw new Error("No value accessor found for the form control. Please make sure to implement ControlValueAccessor on this component.");var r=e.name,o=this.getQueryParamAsPartition(r);e.valueAccessor.writeValue(o.value);var a=o.queryParams.map((function(){return new n.Subject}));n.zip.apply(void 0,I(a.map((function(e,t){var r=o.queryParams[t];return e.pipe(l(r.debounceTime)?i.debounceTime(r.debounceTime):i.tap())})))).pipe(i.filter((function(){return!!t.getQueryParamGroup().get(r)})),i.map((function(e){return t.getParamsForValue(o,o.reduce(e))})),i.takeUntil(this.destroy$)).subscribe((function(e){return t.enqueueNavigation(new H(e))})),e.valueAccessor.registerOnChange((function(e){var t=o.partition(e);a.forEach((function(e,r){return e.next(t[r])}))})),this.directives.set(r,I(this.directives.get(r)||[],[e]))},e.prototype.deregisterQueryParamDirective=function(e){if(e){var t=this.directives.get(e);if(t){t.forEach((function(e){e.valueAccessor.registerOnChange(s),e.valueAccessor.registerOnTouched(s)})),this.directives.delete(e);var r=this.getQueryParamGroup().get(e);r&&r._clearChangeFunctions()}}},e.prototype.startSynchronization=function(){this.setupGroupChangeListener(),this.setupParamChangeListeners(),this.setupRouterListener(),this.watchNewParams()},e.prototype.setupGroupChangeListener=function(){var e=this;this.getQueryParamGroup()._registerOnChange((function(t){if(null===t)throw new Error("Received null value from QueryParamGroup.");var r={};Object.keys(t).forEach((function(n){var i=e.getQueryParamGroup().get(n);c(i)||(r=Object.assign(Object.assign({},r),e.getParamsForValue(i,t[n])))})),e.enqueueNavigation(new H(r,!0))}))},e.prototype.setupParamChangeListeners=function(){var e=this;Object.keys(this.getQueryParamGroup().queryParams).forEach((function(t){return e.setupParamChangeListener(t)}))},e.prototype.setupParamChangeListener=function(e){var t=this,r=this.getQueryParamGroup().get(e);if(!r)throw new Error("No param in group found for name "+e);r._registerOnChange((function(e){return t.enqueueNavigation(new H(t.getParamsForValue(r,e),!0))}))},e.prototype.setupRouterListener=function(){var e=this;this.synchronizeRouter$.pipe(i.startWith(void 0),i.switchMap((function(){return e.routerAdapter.queryParamMap.pipe(i.distinctUntilChanged((function(t,r){var n,i,o=Object.values(e.getQueryParamGroup().queryParams).map((function(t){return e.wrapIntoPartition(t)})).map((function(e){return e.queryParams.map((function(e){return e.urlParam}))})).reduce((function(e,t){return I(e,t)}),[]);return n=d(t,o),i=d(r,o),!(n&&!i||i&&!n)&&!!m(n.keys,i.keys)&&n.keys.every((function(e){return m(n.getAll(e),i.getAll(e))}))})))})),i.switchMap((function(t){var r=e.isSyntheticNavigation(),o=Object.keys(e.getQueryParamGroup().queryParams);return n.forkJoin.apply(void 0,I(o.map((function(r){var o=e.getQueryParamAsPartition(r);return n.forkJoin.apply(void 0,I(o.queryParams.map((function(e){return function(e){return e.multi}(e)?e.deserializeValue(t.getAll(e.urlParam)):e.deserializeValue(t.get(e.urlParam))})))).pipe(i.map((function(e){return o.reduce(e)})),i.tap((function(t){var n=e.directives.get(r);n&&n.forEach((function(e){return e.valueAccessor.writeValue(t)}))})),i.map((function(e){var t;return(t={})[r]=e,t})),i.takeUntil(e.destroy$))})))).pipe(i.map((function(e){return e.reduce((function(e,t){return Object.assign(Object.assign({},e),t)}),{})})),i.tap((function(t){return e.getQueryParamGroup().setValue(t,{emitEvent:!r,emitModelToViewChange:!1})})))})),i.takeUntil(this.destroy$)).subscribe()},e.prototype.watchNewParams=function(){var e=this;this.getQueryParamGroup().queryParamAdded$.pipe(i.takeUntil(this.destroy$)).subscribe((function(t){e.setupParamChangeListener(t),e.synchronizeRouter$.next()}))},e.prototype.isSyntheticNavigation=function(){var e=this.routerAdapter.getCurrentNavigation();return!(!e||"imperative"!==e.trigger)&&(e.extras&&e.extras.state&&e.extras.state.synthetic)},e.prototype.setupNavigationQueue=function(){var e=this;this.queue$.pipe(i.takeUntil(this.destroy$),i.concatMap((function(t){return e.navigateSafely(t)}))).subscribe()},e.prototype.navigateSafely=function(e){return n.from(this.routerAdapter.navigate(e.params,Object.assign(Object.assign({},this.routerOptions),{state:{synthetic:e.synthetic}}))).pipe(i.catchError((function(e){return t.isDevMode()&&console.error("There was an error while navigating",e),n.EMPTY})))},e.prototype.enqueueNavigation=function(e){this.queue$.next(e)},e.prototype.getParamsForValue=function(e,t){var r=this.wrapIntoPartition(e),n=r.partition(t),i=r.queryParams.map((function(e,t){return c(e.combineWith)?null:e.combineWith(n[t])})).reduce((function(e,t){return Object.assign(Object.assign({},e||{}),t||{})}),{}),o=r.queryParams.map((function(e,t){var r;return(r={})[e.urlParam]=e.serializeValue(n[t]),r})).reduce((function(e,t){return Object.assign(Object.assign({},e),t)}),{});return Object.assign(Object.assign({},i),o)},Object.defineProperty(e.prototype,"routerOptions",{get:function(){var e=this.getQueryParamGroup().routerOptions;return Object.assign(Object.assign({},this.globalRouterOptions||{}),e||{})},enumerable:!1,configurable:!0}),e.prototype.getQueryParamAsPartition=function(e){var t=this.getQueryParamGroup().get(e);if(!t)throw new Error("Could not find query param with name "+e+". Did you forget to add it to your QueryParamGroup?");return this.wrapIntoPartition(t)},e.prototype.wrapIntoPartition=function(e){return e instanceof x?e:new x([e],{partition:function(e){return[e]},reduce:function(e){return e[0]}})},e.prototype.getQueryParamGroup=function(){if(!this.queryParamGroup)throw new Error("No QueryParamGroup has been registered yet.");return this.queryParamGroup},e}();W.decorators=[{type:t.Injectable}],W.ctorParameters=function(){return[{type:void 0,decorators:[{type:t.Inject,args:[F]}]},{type:void 0,decorators:[{type:t.Optional},{type:t.Inject,args:[U]}]}]};var B={provide:o.NG_VALUE_ACCESSOR,useExisting:t.forwardRef((function(){return J})),multi:!0};var J=function(){function e(e,t,r){var n;this.platformId=e,this.renderer=t,this.elementRef=r,this.composing=!1,this.fnChange=function(e){},this.fnTouched=function(){},this.supportsComposition=a.isPlatformBrowser(this.platformId||"")&&(n=window.navigator,!/android (\d+)/.test(n.userAgent.toLowerCase()))}return e.prototype.onInput=function(e){this.supportsComposition&&this.composing||this.fnChange(e.target.value)},e.prototype.onBlur=function(){this.fnTouched()},e.prototype.onCompositionStart=function(){this.composing=!0},e.prototype.onCompositionEnd=function(e){this.composing=!1,this.supportsComposition&&this.fnChange(e.target.value)},e.prototype.writeValue=function(e){var t=null===e?"":e;this.renderer.setProperty(this.elementRef.nativeElement,"value",t)},e.prototype.registerOnChange=function(e){this.fnChange=e},e.prototype.registerOnTouched=function(e){this.fnTouched=e},e.prototype.setDisabledState=function(e){this.renderer.setProperty(this.elementRef.nativeElement,"disabled",e)},e}();J.decorators=[{type:t.Directive,args:[{selector:"input:not([type=checkbox]):not([type=radio])[queryParamName],textarea[queryParamName],input:not([type=checkbox]):not([type=radio])[queryParam],textarea[queryParam]",providers:[B]}]}],J.ctorParameters=function(){return[{type:String,decorators:[{type:t.Optional},{type:t.Inject,args:[t.PLATFORM_ID]}]},{type:t.Renderer2},{type:t.ElementRef}]},J.propDecorators={onInput:[{type:t.HostListener,args:["input",["$event"]]}],onBlur:[{type:t.HostListener,args:["blur"]}],onCompositionStart:[{type:t.HostListener,args:["compositionstart"]}],onCompositionEnd:[{type:t.HostListener,args:["compositionend",["$event"]]}]};var Y={provide:o.NG_VALUE_ACCESSOR,useExisting:t.forwardRef((function(){return K})),multi:!0},K=function(){function e(e,t){this.renderer=e,this.elementRef=t,this.fnChange=function(e){},this.fnTouched=function(){}}return e.prototype.onInput=function(e){var t=e.target.value;this.fnChange(""===t?null:parseFloat(t))},e.prototype.onBlur=function(){this.fnTouched()},e.prototype.writeValue=function(e){this.renderer.setProperty(this.elementRef.nativeElement,"value",parseFloat(e))},e.prototype.registerOnChange=function(e){this.fnChange=e},e.prototype.registerOnTouched=function(e){this.fnTouched=e},e.prototype.setDisabledState=function(e){this.renderer.setProperty(this.elementRef.nativeElement,"disabled",e)},e}();K.decorators=[{type:t.Directive,args:[{selector:"input[type=range][queryParamName],input[type=range][queryParam]",providers:[Y]}]}],K.ctorParameters=function(){return[{type:t.Renderer2},{type:t.ElementRef}]},K.propDecorators={onInput:[{type:t.HostListener,args:["input",["$event"]]}],onBlur:[{type:t.HostListener,args:["blur"]}]};var X={provide:o.NG_VALUE_ACCESSOR,useExisting:t.forwardRef((function(){return Z})),multi:!0},Z=function(){function e(e,t){this.renderer=e,this.elementRef=t,this.fnChange=function(e){},this.fnTouched=function(){}}return e.prototype.onInput=function(e){var t=e.target.value;this.fnChange(""===t?null:parseFloat(t))},e.prototype.onBlur=function(){this.fnTouched()},e.prototype.writeValue=function(e){var t=null===e?"":e;this.renderer.setProperty(this.elementRef.nativeElement,"value",t)},e.prototype.registerOnChange=function(e){this.fnChange=e},e.prototype.registerOnTouched=function(e){this.fnTouched=e},e.prototype.setDisabledState=function(e){this.renderer.setProperty(this.elementRef.nativeElement,"disabled",e)},e}();Z.decorators=[{type:t.Directive,args:[{selector:"input[type=number][queryParamName],input[type=number][queryParam]",providers:[X]}]}],Z.ctorParameters=function(){return[{type:t.Renderer2},{type:t.ElementRef}]},Z.propDecorators={onInput:[{type:t.HostListener,args:["input",["$event"]]}],onBlur:[{type:t.HostListener,args:["blur"]}]};var ee={provide:o.NG_VALUE_ACCESSOR,useExisting:t.forwardRef((function(){return te})),multi:!0},te=function(){function e(e,t){this.renderer=e,this.elementRef=t,this.fnChange=function(e){},this.fnTouched=function(){}}return e.prototype.onInput=function(e){this.fnChange(e.target.checked)},e.prototype.onBlur=function(){this.fnTouched()},e.prototype.writeValue=function(e){this.renderer.setProperty(this.elementRef.nativeElement,"checked",e)},e.prototype.registerOnChange=function(e){this.fnChange=e},e.prototype.registerOnTouched=function(e){this.fnTouched=e},e.prototype.setDisabledState=function(e){this.renderer.setProperty(this.elementRef.nativeElement,"disabled",e)},e}();te.decorators=[{type:t.Directive,args:[{selector:"input[type=checkbox][queryParamName],input[type=checkbox][queryParam]",providers:[ee]}]}],te.ctorParameters=function(){return[{type:t.Renderer2},{type:t.ElementRef}]},te.propDecorators={onInput:[{type:t.HostListener,args:["change",["$event"]]}],onBlur:[{type:t.HostListener,args:["blur"]}]};var re={provide:o.NG_VALUE_ACCESSOR,useExisting:t.forwardRef((function(){return ne})),multi:!0},ne=function(){function e(e,t){this.renderer=e,this.elementRef=t,this.value=null,this.selectedId=null,this.optionMap=new Map,this.idCounter=0,this.fnChange=function(e){},this.fnTouched=function(){}}return e.prototype.onChange=function(e){this.selectedId=e.target.value,this.value=p(this.optionMap.get(this.selectedId)),this.fnChange(this.value)},e.prototype.onTouched=function(){this.fnTouched()},e.prototype.writeValue=function(e){this.value=e,this.selectedId=null===e?null:this.getOptionId(e),null===this.selectedId&&this.renderer.setProperty(this.elementRef.nativeElement,"selectedIndex",-1),this.renderer.setProperty(this.elementRef.nativeElement,"value",this.selectedId)},e.prototype.registerOnChange=function(e){this.fnChange=e},e.prototype.registerOnTouched=function(e){this.fnTouched=e},e.prototype.setDisabledState=function(e){this.renderer.setProperty(this.elementRef.nativeElement,"disabled",e)},e.prototype.registerOption=function(){return(this.idCounter++).toString()},e.prototype.deregisterOption=function(e){this.optionMap.delete(e)},e.prototype.updateOptionValue=function(e,t){this.optionMap.set(e,t),this.selectedId===e&&this.fnChange(t)},e.prototype.getOptionId=function(e){var t,r;try{for(var n=D(Array.from(this.optionMap.keys())),i=n.next();!i.done;i=n.next()){var o=i.value;if(this.optionMap.get(o)===e)return o}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return null},e}();ne.decorators=[{type:t.Directive,args:[{selector:"select:not([multiple])[queryParamName],select:not([multiple])[queryParam]",providers:[re]}]}],ne.ctorParameters=function(){return[{type:t.Renderer2},{type:t.ElementRef}]},ne.propDecorators={onChange:[{type:t.HostListener,args:["change",["$event"]]}],onTouched:[{type:t.HostListener,args:["blur"]}]};var ie={provide:o.NG_VALUE_ACCESSOR,useExisting:t.forwardRef((function(){return oe})),multi:!0},oe=function(){function e(e,t){this.renderer=e,this.elementRef=t,this.selectedIds=[],this.options=new Map,this.optionMap=new Map,this.idCounter=0,this.fnChange=function(e){},this.fnTouched=function(){}}return e.prototype.onChange=function(){var e=this;this.selectedIds=Array.from(this.options.entries()).filter((function(e){var t=T(e,2);t[0];return t[1].selected})).map((function(e){return T(e,1)[0]}));var t=this.selectedIds.map((function(t){return e.optionMap.get(t)}));this.fnChange(t)},e.prototype.onTouched=function(){this.fnTouched()},e.prototype.writeValue=function(e){var t=this;if(e=null===e?[]:e,!Array.isArray(e))throw new Error("Provided a non-array value to select[multiple]: "+e);this.selectedIds=e.map((function(e){return t.getOptionId(e)})).filter((function(e){return null!==e})),this.options.forEach((function(e,r){return e.selected=t.selectedIds.includes(r)}))},e.prototype.registerOnChange=function(e){this.fnChange=e},e.prototype.registerOnTouched=function(e){this.fnTouched=e},e.prototype.setDisabledState=function(e){this.renderer.setProperty(this.elementRef.nativeElement,"disabled",e)},e.prototype.registerOption=function(e){var t=(this.idCounter++).toString();return this.options.set(t,e),t},e.prototype.deregisterOption=function(e){this.optionMap.delete(e)},e.prototype.updateOptionValue=function(e,t){this.optionMap.set(e,t),this.selectedIds.includes(e)&&this.onChange()},e.prototype.getOptionId=function(e){var t,r;try{for(var n=D(Array.from(this.optionMap.keys())),i=n.next();!i.done;i=n.next()){var o=i.value;if(this.optionMap.get(o)===e)return o}}catch(e){t={error:e}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(t)throw t.error}}return null},e}();oe.decorators=[{type:t.Directive,args:[{selector:"select[multiple][queryParamName],select[multiple][queryParam]",providers:[ie]}]}],oe.ctorParameters=function(){return[{type:t.Renderer2},{type:t.ElementRef}]},oe.propDecorators={onChange:[{type:t.HostListener,args:["change"]}],onTouched:[{type:t.HostListener,args:["blur"]}]};var ae=[J,Z,K,te,ne,oe];function ue(e){if(!e||!Array.isArray(e))throw new Error("No matching ControlValueAccessor has been found for this form control");var t=null,r=null,n=null;if(e.forEach((function(e){if(e.constructor===J)t=e;else if(ae.some((function(t){return e.constructor===t}))){if(null!==r)throw new Error("More than one built-in ControlValueAccessor matches");r=e}else{if(null!==n)throw new Error("More than one custom ControlValueAccessor has been found on the form control");n=e}})),null!==n)return n;if(null!==r)return r;if(null!==t)return t;throw new Error("No matching ControlValueAccessor has been found for this form control")}var se=function(){function e(e,t){this.groupService=e,this.queryParam=null,this.name="param",this.group=new M({}),this.valueAccessor=ue(t),this.groupService.setQueryParamGroup(this.group)}return e.prototype.ngOnChanges=function(e){var t=e.queryParam;t&&(this.group.get(this.name)&&(this.groupService.deregisterQueryParamDirective(this.name),this.group.remove(this.name)),t.currentValue&&(this.group.add(this.name,t.currentValue),this.groupService.registerQueryParamDirective(this)))},e.prototype.ngOnDestroy=function(){this.groupService&&this.groupService.deregisterQueryParamDirective(this.name)},e}();se.decorators=[{type:t.Directive,args:[{selector:"[queryParam]",providers:[W]}]}],se.ctorParameters=function(){return[{type:W,decorators:[{type:t.Optional}]},{type:Array,decorators:[{type:t.Optional},{type:t.Self},{type:t.Inject,args:[o.NG_VALUE_ACCESSOR]}]}]},se.propDecorators={queryParam:[{type:t.Input,args:["queryParam"]}]};var ce=function(){function e(e,t){if(this.groupService=e,this._name=null,!this.groupService)throw new Error("No parent configuration found. Did you forget to add [queryParamGroup]?");this.valueAccessor=ue(t)}return Object.defineProperty(e.prototype,"name",{get:function(){if(!this._name)throw new Error("No queryParamName has been specified.");return this._name},set:function(e){this._name=e},enumerable:!1,configurable:!0}),e.prototype.ngOnChanges=function(e){var t=e.name;t&&(t.firstChange||this.groupService.deregisterQueryParamDirective(t.previousValue),t.currentValue&&this.groupService.registerQueryParamDirective(this))},e.prototype.ngOnDestroy=function(){this.groupService&&this.groupService.deregisterQueryParamDirective(this.name)},e}();ce.decorators=[{type:t.Directive,args:[{selector:"[queryParamName]"}]}],ce.ctorParameters=function(){return[{type:W,decorators:[{type:t.Optional}]},{type:Array,decorators:[{type:t.Optional},{type:t.Self},{type:t.Inject,args:[o.NG_VALUE_ACCESSOR]}]}]},ce.propDecorators={name:[{type:t.Input,args:["queryParamName"]}]};var pe=function(){function e(e){this.groupService=e,this.queryParamGroup=null}return e.prototype.ngOnChanges=function(e){var t=e.queryParamGroup;if(t){if(!t.firstChange)throw new Error("Binding a different QueryParamGroup during runtime is currently not supported.");var r=t.currentValue;if(!r)throw new Error("You added the queryParamGroup directive, but haven't supplied a group to use.");this.groupService.setQueryParamGroup(r)}},e}();pe.decorators=[{type:t.Directive,args:[{selector:"[queryParamGroup]",providers:[W]}]}],pe.ctorParameters=function(){return[{type:W}]},pe.propDecorators={queryParamGroup:[{type:t.Input,args:["queryParamGroup"]}]};var le=function(){function e(){this.controlValueChange=new t.EventEmitter,this.disabledChange=new t.EventEmitter,this.fnChange=function(e){},this.fnTouched=function(){}}return e.prototype.notifyChange=function(e){this.fnChange(e)},e.prototype.notifyTouched=function(){this.fnTouched()},e.prototype.writeValue=function(e){this.controlValueChange.emit(e)},e.prototype.registerOnChange=function(e){this.fnChange=e},e.prototype.registerOnTouched=function(e){this.fnTouched=e},e.prototype.setDisabledState=function(e){this.disabledChange.emit(e)},e}();le.decorators=[{type:t.Directive,args:[{selector:"[controlValueAccessor]",exportAs:"controlValueAccessor",providers:[{provide:o.NG_VALUE_ACCESSOR,useExisting:t.forwardRef((function(){return le})),multi:!0}]}]}],le.propDecorators={controlValueChange:[{type:t.Output,args:["controlValueChange"]}],disabledChange:[{type:t.Output,args:["disabledChange"]}]};var he=function(){function e(e,t,r){this.parent=e,this.renderer=t,this.elementRef=r,this.id=null,this.parent&&(this.id=this.parent.registerOption())}return e.prototype.ngOnInit=function(){this.parent&&this.renderer.setProperty(this.elementRef.nativeElement,"value",this.id)},e.prototype.ngOnDestroy=function(){this.parent&&(this.parent.deregisterOption(this.id),this.parent.writeValue(this.parent.value))},Object.defineProperty(e.prototype,"value",{set:function(e){this.parent&&(this.parent.updateOptionValue(this.id,e),this.parent.writeValue(this.parent.value))},enumerable:!1,configurable:!0}),e}();he.decorators=[{type:t.Directive,args:[{selector:"option"}]}],he.ctorParameters=function(){return[{type:ne,decorators:[{type:t.Optional},{type:t.Host}]},{type:t.Renderer2},{type:t.ElementRef}]},he.propDecorators={value:[{type:t.Input,args:["value"]}]};var fe=function(){function e(e,t,r){this.parent=e,this.renderer=t,this.elementRef=r,this.id=null,this.parent&&(this.id=this.parent.registerOption(this))}return e.prototype.ngOnInit=function(){this.parent&&this.renderer.setProperty(this.elementRef.nativeElement,"value",this.id)},e.prototype.ngOnDestroy=function(){this.parent&&this.parent.deregisterOption(this.id)},Object.defineProperty(e.prototype,"value",{set:function(e){this.parent&&this.parent.updateOptionValue(this.id,e)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selected",{get:function(){return this.elementRef.nativeElement.selected},set:function(e){this.parent&&this.renderer.setProperty(this.elementRef.nativeElement,"selected",e)},enumerable:!1,configurable:!0}),e}();fe.decorators=[{type:t.Directive,args:[{selector:"option"}]}],fe.ctorParameters=function(){return[{type:oe,decorators:[{type:t.Optional},{type:t.Host}]},{type:t.Renderer2},{type:t.ElementRef}]},fe.propDecorators={value:[{type:t.Input,args:["value"]}]};var ye=function(){function e(e,t){this.router=e,this.route=t}return Object.defineProperty(e.prototype,"url",{get:function(){return this.router.url},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"queryParamMap",{get:function(){return this.route.queryParamMap},enumerable:!1,configurable:!0}),e.prototype.navigate=function(e,t){return void 0===t&&(t={}),this.router.navigate([],Object.assign({relativeTo:this.route,queryParamsHandling:"merge",queryParams:e},t))},e.prototype.getCurrentNavigation=function(){return this.router.getCurrentNavigation()},e}();ye.decorators=[{type:t.Injectable}],ye.ctorParameters=function(){return[{type:r.Router},{type:r.ActivatedRoute}]};var de=[se,ce,pe,le,J,Z,K,te,ne,he,oe,fe],me=$,ge=function(){function e(){}return e.withConfig=function(t){return void 0===t&&(t={}),{ngModule:e,providers:[{provide:U,useValue:Object.assign(Object.assign({},$),t.routerOptions)}]}},e}();ge.decorators=[{type:t.NgModule,args:[{imports:[],declarations:[de],exports:[de],providers:[{provide:F,useClass:ye},{provide:U,useValue:me}]}]}],e.AbstractQueryParam=N,e.CheckboxControlValueAccessorDirective=te,e.ControlValueAccessorDirective=le,e.DefaultControlValueAccessorDirective=J,e.DefaultRouterAdapter=ye,e.DefaultRouterOptions=$,e.MultiQueryParam=Q,e.MultiSelectControlValueAccessorDirective=oe,e.MultiSelectOptionDirective=fe,e.NGQP_BUILT_IN_ACCESSORS=ae,e.NGQP_ROUTER_ADAPTER=F,e.NGQP_ROUTER_OPTIONS=U,e.NumberControlValueAccessorDirective=Z,e.PartitionedQueryParam=x,e.QueryParam=z,e.QueryParamBuilder=k,e.QueryParamDirective=se,e.QueryParamGroup=M,e.QueryParamGroupDirective=pe,e.QueryParamModule=ge,e.QueryParamNameDirective=ce,e.RangeControlValueAccessorDirective=K,e.SelectControlValueAccessorDirective=ne,e.SelectOptionDirective=he,e.createBooleanDeserializer=C,e.createBooleanSerializer=w,e.createNumberDeserializer=O,e.createNumberSerializer=b,e.createStringDeserializer=P,e.createStringSerializer=v,e.ɵc=W,Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=ngqp-core.umd.min.js.map